You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/07/14 09:56:50 UTC
(shardingsphere) branch master updated: Add DatabaseType field to SQLStatementVisitor (#35986)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 f4391993d16 Add DatabaseType field to SQLStatementVisitor (#35986)
f4391993d16 is described below
commit f4391993d16548d51637d8e1e9b4d9d2d5e5603e
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Mon Jul 14 17:56:44 2025 +0800
Add DatabaseType field to SQLStatementVisitor (#35986)
* Add database type field to SQLStatementVisitor
* Add database type field to SQLStatementVisitor
* Add database type field to SQLStatementVisitor
* Add database type field to SQLStatementVisitor
---
.../statement/ClickHouseStatementVisitor.java | 5 +
.../type/ClickHouseDALStatementVisitor.java | 5 +
.../type/ClickHouseDCLStatementVisitor.java | 5 +
.../type/ClickHouseDDLStatementVisitor.java | 4 +
.../type/ClickHouseDMLStatementVisitor.java | 13 +-
.../type/ClickHouseTCLStatementVisitor.java | 5 +
.../visitor/statement/DorisStatementVisitor.java | 5 +-
.../statement/type/DorisDALStatementVisitor.java | 166 +++++++-------
.../statement/type/DorisDCLStatementVisitor.java | 33 +--
.../statement/type/DorisDDLStatementVisitor.java | 83 +++----
.../statement/type/DorisDMLStatementVisitor.java | 17 +-
.../statement/type/DorisLCLStatementVisitor.java | 9 +-
.../statement/type/DorisTCLStatementVisitor.java | 31 +--
.../statement/FirebirdStatementVisitor.java | 5 +
.../type/FirebirdDALStatementVisitor.java | 5 +
.../type/FirebirdDCLStatementVisitor.java | 13 +-
.../type/FirebirdDDLStatementVisitor.java | 35 +--
.../type/FirebirdDMLStatementVisitor.java | 15 +-
.../type/FirebirdTCLStatementVisitor.java | 13 +-
.../visitor/statement/HiveStatementVisitor.java | 6 +
.../statement/type/HiveDDLStatementVisitor.java | 9 +-
.../statement/type/HiveDMLStatementVisitor.java | 25 +-
.../visitor/statement/MySQLStatementVisitor.java | 5 +-
.../statement/type/MySQLDALStatementVisitor.java | 166 +++++++-------
.../statement/type/MySQLDCLStatementVisitor.java | 33 +--
.../statement/type/MySQLDDLStatementVisitor.java | 81 +++----
.../statement/type/MySQLDMLStatementVisitor.java | 17 +-
.../statement/type/MySQLLCLStatementVisitor.java | 9 +-
.../statement/type/MySQLTCLStatementVisitor.java | 31 +--
.../statement/OpenGaussStatementVisitor.java | 5 +-
.../type/OpenGaussDALStatementVisitor.java | 32 +--
.../type/OpenGaussDCLStatementVisitor.java | 21 +-
.../type/OpenGaussDDLStatementVisitor.java | 159 ++++++-------
.../type/OpenGaussDMLStatementVisitor.java | 11 +-
.../type/OpenGaussLCLStatementVisitor.java | 7 +-
.../type/OpenGaussTCLStatementVisitor.java | 31 +--
.../visitor/statement/OracleStatementVisitor.java | 13 +-
.../statement/type/OracleDALStatementVisitor.java | 15 +-
.../statement/type/OracleDCLStatementVisitor.java | 23 +-
.../statement/type/OracleDDLStatementVisitor.java | 255 +++++++++++----------
.../statement/type/OracleDMLStatementVisitor.java | 27 +--
.../statement/type/OracleLCLStatementVisitor.java | 9 +-
.../statement/type/OracleTCLStatementVisitor.java | 19 +-
.../statement/PostgreSQLStatementVisitor.java | 5 +-
.../type/PostgreSQLDALStatementVisitor.java | 32 +--
.../type/PostgreSQLDCLStatementVisitor.java | 25 +-
.../type/PostgreSQLDDLStatementVisitor.java | 237 +++++++++----------
.../type/PostgreSQLDMLStatementVisitor.java | 15 +-
.../type/PostgreSQLLCLStatementVisitor.java | 7 +-
.../type/PostgreSQLTCLStatementVisitor.java | 35 +--
.../visitor/statement/PrestoStatementVisitor.java | 5 +
.../statement/type/PrestoDDLStatementVisitor.java | 13 +-
.../statement/type/PrestoDMLStatementVisitor.java | 25 +-
.../visitor/statement/SQL92StatementVisitor.java | 5 +
.../statement/type/SQL92DALStatementVisitor.java | 5 +
.../statement/type/SQL92DCLStatementVisitor.java | 9 +-
.../statement/type/SQL92DDLStatementVisitor.java | 11 +-
.../statement/type/SQL92DMLStatementVisitor.java | 13 +-
.../statement/type/SQL92TCLStatementVisitor.java | 11 +-
.../statement/SQLServerStatementVisitor.java | 5 +-
.../type/SQLServerDALStatementVisitor.java | 7 +-
.../type/SQLServerDCLStatementVisitor.java | 33 +--
.../type/SQLServerDDLStatementVisitor.java | 67 +++---
.../type/SQLServerDMLStatementVisitor.java | 5 +
.../type/SQLServerTCLStatementVisitor.java | 23 +-
.../visitor/SQLStatementVisitorFactory.java | 16 +-
.../proxy/frontend/state/impl/OKProxyState.java | 3 +-
67 files changed, 1105 insertions(+), 983 deletions(-)
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/ClickHouseStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/ClickHouseStatementVisitor.java
index 374d342861b..d4d82a87bb7 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/ClickHouseStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/ClickHouseStatementVisitor.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.ClickHouseStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.ClickHouseStatementParser;
@@ -76,9 +78,12 @@ import java.util.stream.Collectors;
/**
* ClickHouse Statement visitor.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class ClickHouseStatementVisitor extends ClickHouseStatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDALStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDALStatementVisitor.java
index 4557b4b18f8..62bd593c887 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDALStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDALStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHo
* DAL statement visitor for ClickHouse.
*/
public final class ClickHouseDALStatementVisitor extends ClickHouseStatementVisitor implements DALStatementVisitor {
+
+ public ClickHouseDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDCLStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDCLStatementVisitor.java
index f018470c3af..763906538da 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDCLStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDCLStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHo
* DCL statement visitor for ClickHouse.
*/
public final class ClickHouseDCLStatementVisitor extends ClickHouseStatementVisitor implements DCLStatementVisitor {
+
+ public ClickHouseDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDDLStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDDLStatementVisitor.java
index 6da7397d831..d46c6024e7b 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDDLStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDDLStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitor;
@@ -25,4 +26,7 @@ import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHo
*/
public final class ClickHouseDDLStatementVisitor extends ClickHouseStatementVisitor implements DDLStatementVisitor {
+ public ClickHouseDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
index 5776d275ab9..557ff757e2d 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.ClickHouseStatementParser;
@@ -81,7 +80,9 @@ import java.util.stream.Collectors;
*/
public final class ClickHouseDMLStatementVisitor extends ClickHouseStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "ClickHouse");
+ public ClickHouseDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitInsert(final InsertContext ctx) {
@@ -94,7 +95,7 @@ public final class ClickHouseDMLStatementVisitor extends ClickHouseStatementVisi
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
@@ -116,7 +117,7 @@ public final class ClickHouseDMLStatementVisitor extends ClickHouseStatementVisi
@Override
public ASTNode visitUpdate(final ClickHouseStatementParser.UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.tableReferences()));
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
@@ -166,7 +167,7 @@ public final class ClickHouseDMLStatementVisitor extends ClickHouseStatementVisi
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
@@ -200,7 +201,7 @@ public final class ClickHouseDMLStatementVisitor extends ClickHouseStatementVisi
@Override
public ASTNode visitSelectClause(final SelectClauseContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (!ctx.selectSpecification().isEmpty()) {
result.getProjections().setDistinctRow(isDistinct(ctx.selectSpecification().get(0)));
diff --git a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseTCLStatementVisitor.java b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseTCLStatementVisitor.java
index 565e1b795f8..9100176ea4c 100644
--- a/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseTCLStatementVisitor.java
+++ b/parser/sql/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/clickhouse/visitor/statement/type/ClickHouseTCLStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHouseStatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.clickhouse.visitor.statement.ClickHo
* TCL statement visitor for ClickHouse.
*/
public final class ClickHouseTCLStatementVisitor extends ClickHouseStatementVisitor implements TCLStatementVisitor {
+
+ public ClickHouseTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java
index 9f32be3f072..2d4014b00f7 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/DorisStatementVisitor.java
@@ -19,13 +19,13 @@ package org.apache.shardingsphere.sql.parser.doris.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AggregationFunctionContext;
@@ -254,10 +254,11 @@ import java.util.stream.Collectors;
/**
* Statement visitor for Doris.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class DorisStatementVisitor extends DorisStatementBaseVisitor<ASTNode> {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDALStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDALStatementVisitor.java
index 4bda43895e4..198be30c684 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDALStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.doris.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser;
@@ -239,92 +238,95 @@ import java.util.stream.Collectors;
*/
public final class DorisDALStatementVisitor extends DorisStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitUninstallPlugin(final UninstallPluginContext ctx) {
- return new MySQLUninstallPluginStatement(databaseType, ((IdentifierValue) visit(ctx.pluginName())).getValue());
+ return new MySQLUninstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitShowCreateDatabase(final ShowCreateDatabaseContext ctx) {
- return new MySQLShowCreateDatabaseStatement(databaseType, ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
+ return new MySQLShowCreateDatabaseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitShowBinaryLogs(final ShowBinaryLogsContext ctx) {
- return new MySQLShowBinaryLogsStatement(databaseType);
+ return new MySQLShowBinaryLogsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowStatus(final ShowStatusContext ctx) {
- MySQLShowStatusStatement result = new MySQLShowStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowStatusStatement result = new MySQLShowStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCreateView(final ShowCreateViewContext ctx) {
- return new MySQLShowCreateViewStatement(databaseType, null);
+ return new MySQLShowCreateViewStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitShowEngines(final ShowEnginesContext ctx) {
- return new MySQLShowOtherStatement(databaseType);
+ return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowEngine(final ShowEngineContext ctx) {
- return new MySQLShowEngineStatement(databaseType, ctx.engineRef().getText());
+ return new MySQLShowEngineStatement(getDatabaseType(), ctx.engineRef().getText());
}
@Override
public ASTNode visitShowCharset(final ShowCharsetContext ctx) {
- return new MySQLShowOtherStatement(databaseType);
+ return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowCreateEvent(final ShowCreateEventContext ctx) {
- return new MySQLShowCreateEventStatement(databaseType, ((IdentifierValue) visit(ctx.eventName())).getValue());
+ return new MySQLShowCreateEventStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.eventName())).getValue());
}
@Override
public ASTNode visitShowCreateFunction(final ShowCreateFunctionContext ctx) {
- return new MySQLShowCreateFunctionStatement(databaseType, ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
+ return new MySQLShowCreateFunctionStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowCreateProcedure(final ShowCreateProcedureContext ctx) {
- return new MySQLShowCreateProcedureStatement(databaseType, ((IdentifierValue) visit(ctx.procedureName())).getValue());
+ return new MySQLShowCreateProcedureStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.procedureName())).getValue());
}
@Override
public ASTNode visitShowBinlogEvents(final ShowBinlogEventsContext ctx) {
- return new MySQLShowBinlogEventsStatement(databaseType, null == ctx.logName() ? null : ctx.logName().getText(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowBinlogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ctx.logName().getText(),
+ null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowErrors(final ShowErrorsContext ctx) {
- return new MySQLShowErrorsStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowErrorsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowWarnings(final ShowWarningsContext ctx) {
- return new MySQLShowWarningsStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowWarningsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitResetStatement(final ResetStatementContext ctx) {
ResetPersistContext persistContext = ctx.resetPersist();
return null == persistContext
- ? new MySQLResetStatement(databaseType,
+ ? new MySQLResetStatement(getDatabaseType(),
ctx.resetOption().stream().filter(each -> null != each.MASTER() || null != each.SLAVE()).map(each -> (ResetOptionSegment) visit(each)).collect(Collectors.toList()))
: visit(persistContext);
}
@Override
public ASTNode visitResetPersist(final ResetPersistContext ctx) {
- return new MySQLResetPersistStatement(databaseType, null != ctx.ifExists(), null == ctx.identifier() ? null : new IdentifierValue(ctx.identifier().getText()));
+ return new MySQLResetPersistStatement(getDatabaseType(), null != ctx.ifExists(), null == ctx.identifier() ? null : new IdentifierValue(ctx.identifier().getText()));
}
@Override
@@ -362,19 +364,19 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowReplicas(final ShowReplicasContext ctx) {
- return new MySQLShowReplicasStatement(databaseType);
+ return new MySQLShowReplicasStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRepairTable(final RepairTableContext ctx) {
- return new MySQLRepairTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLRepairTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
- return new AnalyzeTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new AnalyzeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
@@ -387,7 +389,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
? null
: new PartitionDefinitionSegment(ctx.tableName().getStart().getStartIndex(), ctx.partitionList().getStop().getStopIndex(),
(SimpleTableSegment) visit(ctx.tableName()), ((CollectionValue<PartitionSegment>) visit(ctx.partitionList())).getValue());
- return new MySQLCacheIndexStatement(databaseType, name, tableIndexes, partitionDefinition);
+ return new MySQLCacheIndexStatement(getDatabaseType(), name, tableIndexes, partitionDefinition);
}
@Override
@@ -415,27 +417,27 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitChecksumTable(final ChecksumTableContext ctx) {
- return new MySQLChecksumTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLChecksumTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitFlush(final FlushContext ctx) {
- return null == ctx.tablesOption() ? new MySQLFlushStatement(databaseType, Collections.emptyList(), false) : visit(ctx.tablesOption());
+ return null == ctx.tablesOption() ? new MySQLFlushStatement(getDatabaseType(), Collections.emptyList(), false) : visit(ctx.tablesOption());
}
@Override
public ASTNode visitTablesOption(final TablesOptionContext ctx) {
- return new MySQLFlushStatement(databaseType, ctx.tableName().stream().map(each -> (SimpleTableSegment) visit(each)).collect(Collectors.toList()), true);
+ return new MySQLFlushStatement(getDatabaseType(), ctx.tableName().stream().map(each -> (SimpleTableSegment) visit(each)).collect(Collectors.toList()), true);
}
@Override
public ASTNode visitKill(final KillContext ctx) {
- return new MySQLKillStatement(databaseType, null == ctx.AT_() ? ctx.IDENTIFIER_().getText() : ctx.AT_().getText() + ctx.IDENTIFIER_().getText(), null);
+ return new MySQLKillStatement(getDatabaseType(), null == ctx.AT_() ? ctx.IDENTIFIER_().getText() : ctx.AT_().getText() + ctx.IDENTIFIER_().getText(), null);
}
@Override
public ASTNode visitLoadIndexInfo(final LoadIndexInfoContext ctx) {
- return new MySQLLoadIndexInfoStatement(databaseType, ctx.loadTableIndexList().stream().map(each -> (LoadTableIndexSegment) visit(each)).collect(Collectors.toList()));
+ return new MySQLLoadIndexInfoStatement(getDatabaseType(), ctx.loadTableIndexList().stream().map(each -> (LoadTableIndexSegment) visit(each)).collect(Collectors.toList()));
}
@Override
@@ -454,12 +456,12 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitInstallPlugin(final InstallPluginContext ctx) {
- return new MySQLInstallPluginStatement(databaseType, ((IdentifierValue) visit(ctx.pluginName())).getValue());
+ return new MySQLInstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitClone(final CloneContext ctx) {
- return new MySQLCloneStatement(databaseType, (CloneActionSegment) visit(ctx.cloneAction()));
+ return new MySQLCloneStatement(getDatabaseType(), (CloneActionSegment) visit(ctx.cloneAction()));
}
@Override
@@ -486,19 +488,19 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitOptimizeTable(final OptimizeTableContext ctx) {
- return new MySQLOptimizeTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLOptimizeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitUse(final UseContext ctx) {
- return new MySQLUseStatement(databaseType, ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
+ return new MySQLUseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
return null == ctx.tableName()
- ? new ExplainStatement(databaseType, getExplainableSQLStatement(ctx).orElse(null))
- : new MySQLDescribeStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
+ ? new ExplainStatement(getDatabaseType(), getExplainableSQLStatement(ctx).orElse(null))
+ : new MySQLDescribeStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
}
private Optional<SQLStatement> getExplainableSQLStatement(final ExplainContext ctx) {
@@ -549,29 +551,29 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowProcedureCode(final ShowProcedureCodeContext ctx) {
- return new MySQLShowProcedureCodeStatement(databaseType, (FunctionSegment) visit(ctx.functionName()));
+ return new MySQLShowProcedureCodeStatement(getDatabaseType(), (FunctionSegment) visit(ctx.functionName()));
}
@Override
public ASTNode visitShowProfile(final ShowProfileContext ctx) {
- return new MySQLShowProfileStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowProfileStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowProfiles(final ShowProfilesContext ctx) {
- return new MySQLShowProfilesStatement(databaseType);
+ return new MySQLShowProfilesStatement(getDatabaseType());
}
@Override
public ASTNode visitShowDatabases(final ShowDatabasesContext ctx) {
- MySQLShowDatabasesStatement result = new MySQLShowDatabasesStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowDatabasesStatement result = new MySQLShowDatabasesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowEvents(final ShowEventsContext ctx) {
- MySQLShowEventsStatement result = new MySQLShowEventsStatement(databaseType,
+ MySQLShowEventsStatement result = new MySQLShowEventsStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -579,7 +581,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowTables(final ShowTablesContext ctx) {
- MySQLShowTablesStatement result = new MySQLShowTablesStatement(databaseType, null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()),
+ MySQLShowTablesStatement result = new MySQLShowTablesStatement(getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()),
null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()), null != ctx.FULL());
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -587,7 +589,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowTriggers(final ShowTriggersContext ctx) {
- MySQLShowTriggersStatement result = new MySQLShowTriggersStatement(databaseType,
+ MySQLShowTriggersStatement result = new MySQLShowTriggersStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -600,7 +602,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowTableStatus(final ShowTableStatusContext ctx) {
- MySQLShowTableStatusStatement result = new MySQLShowTableStatusStatement(databaseType,
+ MySQLShowTableStatusStatement result = new MySQLShowTableStatusStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -608,7 +610,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowColumns(final ShowColumnsContext ctx) {
- MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(databaseType, null == ctx.fromTable() ? null : ((FromTableSegment) visit(ctx.fromTable())).getTable(),
+ MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visit(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -628,64 +630,64 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowIndex(final ShowIndexContext ctx) {
- return new MySQLShowIndexStatement(databaseType, null == ctx.fromTable() ? null : ((FromTableSegment) visitFromTable(ctx.fromTable())).getTable(),
+ return new MySQLShowIndexStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visitFromTable(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()));
}
@Override
public ASTNode visitShowCreateTable(final ShowCreateTableContext ctx) {
- return new MySQLShowCreateTableStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLShowCreateTableStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitShowCreateTrigger(final ShowCreateTriggerContext ctx) {
- return new MySQLShowCreateTriggerStatement(databaseType, ((IdentifierValue) visit(ctx.triggerName())).getValue());
+ return new MySQLShowCreateTriggerStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.triggerName())).getValue());
}
@Override
public ASTNode visitShowRelaylogEvent(final ShowRelaylogEventContext ctx) {
- return new MySQLShowRelayLogEventsStatement(databaseType, null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals().string_())).getValue(),
+ return new MySQLShowRelayLogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals().string_())).getValue(),
null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowFunctionCode(final ShowFunctionCodeContext ctx) {
- return new MySQLShowFunctionCodeStatement(databaseType, ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
+ return new MySQLShowFunctionCodeStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowGrants(final ShowGrantsContext ctx) {
- return new MySQLShowGrantsStatement(databaseType);
+ return new MySQLShowGrantsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowMasterStatus(final ShowMasterStatusContext ctx) {
- return new MySQLShowMasterStatusStatement(databaseType);
+ return new MySQLShowMasterStatusStatement(getDatabaseType());
}
@Override
public ASTNode visitShowSlaveHosts(final ShowSlaveHostsContext ctx) {
- return new MySQLShowSlaveHostsStatement(databaseType);
+ return new MySQLShowSlaveHostsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowReplicaStatus(final ShowReplicaStatusContext ctx) {
- return new MySQLShowReplicaStatusStatement(databaseType, null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
+ return new MySQLShowReplicaStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowSlaveStatus(final ShowSlaveStatusContext ctx) {
- return new MySQLShowSlaveStatusStatement(databaseType, null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
+ return new MySQLShowSlaveStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitCreateResourceGroup(final CreateResourceGroupContext ctx) {
- return new MySQLCreateResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLCreateResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitBinlog(final BinlogContext ctx) {
- return new MySQLBinlogStatement(databaseType, ((StringLiteralValue) visit(ctx.stringLiterals())).getValue());
+ return new MySQLBinlogStatement(getDatabaseType(), ((StringLiteralValue) visit(ctx.stringLiterals())).getValue());
}
@Override
@@ -697,42 +699,42 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowVariables(final ShowVariablesContext ctx) {
- MySQLShowVariablesStatement result = new MySQLShowVariablesStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowVariablesStatement result = new MySQLShowVariablesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCharacterSet(final ShowCharacterSetContext ctx) {
- MySQLShowCharacterSetStatement result = new MySQLShowCharacterSetStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowCharacterSetStatement result = new MySQLShowCharacterSetStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCollation(final ShowCollationContext ctx) {
- MySQLShowCollationStatement result = new MySQLShowCollationStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowCollationStatement result = new MySQLShowCollationStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowFunctionStatus(final ShowFunctionStatusContext ctx) {
- MySQLShowFunctionStatusStatement result = new MySQLShowFunctionStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowFunctionStatusStatement result = new MySQLShowFunctionStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowProcedureStatus(final ShowProcedureStatusContext ctx) {
- MySQLShowProcedureStatusStatement result = new MySQLShowProcedureStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowProcedureStatusStatement result = new MySQLShowProcedureStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowOpenTables(final ShowOpenTablesContext ctx) {
- MySQLShowOpenTablesStatement result = new MySQLShowOpenTablesStatement(databaseType,
+ MySQLShowOpenTablesStatement result = new MySQLShowOpenTablesStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -740,32 +742,32 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitShowPlugins(final ShowPluginsContext ctx) {
- return new MySQLShowPluginsStatement(databaseType);
+ return new MySQLShowPluginsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowPrivileges(final ShowPrivilegesContext ctx) {
- return new MySQLShowPrivilegesStatement(databaseType);
+ return new MySQLShowPrivilegesStatement(getDatabaseType());
}
@Override
public ASTNode visitShutdown(final ShutdownContext ctx) {
- return new MySQLShutdownStatement(databaseType);
+ return new MySQLShutdownStatement(getDatabaseType());
}
@Override
public ASTNode visitShowProcesslist(final ShowProcesslistContext ctx) {
- return new MySQLShowProcessListStatement(databaseType, null != ctx.FULL());
+ return new MySQLShowProcessListStatement(getDatabaseType(), null != ctx.FULL());
}
@Override
public ASTNode visitShowCreateUser(final ShowCreateUserContext ctx) {
- return new MySQLShowCreateUserStatement(databaseType, ((IdentifierValue) visit(ctx.username())).getValue());
+ return new MySQLShowCreateUserStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.username())).getValue());
}
@Override
public ASTNode visitSetVariable(final SetVariableContext ctx) {
- return new SetStatement(databaseType, getVariableAssigns(ctx.optionValueList()));
+ return new SetStatement(getDatabaseType(), getVariableAssigns(ctx.optionValueList()));
}
private List<VariableAssignSegment> getVariableAssigns(final OptionValueListContext ctx) {
@@ -840,7 +842,7 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
// TODO Consider setting all three system variables: character_set_client, character_set_results, character_set_connection
VariableSegment variable = new VariableSegment(startIndex, stopIndex, (null == ctx.CHARSET()) ? "character_set_client" : ctx.CHARSET().getText());
String assignValue = null == ctx.DEFAULT() ? ctx.charsetName().getText() : ctx.DEFAULT().getText();
- return new SetStatement(databaseType, Collections.singletonList(new VariableAssignSegment(startIndex, stopIndex, variable, assignValue)));
+ return new SetStatement(getDatabaseType(), Collections.singletonList(new VariableAssignSegment(startIndex, stopIndex, variable, assignValue)));
}
@Override
@@ -856,76 +858,76 @@ public final class DorisDALStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitCreateLoadableFunction(final CreateLoadableFunctionContext ctx) {
- return new MySQLCreateLoadableFunctionStatement(databaseType);
+ return new MySQLCreateLoadableFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitInstallComponent(final InstallComponentContext ctx) {
- return new MySQLInstallComponentStatement(databaseType, ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
+ return new MySQLInstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitUninstallComponent(final UninstallComponentContext ctx) {
- return new MySQLUninstallComponentStatement(databaseType, ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
+ return new MySQLUninstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitRestart(final RestartContext ctx) {
- return new MySQLRestartStatement(databaseType);
+ return new MySQLRestartStatement(getDatabaseType());
}
@Override
public ASTNode visitSetResourceGroup(final SetResourceGroupContext ctx) {
- return new MySQLSetResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLSetResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitCheckTable(final CheckTableContext ctx) {
- return new MySQLCheckTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLCheckTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitDropResourceGroup(final DropResourceGroupContext ctx) {
- return new MySQLDropResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLDropResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitAlterResourceGroup(final AlterResourceGroupContext ctx) {
- return new MySQLAlterResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLAlterResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitChangeMasterTo(final ChangeMasterToContext ctx) {
- return new MySQLChangeMasterStatement(databaseType);
+ return new MySQLChangeMasterStatement(getDatabaseType());
}
@Override
public ASTNode visitStartSlave(final StartSlaveContext ctx) {
- return new MySQLStartSlaveStatement(databaseType);
+ return new MySQLStartSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitStopSlave(final StopSlaveContext ctx) {
- return new MySQLStopSlaveStatement(databaseType);
+ return new MySQLStopSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitChangeReplicationSourceTo(final ChangeReplicationSourceToContext ctx) {
- return new MySQLChangeReplicationSourceToStatement(databaseType);
+ return new MySQLChangeReplicationSourceToStatement(getDatabaseType());
}
@Override
public ASTNode visitStartReplica(final DorisStatementParser.StartReplicaContext ctx) {
- return new MySQLStartReplicaStatement(databaseType);
+ return new MySQLStartReplicaStatement(getDatabaseType());
}
@Override
public ASTNode visitDelimiter(final DelimiterContext ctx) {
- return new MySQLDelimiterStatement(databaseType, ctx.delimiterName().getText());
+ return new MySQLDelimiterStatement(getDatabaseType(), ctx.delimiterName().getText());
}
@Override
public ASTNode visitHelp(final HelpContext ctx) {
- return new MySQLHelpStatement(databaseType, ctx.textOrIdentifier().getText());
+ return new MySQLHelpStatement(getDatabaseType(), ctx.textOrIdentifier().getText());
}
}
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDCLStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDCLStatementVisitor.java
index 9acf2675c2a..8e8c1beada0 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDCLStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.doris.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AccountLockPasswordExpireOptionContext;
@@ -121,11 +120,13 @@ import java.util.stream.Collectors;
*/
public final class DorisDCLStatementVisitor extends DorisStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrantRoleOrPrivilegeTo(final GrantRoleOrPrivilegeToContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
for (UsernameContext each : ctx.userList().username()) {
result.getUsers().add((UserSegment) visit(each));
@@ -135,7 +136,7 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitGrantRoleOrPrivilegeOnTo(final GrantRoleOrPrivilegeOnToContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
if (null == ctx.roleOrPrivileges()) {
result.setAllPrivileges(true);
} else {
@@ -153,7 +154,7 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitGrantProxy(final GrantProxyContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
PrivilegeSegment privilege = new PrivilegeSegment(ctx.PROXY().getSymbol().getStartIndex(), ctx.PROXY().getSymbol().getStopIndex(), "GRANT");
result.getRoleOrPrivileges().add(new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege));
for (UsernameContext each : ctx.userList().username()) {
@@ -419,7 +420,7 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitRevokeFrom(final RevokeFromContext ctx) {
- MySQLRevokeStatement result = new MySQLRevokeStatement(databaseType);
+ MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -433,7 +434,7 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitRevokeOnFrom(final RevokeOnFromContext ctx) {
- MySQLRevokeStatement result = new MySQLRevokeStatement(databaseType);
+ MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -454,7 +455,7 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- MySQLCreateUserStatement result = new MySQLCreateUserStatement(databaseType);
+ MySQLCreateUserStatement result = new MySQLCreateUserStatement(getDatabaseType());
for (CreateUserEntryContext each : ctx.createUserList().createUserEntry()) {
result.getUsers().add((UserSegment) visit(each));
}
@@ -709,41 +710,41 @@ public final class DorisDCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, ctx.username().stream().map(UsernameContext::getText).collect(Collectors.toList()));
+ return new DropUserStatement(getDatabaseType(), ctx.username().stream().map(UsernameContext::getText).collect(Collectors.toList()));
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, null);
+ return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitRenameUser(final RenameUserContext ctx) {
- return new MySQLRenameUserStatement(databaseType);
+ return new MySQLRenameUserStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetDefaultRole(final SetDefaultRoleContext ctx) {
- return new MySQLSetDefaultRoleStatement(databaseType);
+ return new MySQLSetDefaultRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetRole(final SetRoleContext ctx) {
- return new SetRoleStatement(databaseType);
+ return new SetRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetPassword(final SetPasswordContext ctx) {
- return new MySQLSetPasswordStatement(databaseType);
+ return new MySQLSetPasswordStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDDLStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 4b90b90b6b6..a6558399b78 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AddColumnContext;
@@ -206,11 +205,13 @@ import java.util.Optional;
*/
public final class DorisDDLStatementVisitor extends DorisStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
@@ -220,7 +221,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
@@ -230,7 +231,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
@@ -238,23 +239,23 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifNotExists());
+ return new CreateDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifNotExists());
}
@Override
public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
- return new AlterDatabaseStatement(databaseType);
+ return new AlterDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
+ return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
@@ -316,7 +317,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null == ctx.alterTableActions() || null == ctx.alterTableActions().alterCommandList() || null == ctx.alterTableActions().alterCommandList().alterList()) {
return result;
@@ -522,7 +523,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
TableNameContext renameTableName = ctx.tableName(i + 1);
renameTables.add(createRenameTableDefinitionSegment(tableName, renameTableName));
}
- return new RenameTableStatement(databaseType, renameTables);
+ return new RenameTableStatement(getDatabaseType(), renameTables);
}
private RenameTableDefinitionSegment createRenameTableDefinitionSegment(final TableNameContext tableName, final TableNameContext renameTableName) {
@@ -665,7 +666,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
return result;
@@ -673,13 +674,13 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ return new TruncateStatement(getDatabaseType(), Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.setIndex(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
@@ -697,7 +698,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.getIndexes().add(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
@@ -733,7 +734,7 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- CreateProcedureStatement result = new CreateProcedureStatement(databaseType);
+ CreateProcedureStatement result = new CreateProcedureStatement(getDatabaseType());
result.setProcedureName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
@@ -750,17 +751,17 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- CreateFunctionStatement result = new CreateFunctionStatement(databaseType);
+ CreateFunctionStatement result = new CreateFunctionStatement(getDatabaseType());
result.setFunctionName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
@@ -914,77 +915,77 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateEvent(final CreateEventContext ctx) {
- return new MySQLCreateEventStatement(databaseType);
+ return new MySQLCreateEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterEvent(final AlterEventContext ctx) {
- return new MySQLAlterEventStatement(databaseType);
+ return new MySQLAlterEventStatement(getDatabaseType());
}
@Override
public ASTNode visitDropEvent(final DropEventContext ctx) {
- return new MySQLDropEventStatement(databaseType);
+ return new MySQLDropEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterInstance(final AlterInstanceContext ctx) {
- return new MySQLAlterInstanceStatement(databaseType);
+ return new MySQLAlterInstanceStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLogfileGroup(final CreateLogfileGroupContext ctx) {
- return new MySQLCreateLogfileGroupStatement(databaseType);
+ return new MySQLCreateLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterLogfileGroup(final AlterLogfileGroupContext ctx) {
- return new MySQLAlterLogfileGroupStatement(databaseType);
+ return new MySQLAlterLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLogfileGroup(final DropLogfileGroupContext ctx) {
- return new MySQLDropLogfileGroupStatement(databaseType);
+ return new MySQLDropLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateServer(final CreateServerContext ctx) {
- return new CreateServerStatement(databaseType);
+ return new CreateServerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterServer(final AlterServerContext ctx) {
- return new AlterServerStatement(databaseType);
+ return new AlterServerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) {
- return new DropServerStatement(databaseType);
+ return new DropServerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
- return new CreateTriggerStatement(databaseType);
+ return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
- return new DropTriggerStatement(databaseType);
+ return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
- return new CreateTablespaceStatement(databaseType);
+ return new CreateTablespaceStatement(getDatabaseType());
}
@Override
@@ -999,13 +1000,13 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitAlterTablespaceInnodb(final AlterTablespaceInnodbContext ctx) {
return new AlterTablespaceStatement(
- databaseType, null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTablespace ? null : createTablespaceSegment(ctx.renameTablespace));
+ getDatabaseType(), null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTablespace ? null : createTablespaceSegment(ctx.renameTablespace));
}
@Override
public ASTNode visitAlterTablespaceNdb(final AlterTablespaceNdbContext ctx) {
return new AlterTablespaceStatement(
- databaseType, null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTableSpace ? null : createTablespaceSegment(ctx.renameTableSpace));
+ getDatabaseType(), null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTableSpace ? null : createTablespaceSegment(ctx.renameTableSpace));
}
private TablespaceSegment createTablespaceSegment(final IdentifierContext ctx) {
@@ -1014,26 +1015,26 @@ public final class DorisDDLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
- return new DropTablespaceStatement(databaseType);
+ return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
- return new PrepareStatement(databaseType);
+ return new PrepareStatement(getDatabaseType());
}
@Override
public ASTNode visitExecuteStmt(final ExecuteStmtContext ctx) {
- return new ExecuteStatement(databaseType);
+ return new ExecuteStatement(getDatabaseType());
}
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
- return new DeallocateStatement(databaseType);
+ return new DeallocateStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateMaterializedView(final CreateMaterializedViewContext ctx) {
- return new CreateMaterializedViewStatement(databaseType);
+ return new CreateMaterializedViewStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDMLStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDMLStatementVisitor.java
index 3966b3c4717..08c092d1b6f 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDMLStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisDMLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.doris.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CallContext;
@@ -61,28 +60,30 @@ import java.util.stream.Collectors;
*/
public final class DorisDMLStatementVisitor extends DorisStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCall(final CallContext ctx) {
String procedureName = null == ctx.owner() ? ctx.identifier().getText() : ctx.owner().getText() + "." + ctx.identifier().getText();
List<ExpressionSegment> params = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
- return new CallStatement(databaseType, procedureName, params);
+ return new CallStatement(getDatabaseType(), procedureName, params);
}
@Override
public ASTNode visitDoStatement(final DoStatementContext ctx) {
- return new DoStatement(databaseType, ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList()));
+ return new DoStatement(getDatabaseType(), ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList()));
}
@Override
public ASTNode visitHandlerStatement(final HandlerStatementContext ctx) {
- return new MySQLHandlerStatement(databaseType);
+ return new MySQLHandlerStatement(getDatabaseType());
}
@Override
public ASTNode visitImportStatement(final ImportStatementContext ctx) {
- return new MySQLImportStatement(databaseType);
+ return new MySQLImportStatement(getDatabaseType());
}
@Override
@@ -92,12 +93,12 @@ public final class DorisDMLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitLoadDataStatement(final LoadDataStatementContext ctx) {
- return new MySQLLoadDataStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLLoadDataStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitLoadXmlStatement(final LoadXmlStatementContext ctx) {
- return new MySQLLoadXMLStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLLoadXMLStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisLCLStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisLCLStatementVisitor.java
index f46eaf39d64..c68fd65410b 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisLCLStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisLCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.doris.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.LCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.LockContext;
@@ -40,11 +39,13 @@ import java.util.List;
*/
public final class DorisLCLStatementVisitor extends DorisStatementVisitor implements LCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisLCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, null == ctx.tableLock() ? Collections.emptyList() : getLockTables(ctx.tableLock()));
+ return new LockStatement(getDatabaseType(), null == ctx.tableLock() ? Collections.emptyList() : getLockTables(ctx.tableLock()));
}
private Collection<SimpleTableSegment> getLockTables(final List<TableLockContext> tableLockContexts) {
@@ -61,6 +62,6 @@ public final class DorisLCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitUnlock(final UnlockContext ctx) {
- return new UnlockStatement(databaseType);
+ return new UnlockStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisTCLStatementVisitor.java b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisTCLStatementVisitor.java
index d1dc5230655..a3a563c34c9 100644
--- a/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisTCLStatementVisitor.java
+++ b/parser/sql/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/doris/visitor/statement/type/DorisTCLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.doris.visitor.statement.type;
import org.antlr.v4.runtime.Token;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.BeginTransactionContext;
@@ -63,11 +62,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.Iden
*/
public final class DorisTCLStatementVisitor extends DorisStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Doris");
+ public DorisTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType, getOperationScope(ctx.optionType()),
+ return new SetTransactionStatement(getDatabaseType(), getOperationScope(ctx.optionType()),
getTransactionIsolationLevel(null == ctx.transactionCharacteristics().isolationLevel() ? null : ctx.transactionCharacteristics().isolationLevel().isolationTypes()),
getTransactionAccessType(ctx.transactionCharacteristics().transactionAccessMode()));
}
@@ -119,7 +120,7 @@ public final class DorisTCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitSetAutoCommit(final SetAutoCommitContext ctx) {
- return new SetAutoCommitStatement(databaseType, generateAutoCommitSegment(ctx.autoCommitValue).isAutoCommit());
+ return new SetAutoCommitStatement(getDatabaseType(), generateAutoCommitSegment(ctx.autoCommitValue).isAutoCommit());
}
private AutoCommitSegment generateAutoCommitSegment(final Token ctx) {
@@ -129,56 +130,56 @@ public final class DorisTCLStatementVisitor extends DorisStatementVisitor implem
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return null == ctx.identifier() ? new RollbackStatement(databaseType) : new RollbackStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return null == ctx.identifier() ? new RollbackStatement(getDatabaseType()) : new RollbackStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return new SavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
- return new ReleaseSavepointStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return new ReleaseSavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitXaBegin(final XaBeginContext ctx) {
- return new XABeginStatement(databaseType, ctx.xid().getText());
+ return new XABeginStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaPrepare(final XaPrepareContext ctx) {
- return new XAPrepareStatement(databaseType, ctx.xid().getText());
+ return new XAPrepareStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaCommit(final XaCommitContext ctx) {
- return new XACommitStatement(databaseType, ctx.xid().getText());
+ return new XACommitStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRollback(final XaRollbackContext ctx) {
- return new XARollbackStatement(databaseType, ctx.xid().getText());
+ return new XARollbackStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaEnd(final XaEndContext ctx) {
- return new XAEndStatement(databaseType, ctx.xid().getText());
+ return new XAEndStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRecovery(final XaRecoveryContext ctx) {
- return new XARecoveryStatement(databaseType);
+ return new XARecoveryStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/FirebirdStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/FirebirdStatementVisitor.java
index 62f0abcc15e..c1602b51045 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/FirebirdStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/FirebirdStatementVisitor.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.sql.parser.firebird.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementParser.AggregationFunctionContext;
@@ -121,9 +123,12 @@ import java.util.stream.Collectors;
/**
* Statement visitor for Firebird.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class FirebirdStatementVisitor extends FirebirdStatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDALStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDALStatementVisitor.java
index 3dc7d7a55da..61bb45e7916 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDALStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDALStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.firebird.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.firebird.visitor.statement.FirebirdStatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.firebird.visitor.statement.FirebirdS
* DAL statement visitor for Firebird.
*/
public final class FirebirdDALStatementVisitor extends FirebirdStatementVisitor implements DALStatementVisitor {
+
+ public FirebirdDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
index 4fa45704dfe..33e2322f77c 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.firebird.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementParser.CreateRoleContext;
@@ -37,11 +36,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.us
*/
public final class FirebirdDCLStatementVisitor extends FirebirdStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Firebird");
+ public FirebirdDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- GrantStatement result = new GrantStatement(databaseType);
+ GrantStatement result = new GrantStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
@@ -50,7 +51,7 @@ public final class FirebirdDCLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(databaseType);
+ RevokeStatement result = new RevokeStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
@@ -59,11 +60,11 @@ public final class FirebirdDCLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- return new CreateUserStatement(databaseType);
+ return new CreateUserStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
index 619ecc45585..f82ede8bc31 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.firebird.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementParser.AddColumnSpecificationContext;
@@ -90,12 +89,14 @@ import java.util.Collections;
*/
public final class FirebirdDDLStatementVisitor extends FirebirdStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Firebird");
+ public FirebirdDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
@@ -184,7 +185,7 @@ public final class FirebirdDDLStatementVisitor extends FirebirdStatementVisitor
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
@@ -206,7 +207,7 @@ public final class FirebirdDDLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitAlterDomain(final AlterDomainContext ctx) {
- return new AlterDomainStatement(databaseType);
+ return new AlterDomainStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@@ -252,64 +253,64 @@ public final class FirebirdDDLStatementVisitor extends FirebirdStatementVisitor
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
return result;
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(databaseType);
+ return new CreateFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- return new CreateProcedureStatement(databaseType);
+ return new CreateProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
- return new AlterSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.tableName())).getTableName().getIdentifier().getValue());
+ return new AlterSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.tableName())).getTableName().getIdentifier().getValue());
}
@Override
public ASTNode visitCreateCollation(final CreateCollationContext ctx) {
- return new CreateCollationStatement(databaseType);
+ return new CreateCollationStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDomain(final CreateDomainContext ctx) {
- return new CreateDomainStatement(databaseType);
+ return new CreateDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
- return new AlterTriggerStatement(databaseType);
+ return new AlterTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
- return new CreateTriggerStatement(databaseType);
+ return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
- return new CreateSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.tableName())).getTableName().getIdentifier().getValue());
+ return new CreateSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.tableName())).getTableName().getIdentifier().getValue());
}
@Override
public ASTNode visitExecuteStmt(final ExecuteStmtContext ctx) {
- return new ExecuteStatement(databaseType);
+ return new ExecuteStatement(getDatabaseType());
}
@Override
public ASTNode visitComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
if (null != ctx.tableName()) {
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
}
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
index ee4b7b224eb..0e2143380ac 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.firebird.visitor.statement.type;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementParser.AliasContext;
@@ -121,7 +120,9 @@ import java.util.stream.Collectors;
*/
public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Firebird");
+ public FirebirdDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitInsert(final InsertContext ctx) {
@@ -137,7 +138,7 @@ public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
@@ -164,7 +165,7 @@ public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.tableReferences()));
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
@@ -215,7 +216,7 @@ public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.singleTableClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
@@ -254,7 +255,7 @@ public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitSelectClause(final SelectClauseContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (ctx.firstSkipClause() != null) {
result.setLimit((LimitSegment) visit(ctx.firstSkipClause()));
@@ -568,7 +569,7 @@ public final class FirebirdDMLStatementVisitor extends FirebirdStatementVisitor
@Override
public ASTNode visitMerge(final MergeContext ctx) {
- MergeStatement result = new MergeStatement(databaseType);
+ MergeStatement result = new MergeStatement(getDatabaseType());
result.setTarget((TableSegment) visit(ctx.intoClause()));
result.setSource((TableSegment) visit(ctx.usingClause()));
// add mergeWhenNotMatched and mergeWhenMatched part
diff --git a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdTCLStatementVisitor.java b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdTCLStatementVisitor.java
index 2ddb704df2d..d6c5113d842 100644
--- a/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdTCLStatementVisitor.java
+++ b/parser/sql/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/firebird/visitor/statement/type/FirebirdTCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.firebird.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.FirebirdStatementParser.CommitContext;
@@ -36,25 +35,27 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.Se
*/
public final class FirebirdTCLStatementVisitor extends FirebirdStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Firebird");
+ public FirebirdTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType);
+ return new SetTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, null);
+ return new SavepointStatement(getDatabaseType(), null);
}
}
diff --git a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/HiveStatementVisitor.java b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/HiveStatementVisitor.java
index a58b01b819d..2611ef6ff6b 100644
--- a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/HiveStatementVisitor.java
+++ b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/HiveStatementVisitor.java
@@ -19,9 +19,11 @@ package org.apache.shardingsphere.sql.parser.hive.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.HiveStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.HiveStatementParser.BitExprContext;
@@ -84,15 +86,19 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.Nu
import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.OtherLiteralValue;
import org.apache.shardingsphere.sql.parser.statement.core.value.literal.impl.StringLiteralValue;
import org.apache.shardingsphere.sql.parser.statement.core.value.parametermarker.ParameterMarkerValue;
+
import java.util.Collection;
import java.util.LinkedList;
/**
* Statement visitor for hive.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class HiveStatementVisitor extends HiveStatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
diff --git a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDDLStatementVisitor.java b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDDLStatementVisitor.java
index d84dacbe0c3..2a928d4c4a2 100644
--- a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDDLStatementVisitor.java
+++ b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDDLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.hive.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.HiveStatementParser.CreateDatabaseContext;
@@ -33,15 +32,17 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.Iden
*/
public final class HiveDDLStatementVisitor extends HiveStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Hive");
+ public HiveDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, new IdentifierValue(ctx.identifier().getText()).getValue(), null != ctx.ifNotExists());
+ return new CreateDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.identifier().getText()).getValue(), null != ctx.ifNotExists());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, new IdentifierValue(ctx.identifier().getText()).getValue(), null != ctx.ifExists());
+ return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.identifier().getText()).getValue(), null != ctx.ifExists());
}
}
diff --git a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java
index e90dca2e8ac..8247069ebdd 100644
--- a/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java
+++ b/parser/sql/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/hive/visitor/statement/type/HiveDMLStatementVisitor.java
@@ -21,7 +21,6 @@ import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.HiveStatementParser.AggregationFunctionContext;
@@ -202,7 +201,9 @@ import java.util.stream.Collectors;
*/
public final class HiveDMLStatementVisitor extends HiveStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Hive");
+ public HiveDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) {
@@ -268,7 +269,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
return visit(ctx.queryPrimary());
}
if (null != ctx.queryExpressionBody()) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionBody().start.getStartIndex(), ctx.queryExpressionBody().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionBody()), getOriginalText(ctx.queryExpressionBody()));
result.setProjections(left.getSelect().getProjections());
@@ -277,7 +278,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
return result;
}
if (null != ctx.queryExpressionParens()) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionParens().start.getStartIndex(), ctx.queryExpressionParens().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionParens()), getOriginalText(ctx.queryExpressionParens()));
result.setProjections(left.getSelect().getProjections());
@@ -302,7 +303,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitQuerySpecification(final QuerySpecificationContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
@@ -335,7 +336,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitTableValueConstructor(final TableValueConstructorContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
@@ -355,7 +356,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitTableStatement(final TableStatementContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
if (null != ctx.TABLE()) {
result.setFrom(new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
new IdentifierValue(ctx.tableName().getText()))));
@@ -859,7 +860,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
} else if (null != ctx.insertSelectClause()) {
result = (InsertStatement) visit(ctx.insertSelectClause());
} else {
- result = new InsertStatement(databaseType);
+ result = new InsertStatement(getDatabaseType());
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
if (null != ctx.onDuplicateKeyClause()) {
@@ -872,7 +873,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
@@ -893,7 +894,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
@@ -934,7 +935,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
@@ -999,7 +1000,7 @@ public final class HiveDMLStatementVisitor extends HiveStatementVisitor implemen
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable(null == ctx.multipleTablesClause() ? (TableSegment) visit(ctx.singleTableClause()) : (TableSegment) visit(ctx.multipleTablesClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
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 eb772cb9bfc..f561846e4df 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
@@ -19,13 +19,13 @@ package org.apache.shardingsphere.sql.parser.mysql.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AggregationFunctionContext;
@@ -260,10 +260,11 @@ import java.util.stream.Collectors;
/**
* Statement visitor for MySQL.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class MySQLStatementVisitor extends MySQLStatementBaseVisitor<ASTNode> {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
index 36c4f0b657d..cd7818011f5 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser;
@@ -239,92 +238,95 @@ import java.util.stream.Collectors;
*/
public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitUninstallPlugin(final UninstallPluginContext ctx) {
- return new MySQLUninstallPluginStatement(databaseType, ((IdentifierValue) visit(ctx.pluginName())).getValue());
+ return new MySQLUninstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitShowCreateDatabase(final ShowCreateDatabaseContext ctx) {
- return new MySQLShowCreateDatabaseStatement(databaseType, ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
+ return new MySQLShowCreateDatabaseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitShowBinaryLogs(final ShowBinaryLogsContext ctx) {
- return new MySQLShowBinaryLogsStatement(databaseType);
+ return new MySQLShowBinaryLogsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowStatus(final ShowStatusContext ctx) {
- MySQLShowStatusStatement result = new MySQLShowStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowStatusStatement result = new MySQLShowStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCreateView(final ShowCreateViewContext ctx) {
- return new MySQLShowCreateViewStatement(databaseType, null);
+ return new MySQLShowCreateViewStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitShowEngines(final ShowEnginesContext ctx) {
- return new MySQLShowOtherStatement(databaseType);
+ return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowEngine(final ShowEngineContext ctx) {
- return new MySQLShowEngineStatement(databaseType, ctx.engineRef().getText());
+ return new MySQLShowEngineStatement(getDatabaseType(), ctx.engineRef().getText());
}
@Override
public ASTNode visitShowCharset(final ShowCharsetContext ctx) {
- return new MySQLShowOtherStatement(databaseType);
+ return new MySQLShowOtherStatement(getDatabaseType());
}
@Override
public ASTNode visitShowCreateEvent(final ShowCreateEventContext ctx) {
- return new MySQLShowCreateEventStatement(databaseType, ((IdentifierValue) visit(ctx.eventName())).getValue());
+ return new MySQLShowCreateEventStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.eventName())).getValue());
}
@Override
public ASTNode visitShowCreateFunction(final ShowCreateFunctionContext ctx) {
- return new MySQLShowCreateFunctionStatement(databaseType, ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
+ return new MySQLShowCreateFunctionStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowCreateProcedure(final ShowCreateProcedureContext ctx) {
- return new MySQLShowCreateProcedureStatement(databaseType, ((IdentifierValue) visit(ctx.procedureName())).getValue());
+ return new MySQLShowCreateProcedureStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.procedureName())).getValue());
}
@Override
public ASTNode visitShowBinlogEvents(final ShowBinlogEventsContext ctx) {
- return new MySQLShowBinlogEventsStatement(databaseType, null == ctx.logName() ? null : ctx.logName().getText(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowBinlogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ctx.logName().getText(),
+ null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowErrors(final ShowErrorsContext ctx) {
- return new MySQLShowErrorsStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowErrorsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowWarnings(final ShowWarningsContext ctx) {
- return new MySQLShowWarningsStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowWarningsStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitResetStatement(final ResetStatementContext ctx) {
ResetPersistContext persistContext = ctx.resetPersist();
return null == persistContext
- ? new MySQLResetStatement(databaseType,
+ ? new MySQLResetStatement(getDatabaseType(),
ctx.resetOption().stream().filter(each -> null != each.MASTER() || null != each.SLAVE()).map(each -> (ResetOptionSegment) visit(each)).collect(Collectors.toList()))
: visit(persistContext);
}
@Override
public ASTNode visitResetPersist(final ResetPersistContext ctx) {
- return new MySQLResetPersistStatement(databaseType, null != ctx.ifExists(), null == ctx.identifier() ? null : new IdentifierValue(ctx.identifier().getText()));
+ return new MySQLResetPersistStatement(getDatabaseType(), null != ctx.ifExists(), null == ctx.identifier() ? null : new IdentifierValue(ctx.identifier().getText()));
}
@Override
@@ -362,19 +364,19 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowReplicas(final ShowReplicasContext ctx) {
- return new MySQLShowReplicasStatement(databaseType);
+ return new MySQLShowReplicasStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitRepairTable(final RepairTableContext ctx) {
- return new MySQLRepairTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLRepairTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
- return new AnalyzeTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new AnalyzeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
@@ -387,7 +389,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
? null
: new PartitionDefinitionSegment(ctx.tableName().getStart().getStartIndex(), ctx.partitionList().getStop().getStopIndex(),
(SimpleTableSegment) visit(ctx.tableName()), ((CollectionValue<PartitionSegment>) visit(ctx.partitionList())).getValue());
- return new MySQLCacheIndexStatement(databaseType, name, tableIndexes, partitionDefinition);
+ return new MySQLCacheIndexStatement(getDatabaseType(), name, tableIndexes, partitionDefinition);
}
@Override
@@ -415,7 +417,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitChecksumTable(final ChecksumTableContext ctx) {
- return new MySQLChecksumTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLChecksumTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
@@ -423,17 +425,17 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
if (null != ctx.tablesOption()) {
return visit(ctx.tablesOption());
}
- return new MySQLFlushStatement(databaseType, Collections.emptyList(), false);
+ return new MySQLFlushStatement(getDatabaseType(), Collections.emptyList(), false);
}
@Override
public ASTNode visitTablesOption(final TablesOptionContext ctx) {
- return new MySQLFlushStatement(databaseType, ctx.tableName().stream().map(each -> (SimpleTableSegment) visit(each)).collect(Collectors.toList()), true);
+ return new MySQLFlushStatement(getDatabaseType(), ctx.tableName().stream().map(each -> (SimpleTableSegment) visit(each)).collect(Collectors.toList()), true);
}
@Override
public ASTNode visitKill(final KillContext ctx) {
- return new MySQLKillStatement(databaseType, null == ctx.AT_() ? ctx.IDENTIFIER_().getText() : ctx.AT_().getText() + ctx.IDENTIFIER_().getText(), getScope(ctx));
+ return new MySQLKillStatement(getDatabaseType(), null == ctx.AT_() ? ctx.IDENTIFIER_().getText() : ctx.AT_().getText() + ctx.IDENTIFIER_().getText(), getScope(ctx));
}
private String getScope(final KillContext ctx) {
@@ -448,7 +450,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitLoadIndexInfo(final LoadIndexInfoContext ctx) {
- return new MySQLLoadIndexInfoStatement(databaseType, ctx.loadTableIndexList().stream().map(each -> (LoadTableIndexSegment) visit(each)).collect(Collectors.toList()));
+ return new MySQLLoadIndexInfoStatement(getDatabaseType(), ctx.loadTableIndexList().stream().map(each -> (LoadTableIndexSegment) visit(each)).collect(Collectors.toList()));
}
@Override
@@ -467,12 +469,12 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitInstallPlugin(final InstallPluginContext ctx) {
- return new MySQLInstallPluginStatement(databaseType, ((IdentifierValue) visit(ctx.pluginName())).getValue());
+ return new MySQLInstallPluginStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.pluginName())).getValue());
}
@Override
public ASTNode visitClone(final CloneContext ctx) {
- return new MySQLCloneStatement(databaseType, (CloneActionSegment) visit(ctx.cloneAction()));
+ return new MySQLCloneStatement(getDatabaseType(), (CloneActionSegment) visit(ctx.cloneAction()));
}
@Override
@@ -499,19 +501,19 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitOptimizeTable(final OptimizeTableContext ctx) {
- return new MySQLOptimizeTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLOptimizeTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitUse(final UseContext ctx) {
- return new MySQLUseStatement(databaseType, ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
+ return new MySQLUseStatement(getDatabaseType(), ((DatabaseSegment) visit(ctx.databaseName())).getIdentifier().getValue());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
return null == ctx.tableName()
- ? new ExplainStatement(databaseType, getExplainableSQLStatement(ctx).orElse(null))
- : new MySQLDescribeStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
+ ? new ExplainStatement(getDatabaseType(), getExplainableSQLStatement(ctx).orElse(null))
+ : new MySQLDescribeStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()), getColumnWildcard(ctx));
}
private Optional<SQLStatement> getExplainableSQLStatement(final ExplainContext ctx) {
@@ -562,29 +564,29 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowProcedureCode(final ShowProcedureCodeContext ctx) {
- return new MySQLShowProcedureCodeStatement(databaseType, (FunctionSegment) visit(ctx.functionName()));
+ return new MySQLShowProcedureCodeStatement(getDatabaseType(), (FunctionSegment) visit(ctx.functionName()));
}
@Override
public ASTNode visitShowProfile(final ShowProfileContext ctx) {
- return new MySQLShowProfileStatement(databaseType, null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
+ return new MySQLShowProfileStatement(getDatabaseType(), null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()));
}
@Override
public ASTNode visitShowProfiles(final ShowProfilesContext ctx) {
- return new MySQLShowProfilesStatement(databaseType);
+ return new MySQLShowProfilesStatement(getDatabaseType());
}
@Override
public ASTNode visitShowDatabases(final ShowDatabasesContext ctx) {
- MySQLShowDatabasesStatement result = new MySQLShowDatabasesStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowDatabasesStatement result = new MySQLShowDatabasesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowEvents(final ShowEventsContext ctx) {
- MySQLShowEventsStatement result = new MySQLShowEventsStatement(databaseType,
+ MySQLShowEventsStatement result = new MySQLShowEventsStatement(getDatabaseType(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -592,7 +594,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowTables(final ShowTablesContext ctx) {
- MySQLShowTablesStatement result = new MySQLShowTablesStatement(databaseType, null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()),
+ MySQLShowTablesStatement result = new MySQLShowTablesStatement(getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()),
null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()), null != ctx.FULL());
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -601,7 +603,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowTriggers(final ShowTriggersContext ctx) {
MySQLShowTriggersStatement result = new MySQLShowTriggersStatement(
- databaseType, null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@@ -614,14 +616,14 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowTableStatus(final ShowTableStatusContext ctx) {
MySQLShowTableStatusStatement result = new MySQLShowTableStatusStatement(
- databaseType, null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowColumns(final ShowColumnsContext ctx) {
- MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(databaseType, null == ctx.fromTable() ? null : ((FromTableSegment) visit(ctx.fromTable())).getTable(),
+ MySQLShowColumnsStatement result = new MySQLShowColumnsStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visit(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
@@ -641,64 +643,64 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowIndex(final ShowIndexContext ctx) {
- return new MySQLShowIndexStatement(databaseType, null == ctx.fromTable() ? null : ((FromTableSegment) visitFromTable(ctx.fromTable())).getTable(),
+ return new MySQLShowIndexStatement(getDatabaseType(), null == ctx.fromTable() ? null : ((FromTableSegment) visitFromTable(ctx.fromTable())).getTable(),
null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()));
}
@Override
public ASTNode visitShowCreateTable(final ShowCreateTableContext ctx) {
- return new MySQLShowCreateTableStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLShowCreateTableStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitShowCreateTrigger(final ShowCreateTriggerContext ctx) {
- return new MySQLShowCreateTriggerStatement(databaseType, ((IdentifierValue) visit(ctx.triggerName())).getValue());
+ return new MySQLShowCreateTriggerStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.triggerName())).getValue());
}
@Override
public ASTNode visitShowRelaylogEvent(final ShowRelaylogEventContext ctx) {
- return new MySQLShowRelayLogEventsStatement(databaseType, null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals())).getValue(),
+ return new MySQLShowRelayLogEventsStatement(getDatabaseType(), null == ctx.logName() ? null : ((StringLiteralValue) visit(ctx.logName().stringLiterals())).getValue(),
null == ctx.limitClause() ? null : (LimitSegment) visit(ctx.limitClause()), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowFunctionCode(final ShowFunctionCodeContext ctx) {
- return new MySQLShowFunctionCodeStatement(databaseType, ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
+ return new MySQLShowFunctionCodeStatement(getDatabaseType(), ((FunctionSegment) visit(ctx.functionName())).getFunctionName());
}
@Override
public ASTNode visitShowGrants(final ShowGrantsContext ctx) {
- return new MySQLShowGrantsStatement(databaseType);
+ return new MySQLShowGrantsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowMasterStatus(final ShowMasterStatusContext ctx) {
- return new MySQLShowMasterStatusStatement(databaseType);
+ return new MySQLShowMasterStatusStatement(getDatabaseType());
}
@Override
public ASTNode visitShowSlaveHosts(final ShowSlaveHostsContext ctx) {
- return new MySQLShowSlaveHostsStatement(databaseType);
+ return new MySQLShowSlaveHostsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowReplicaStatus(final ShowReplicaStatusContext ctx) {
- return new MySQLShowReplicaStatusStatement(databaseType, null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
+ return new MySQLShowReplicaStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitShowSlaveStatus(final ShowSlaveStatusContext ctx) {
- return new MySQLShowSlaveStatusStatement(databaseType, null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
+ return new MySQLShowSlaveStatusStatement(getDatabaseType(), null == ctx.channelName() ? null : ((IdentifierValue) visit(ctx.channelName())).getValue());
}
@Override
public ASTNode visitCreateResourceGroup(final CreateResourceGroupContext ctx) {
- return new MySQLCreateResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLCreateResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitBinlog(final BinlogContext ctx) {
- return new MySQLBinlogStatement(databaseType, ((StringLiteralValue) visit(ctx.stringLiterals())).getValue());
+ return new MySQLBinlogStatement(getDatabaseType(), ((StringLiteralValue) visit(ctx.stringLiterals())).getValue());
}
@Override
@@ -710,35 +712,35 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowVariables(final ShowVariablesContext ctx) {
- MySQLShowVariablesStatement result = new MySQLShowVariablesStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowVariablesStatement result = new MySQLShowVariablesStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCharacterSet(final ShowCharacterSetContext ctx) {
- MySQLShowCharacterSetStatement result = new MySQLShowCharacterSetStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowCharacterSetStatement result = new MySQLShowCharacterSetStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowCollation(final ShowCollationContext ctx) {
- MySQLShowCollationStatement result = new MySQLShowCollationStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowCollationStatement result = new MySQLShowCollationStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowFunctionStatus(final ShowFunctionStatusContext ctx) {
- MySQLShowFunctionStatusStatement result = new MySQLShowFunctionStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowFunctionStatusStatement result = new MySQLShowFunctionStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowProcedureStatus(final ShowProcedureStatusContext ctx) {
- MySQLShowProcedureStatusStatement result = new MySQLShowProcedureStatusStatement(databaseType, null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ MySQLShowProcedureStatusStatement result = new MySQLShowProcedureStatusStatement(getDatabaseType(), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@@ -746,39 +748,39 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitShowOpenTables(final ShowOpenTablesContext ctx) {
MySQLShowOpenTablesStatement result = new MySQLShowOpenTablesStatement(
- databaseType, null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
+ getDatabaseType(), null == ctx.fromDatabase() ? null : (FromDatabaseSegment) visit(ctx.fromDatabase()), null == ctx.showFilter() ? null : (ShowFilterSegment) visit(ctx.showFilter()));
result.addParameterMarkers(getParameterMarkerSegments());
return result;
}
@Override
public ASTNode visitShowPlugins(final ShowPluginsContext ctx) {
- return new MySQLShowPluginsStatement(databaseType);
+ return new MySQLShowPluginsStatement(getDatabaseType());
}
@Override
public ASTNode visitShowPrivileges(final ShowPrivilegesContext ctx) {
- return new MySQLShowPrivilegesStatement(databaseType);
+ return new MySQLShowPrivilegesStatement(getDatabaseType());
}
@Override
public ASTNode visitShutdown(final ShutdownContext ctx) {
- return new MySQLShutdownStatement(databaseType);
+ return new MySQLShutdownStatement(getDatabaseType());
}
@Override
public ASTNode visitShowProcesslist(final ShowProcesslistContext ctx) {
- return new MySQLShowProcessListStatement(databaseType, null != ctx.FULL());
+ return new MySQLShowProcessListStatement(getDatabaseType(), null != ctx.FULL());
}
@Override
public ASTNode visitShowCreateUser(final ShowCreateUserContext ctx) {
- return new MySQLShowCreateUserStatement(databaseType, ((IdentifierValue) visit(ctx.username())).getValue());
+ return new MySQLShowCreateUserStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.username())).getValue());
}
@Override
public ASTNode visitSetVariable(final SetVariableContext ctx) {
- return new SetStatement(databaseType, getVariableAssigns(ctx.optionValueList()));
+ return new SetStatement(getDatabaseType(), getVariableAssigns(ctx.optionValueList()));
}
private List<VariableAssignSegment> getVariableAssigns(final OptionValueListContext ctx) {
@@ -851,7 +853,7 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
String variableName = (null == ctx.CHARSET()) ? "character_set_client" : ctx.CHARSET().getText();
VariableSegment variable = new VariableSegment(startIndex, stopIndex, variableName);
String assignValue = (null == ctx.DEFAULT()) ? ctx.charsetName().getText() : ctx.DEFAULT().getText();
- return new SetStatement(databaseType, Collections.singletonList(new VariableAssignSegment(startIndex, stopIndex, variable, assignValue)));
+ return new SetStatement(getDatabaseType(), Collections.singletonList(new VariableAssignSegment(startIndex, stopIndex, variable, assignValue)));
}
@Override
@@ -867,76 +869,76 @@ public final class MySQLDALStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitCreateLoadableFunction(final CreateLoadableFunctionContext ctx) {
- return new MySQLCreateLoadableFunctionStatement(databaseType);
+ return new MySQLCreateLoadableFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitInstallComponent(final InstallComponentContext ctx) {
- return new MySQLInstallComponentStatement(databaseType, ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
+ return new MySQLInstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitUninstallComponent(final UninstallComponentContext ctx) {
- return new MySQLUninstallComponentStatement(databaseType, ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
+ return new MySQLUninstallComponentStatement(getDatabaseType(), ctx.componentName().stream().map(each -> ((StringLiteralValue) visit(each.string_())).getValue()).collect(Collectors.toList()));
}
@Override
public ASTNode visitRestart(final RestartContext ctx) {
- return new MySQLRestartStatement(databaseType);
+ return new MySQLRestartStatement(getDatabaseType());
}
@Override
public ASTNode visitSetResourceGroup(final SetResourceGroupContext ctx) {
- return new MySQLSetResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLSetResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitCheckTable(final CheckTableContext ctx) {
- return new MySQLCheckTableStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
+ return new MySQLCheckTableStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
}
@Override
public ASTNode visitDropResourceGroup(final DropResourceGroupContext ctx) {
- return new MySQLDropResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLDropResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitAlterResourceGroup(final AlterResourceGroupContext ctx) {
- return new MySQLAlterResourceGroupStatement(databaseType, ((IdentifierValue) visit(ctx.groupName())).getValue());
+ return new MySQLAlterResourceGroupStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.groupName())).getValue());
}
@Override
public ASTNode visitChangeMasterTo(final ChangeMasterToContext ctx) {
- return new MySQLChangeMasterStatement(databaseType);
+ return new MySQLChangeMasterStatement(getDatabaseType());
}
@Override
public ASTNode visitStartSlave(final StartSlaveContext ctx) {
- return new MySQLStartSlaveStatement(databaseType);
+ return new MySQLStartSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitStopSlave(final StopSlaveContext ctx) {
- return new MySQLStopSlaveStatement(databaseType);
+ return new MySQLStopSlaveStatement(getDatabaseType());
}
@Override
public ASTNode visitChangeReplicationSourceTo(final ChangeReplicationSourceToContext ctx) {
- return new MySQLChangeReplicationSourceToStatement(databaseType);
+ return new MySQLChangeReplicationSourceToStatement(getDatabaseType());
}
@Override
public ASTNode visitStartReplica(final MySQLStatementParser.StartReplicaContext ctx) {
- return new MySQLStartReplicaStatement(databaseType);
+ return new MySQLStartReplicaStatement(getDatabaseType());
}
@Override
public ASTNode visitDelimiter(final DelimiterContext ctx) {
- return new MySQLDelimiterStatement(databaseType, ctx.delimiterName().getText());
+ return new MySQLDelimiterStatement(getDatabaseType(), ctx.delimiterName().getText());
}
@Override
public ASTNode visitHelp(final HelpContext ctx) {
- return new MySQLHelpStatement(databaseType, ctx.textOrIdentifier().getText());
+ return new MySQLHelpStatement(getDatabaseType(), ctx.textOrIdentifier().getText());
}
}
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
index 98f9f272292..2fba39508c2 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AccountLockPasswordExpireOptionContext;
@@ -121,11 +120,13 @@ import java.util.stream.Collectors;
*/
public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrantRoleOrPrivilegeTo(final GrantRoleOrPrivilegeToContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
for (UsernameContext each : ctx.userList().username()) {
result.getUsers().add((UserSegment) visit(each));
@@ -135,7 +136,7 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitGrantRoleOrPrivilegeOnTo(final GrantRoleOrPrivilegeOnToContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
if (null == ctx.roleOrPrivileges()) {
result.setAllPrivileges(true);
} else {
@@ -153,7 +154,7 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitGrantProxy(final GrantProxyContext ctx) {
- MySQLGrantStatement result = new MySQLGrantStatement(databaseType);
+ MySQLGrantStatement result = new MySQLGrantStatement(getDatabaseType());
PrivilegeSegment privilege = new PrivilegeSegment(ctx.PROXY().getSymbol().getStartIndex(), ctx.PROXY().getSymbol().getStopIndex(), "GRANT");
result.getRoleOrPrivileges().add(new RoleOrPrivilegeSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(), null, null, privilege));
for (UsernameContext each : ctx.userList().username()) {
@@ -418,7 +419,7 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitRevokeFrom(final RevokeFromContext ctx) {
- MySQLRevokeStatement result = new MySQLRevokeStatement(databaseType);
+ MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -432,7 +433,7 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitRevokeOnFrom(final RevokeOnFromContext ctx) {
- MySQLRevokeStatement result = new MySQLRevokeStatement(databaseType);
+ MySQLRevokeStatement result = new MySQLRevokeStatement(getDatabaseType());
if (null != ctx.roleOrPrivileges()) {
fillRoleOrPrivileges(result, ctx.roleOrPrivileges());
} else if (null != ctx.ALL()) {
@@ -453,7 +454,7 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- MySQLCreateUserStatement result = new MySQLCreateUserStatement(databaseType);
+ MySQLCreateUserStatement result = new MySQLCreateUserStatement(getDatabaseType());
for (CreateUserEntryContext each : ctx.createUserList().createUserEntry()) {
result.getUsers().add((UserSegment) visit(each));
}
@@ -706,41 +707,41 @@ public final class MySQLDCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, ctx.username().stream().map(UsernameContext::getText).collect(Collectors.toList()));
+ return new DropUserStatement(getDatabaseType(), ctx.username().stream().map(UsernameContext::getText).collect(Collectors.toList()));
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, null);
+ return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitRenameUser(final RenameUserContext ctx) {
- return new MySQLRenameUserStatement(databaseType);
+ return new MySQLRenameUserStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetDefaultRole(final SetDefaultRoleContext ctx) {
- return new MySQLSetDefaultRoleStatement(databaseType);
+ return new MySQLSetDefaultRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetRole(final SetRoleContext ctx) {
- return new SetRoleStatement(databaseType);
+ return new SetRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetPassword(final SetPasswordContext ctx) {
- return new MySQLSetPasswordStatement(databaseType);
+ return new MySQLSetPasswordStatement(getDatabaseType());
}
}
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 51bbc1c3402..dfdb2970a44 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
@@ -21,7 +21,6 @@ import com.google.common.base.Preconditions;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.AddColumnContext;
@@ -207,11 +206,13 @@ import java.util.Optional;
*/
public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
@@ -221,7 +222,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
result.setSelect((SelectStatement) visit(ctx.select()));
@@ -231,7 +232,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
@@ -239,23 +240,23 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifNotExists());
+ return new CreateDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifNotExists());
}
@Override
public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
- return new AlterDatabaseStatement(databaseType);
+ return new AlterDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
+ return new DropDatabaseStatement(getDatabaseType(), new IdentifierValue(ctx.databaseName().getText()).getValue(), null != ctx.ifExists());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
@@ -318,7 +319,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null == ctx.alterTableActions() || null == ctx.alterTableActions().alterCommandList() || null == ctx.alterTableActions().alterCommandList().alterList()) {
return result;
@@ -529,7 +530,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
TableNameContext renameTableName = ctx.tableName(i + 1);
renameTables.add(createRenameTableDefinitionSegment(tableName, renameTableName));
}
- return new RenameTableStatement(databaseType, renameTables);
+ return new RenameTableStatement(getDatabaseType(), renameTables);
}
private RenameTableDefinitionSegment createRenameTableDefinitionSegment(final TableNameContext tableName, final TableNameContext renameTableName) {
@@ -677,7 +678,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
return result;
@@ -685,13 +686,13 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ return new TruncateStatement(getDatabaseType(), Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.setIndex(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
@@ -712,7 +713,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
IndexNameSegment indexName = new IndexNameSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), new IdentifierValue(ctx.indexName().getText()));
result.getIndexes().add(new IndexSegment(ctx.indexName().start.getStartIndex(), ctx.indexName().stop.getStopIndex(), indexName));
@@ -748,7 +749,7 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- CreateProcedureStatement result = new CreateProcedureStatement(databaseType);
+ CreateProcedureStatement result = new CreateProcedureStatement(getDatabaseType());
result.setProcedureName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
@@ -765,17 +766,17 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- CreateFunctionStatement result = new CreateFunctionStatement(databaseType);
+ CreateFunctionStatement result = new CreateFunctionStatement(getDatabaseType());
result.setFunctionName((FunctionNameSegment) visit(ctx.functionName()));
result.setRoutineBody((RoutineBodySegment) visit(ctx.routineBody()));
return result;
@@ -929,77 +930,77 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateEvent(final CreateEventContext ctx) {
- return new MySQLCreateEventStatement(databaseType);
+ return new MySQLCreateEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterEvent(final AlterEventContext ctx) {
- return new MySQLAlterEventStatement(databaseType);
+ return new MySQLAlterEventStatement(getDatabaseType());
}
@Override
public ASTNode visitDropEvent(final DropEventContext ctx) {
- return new MySQLDropEventStatement(databaseType);
+ return new MySQLDropEventStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterInstance(final AlterInstanceContext ctx) {
- return new MySQLAlterInstanceStatement(databaseType);
+ return new MySQLAlterInstanceStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLogfileGroup(final CreateLogfileGroupContext ctx) {
- return new MySQLCreateLogfileGroupStatement(databaseType);
+ return new MySQLCreateLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterLogfileGroup(final AlterLogfileGroupContext ctx) {
- return new MySQLAlterLogfileGroupStatement(databaseType);
+ return new MySQLAlterLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLogfileGroup(final DropLogfileGroupContext ctx) {
- return new MySQLDropLogfileGroupStatement(databaseType);
+ return new MySQLDropLogfileGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateServer(final CreateServerContext ctx) {
- return new CreateServerStatement(databaseType);
+ return new CreateServerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterServer(final AlterServerContext ctx) {
- return new AlterServerStatement(databaseType);
+ return new AlterServerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) {
- return new DropServerStatement(databaseType);
+ return new DropServerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
- return new CreateTriggerStatement(databaseType);
+ return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
- return new DropTriggerStatement(databaseType);
+ return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
- return new CreateTablespaceStatement(databaseType);
+ return new CreateTablespaceStatement(getDatabaseType());
}
@Override
@@ -1013,13 +1014,13 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitAlterTablespaceInnodb(final AlterTablespaceInnodbContext ctx) {
- return new AlterTablespaceStatement(databaseType,
+ return new AlterTablespaceStatement(getDatabaseType(),
null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTablespace ? null : createTablespaceSegment(ctx.renameTablespace));
}
@Override
public ASTNode visitAlterTablespaceNdb(final AlterTablespaceNdbContext ctx) {
- return new AlterTablespaceStatement(databaseType,
+ return new AlterTablespaceStatement(getDatabaseType(),
null == ctx.tablespace ? null : createTablespaceSegment(ctx.tablespace), null == ctx.renameTableSpace ? null : createTablespaceSegment(ctx.renameTableSpace));
}
@@ -1029,21 +1030,21 @@ public final class MySQLDDLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
- return new DropTablespaceStatement(databaseType);
+ return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
- return new PrepareStatement(databaseType);
+ return new PrepareStatement(getDatabaseType());
}
@Override
public ASTNode visitExecuteStmt(final ExecuteStmtContext ctx) {
- return new ExecuteStatement(databaseType);
+ return new ExecuteStatement(getDatabaseType());
}
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
- return new DeallocateStatement(databaseType);
+ return new DeallocateStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java
index 558cc5cb87c..b0d02a75fb6 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLDMLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.CallContext;
@@ -67,28 +66,30 @@ import java.util.stream.Collectors;
*/
public final class MySQLDMLStatementVisitor extends MySQLStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCall(final CallContext ctx) {
String procedureName = null == ctx.owner() ? ctx.identifier().getText() : ctx.owner().getText() + "." + ctx.identifier().getText();
List<ExpressionSegment> params = ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
- return new CallStatement(databaseType, procedureName, params);
+ return new CallStatement(getDatabaseType(), procedureName, params);
}
@Override
public ASTNode visitDoStatement(final DoStatementContext ctx) {
- return new DoStatement(databaseType, ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList()));
+ return new DoStatement(getDatabaseType(), ctx.expr().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList()));
}
@Override
public ASTNode visitHandlerStatement(final HandlerStatementContext ctx) {
- return new MySQLHandlerStatement(databaseType);
+ return new MySQLHandlerStatement(getDatabaseType());
}
@Override
public ASTNode visitImportStatement(final ImportStatementContext ctx) {
- return new MySQLImportStatement(databaseType);
+ return new MySQLImportStatement(getDatabaseType());
}
@Override
@@ -98,12 +99,12 @@ public final class MySQLDMLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitLoadDataStatement(final LoadDataStatementContext ctx) {
- return new MySQLLoadDataStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLLoadDataStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
public ASTNode visitLoadXmlStatement(final LoadXmlStatementContext ctx) {
- return new MySQLLoadXMLStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()));
+ return new MySQLLoadXMLStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()));
}
@Override
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLLCLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLLCLStatementVisitor.java
index 287f05a99b5..50338a0bc07 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLLCLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLLCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.LCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.LockContext;
@@ -40,11 +39,13 @@ import java.util.List;
*/
public final class MySQLLCLStatementVisitor extends MySQLStatementVisitor implements LCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLLCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, null == ctx.tableLock() ? Collections.emptyList() : getLockTables(ctx.tableLock()));
+ return new LockStatement(getDatabaseType(), null == ctx.tableLock() ? Collections.emptyList() : getLockTables(ctx.tableLock()));
}
private Collection<SimpleTableSegment> getLockTables(final List<TableLockContext> tableLockContexts) {
@@ -61,6 +62,6 @@ public final class MySQLLCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitUnlock(final UnlockContext ctx) {
- return new UnlockStatement(databaseType);
+ return new UnlockStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLTCLStatementVisitor.java b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLTCLStatementVisitor.java
index 313933e5f11..606c153567b 100644
--- a/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLTCLStatementVisitor.java
+++ b/parser/sql/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/mysql/visitor/statement/type/MySQLTCLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.mysql.visitor.statement.type;
import org.antlr.v4.runtime.Token;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.MySQLStatementParser.BeginTransactionContext;
@@ -63,11 +62,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.Iden
*/
public final class MySQLTCLStatementVisitor extends MySQLStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ public MySQLTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType, getOperationScope(ctx.optionType()),
+ return new SetTransactionStatement(getDatabaseType(), getOperationScope(ctx.optionType()),
getTransactionIsolationLevel(null == ctx.transactionCharacteristics().isolationLevel() ? null : ctx.transactionCharacteristics().isolationLevel().isolationTypes()),
getTransactionAccessType(ctx.transactionCharacteristics().transactionAccessMode()));
}
@@ -119,7 +120,7 @@ public final class MySQLTCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitSetAutoCommit(final SetAutoCommitContext ctx) {
- return new SetAutoCommitStatement(databaseType, generateAutoCommitSegment(ctx.autoCommitValue).isAutoCommit());
+ return new SetAutoCommitStatement(getDatabaseType(), generateAutoCommitSegment(ctx.autoCommitValue).isAutoCommit());
}
private AutoCommitSegment generateAutoCommitSegment(final Token ctx) {
@@ -129,56 +130,56 @@ public final class MySQLTCLStatementVisitor extends MySQLStatementVisitor implem
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return null == ctx.identifier() ? new RollbackStatement(databaseType) : new RollbackStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return null == ctx.identifier() ? new RollbackStatement(getDatabaseType()) : new RollbackStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return new SavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
- return new ReleaseSavepointStatement(databaseType, ((IdentifierValue) visit(ctx.identifier())).getValue());
+ return new ReleaseSavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.identifier())).getValue());
}
@Override
public ASTNode visitXaBegin(final XaBeginContext ctx) {
- return new XABeginStatement(databaseType, ctx.xid().getText());
+ return new XABeginStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaPrepare(final XaPrepareContext ctx) {
- return new XAPrepareStatement(databaseType, ctx.xid().getText());
+ return new XAPrepareStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaCommit(final XaCommitContext ctx) {
- return new XACommitStatement(databaseType, ctx.xid().getText());
+ return new XACommitStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRollback(final XaRollbackContext ctx) {
- return new XARollbackStatement(databaseType, ctx.xid().getText());
+ return new XARollbackStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaEnd(final XaEndContext ctx) {
- return new XAEndStatement(databaseType, ctx.xid().getText());
+ return new XAEndStatement(getDatabaseType(), ctx.xid().getText());
}
@Override
public ASTNode visitXaRecovery(final XaRecoveryContext ctx) {
- return new XARecoveryStatement(databaseType);
+ return new XARecoveryStatement(getDatabaseType());
}
}
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 5e4b1d26164..e1d00d3885b 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
@@ -19,13 +19,13 @@ package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AExprContext;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AexprConstContext;
@@ -215,10 +215,11 @@ import java.util.Optional;
/**
* Statement visitor for openGauss.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class OpenGaussStatementVisitor extends OpenGaussStatementParserBaseVisitor<ASTNode> {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java
index 978b6911534..9eb4f7d9987 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AnalyzeTableContext;
@@ -62,23 +61,25 @@ import java.util.List;
*/
public final class OpenGaussDALStatementVisitor extends OpenGaussStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitShow(final ShowContext ctx) {
if (null != ctx.varName()) {
- return new ShowStatement(databaseType, ctx.varName().getText());
+ return new ShowStatement(getDatabaseType(), ctx.varName().getText());
}
if (null != ctx.ZONE()) {
- return new ShowStatement(databaseType, "timezone");
+ return new ShowStatement(getDatabaseType(), "timezone");
}
if (null != ctx.ISOLATION()) {
- return new ShowStatement(databaseType, "transaction_isolation");
+ return new ShowStatement(getDatabaseType(), "transaction_isolation");
}
if (null != ctx.AUTHORIZATION()) {
- return new ShowStatement(databaseType, "session_authorization");
+ return new ShowStatement(getDatabaseType(), "session_authorization");
}
- return new ShowStatement(databaseType, "ALL");
+ return new ShowStatement(getDatabaseType(), "ALL");
}
@Override
@@ -91,7 +92,7 @@ public final class OpenGaussDALStatementVisitor extends OpenGaussStatementVisito
}
variableAssigns.add(variableAssignSegment);
}
- return new SetStatement(databaseType, variableAssigns);
+ return new SetStatement(getDatabaseType(), variableAssigns);
}
@Override
@@ -112,13 +113,14 @@ public final class OpenGaussDALStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitResetParameter(final ResetParameterContext ctx) {
- return new PostgreSQLResetParameterStatement(databaseType, null == ctx.ALL() ? ctx.identifier().getText() : "ALL");
+ return new PostgreSQLResetParameterStatement(getDatabaseType(), null == ctx.ALL() ? ctx.identifier().getText() : "ALL");
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
- return new AnalyzeTableStatement(databaseType, null == ctx.vacuumRelationList() ? Collections.emptyList() : ((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue());
+ return new AnalyzeTableStatement(getDatabaseType(),
+ null == ctx.vacuumRelationList() ? Collections.emptyList() : ((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue());
}
@Override
@@ -134,17 +136,17 @@ public final class OpenGaussDALStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitLoad(final LoadContext ctx) {
- return new PostgreSQLLoadStatement(databaseType);
+ return new PostgreSQLLoadStatement(getDatabaseType());
}
@Override
public ASTNode visitVacuum(final VacuumContext ctx) {
- return new PostgreSQLVacuumStatement(databaseType);
+ return new PostgreSQLVacuumStatement(getDatabaseType());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
- return new ExplainStatement(databaseType, (SQLStatement) visit(ctx.explainableStmt()));
+ return new ExplainStatement(getDatabaseType(), (SQLStatement) visit(ctx.explainableStmt()));
}
@Override
@@ -178,11 +180,11 @@ public final class OpenGaussDALStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitCheckpoint(final CheckpointContext ctx) {
- return new PostgreSQLCheckpointStatement(databaseType);
+ return new PostgreSQLCheckpointStatement(getDatabaseType());
}
@Override
public ASTNode visitEmptyStatement(final EmptyStatementContext ctx) {
- return new EmptyStatement(databaseType);
+ return new EmptyStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
index 580673c4a92..8798694ff16 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AlterRoleContext;
@@ -50,11 +49,13 @@ import java.util.Collections;
*/
public final class OpenGaussDCLStatementVisitor extends OpenGaussStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- GrantStatement result = new GrantStatement(databaseType);
+ GrantStatement result = new GrantStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
@@ -63,7 +64,7 @@ public final class OpenGaussDCLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(databaseType);
+ RevokeStatement result = new RevokeStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
@@ -81,31 +82,31 @@ public final class OpenGaussDCLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- return new CreateUserStatement(databaseType);
+ return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, Collections.emptyList());
+ return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, null);
+ return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
- return new AlterRoleStatement(databaseType);
+ return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
}
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 431cf7e093a..b50d13e0f09 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
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AbsoluteCountContext;
@@ -263,12 +262,14 @@ import java.util.stream.Collectors;
*/
public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
@@ -301,7 +302,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableNameClause().tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
@@ -331,12 +332,12 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterAggregate(final AlterAggregateContext ctx) {
- return new PostgreSQLAlterAggregateStatement(databaseType);
+ return new PostgreSQLAlterAggregateStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDefaultPrivileges(final AlterDefaultPrivilegesContext ctx) {
- return new PostgreSQLAlterDefaultPrivilegesStatement(databaseType);
+ return new PostgreSQLAlterDefaultPrivilegesStatement(getDatabaseType());
}
@Override
@@ -383,22 +384,22 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterForeignTable(final AlterForeignTableContext ctx) {
- return new PostgreSQLAlterForeignTableStatement(databaseType);
+ return new PostgreSQLAlterForeignTableStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterGroup(final AlterGroupContext ctx) {
- return new PostgreSQLAlterGroupStatement(databaseType);
+ return new PostgreSQLAlterGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterPackage(final AlterPackageContext ctx) {
- return new AlterPackageStatement(databaseType);
+ return new AlterPackageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterMaterializedView(final AlterMaterializedViewContext ctx) {
- return new AlterMaterializedViewStatement(databaseType);
+ return new AlterMaterializedViewStatement(getDatabaseType());
}
@Override
@@ -423,7 +424,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterDomain(final AlterDomainContext ctx) {
- return new AlterDomainStatement(databaseType);
+ return new AlterDomainStatement(getDatabaseType());
}
@Override
@@ -516,7 +517,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
boolean containsCascade = null != ctx.dropTableOpt() && null != ctx.dropTableOpt().CASCADE();
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.setContainsCascade(containsCascade);
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
@@ -526,13 +527,13 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
+ return new TruncateStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setIfNotExists(null != ctx.ifNotExists());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.getColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.indexParams())).getValue());
@@ -583,7 +584,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new AlterIndexStatement(databaseType);
+ AlterIndexStatement result = new AlterIndexStatement(getDatabaseType());
result.setIndex(createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())));
if (null != ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
result.setRenameIndex((IndexSegment) visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
@@ -601,7 +602,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue()));
return result;
@@ -642,33 +643,33 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(databaseType);
+ return new CreateFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- return new CreateProcedureStatement(databaseType);
+ return new CreateProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue());
return result;
@@ -676,7 +677,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
result.setViewDefinition(getOriginalText(ctx.select()));
@@ -686,7 +687,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
@@ -698,73 +699,73 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, ((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
+ return new DropDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) {
- return new DropServerStatement(databaseType);
+ return new DropServerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropPublication(final DropPublicationContext ctx) {
- return new PostgreSQLDropPublicationStatement(databaseType);
+ return new PostgreSQLDropPublicationStatement(getDatabaseType());
}
@Override
public ASTNode visitDropCast(final DropCastContext ctx) {
- return new PostgreSQLDropCastStatement(databaseType);
+ return new PostgreSQLDropCastStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRule(final DropRuleContext ctx) {
- return new PostgreSQLDropRuleStatement(databaseType);
+ return new PostgreSQLDropRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, ((IdentifierValue) visit(ctx.name())).getValue(), false);
+ return new CreateDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), false);
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
- return new CreateSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
+ return new CreateSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
- return new AlterSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
+ return new AlterSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
- return new DropSequenceStatement(databaseType, ((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
+ return new DropSequenceStatement(getDatabaseType(), ((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
}
@Override
public ASTNode visitDropSynonym(final DropSynonymContext ctx) {
- return new DropSynonymStatement(databaseType);
+ return new DropSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitDropType(final DropTypeContext ctx) {
- return new DropTypeStatement(databaseType);
+ return new DropTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDirectory(final DropDirectoryContext ctx) {
- return new DropDirectoryStatement(databaseType);
+ return new DropDirectoryStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
- PrepareStatement result = new PrepareStatement(databaseType);
+ PrepareStatement result = new PrepareStatement(getDatabaseType());
if (null != ctx.preparableStmt().select()) {
result.setSelect((SelectStatement) visit(ctx.preparableStmt().select()));
}
@@ -782,67 +783,67 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
- return new DeallocateStatement(databaseType);
+ return new DeallocateStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSynonym(final CreateSynonymContext ctx) {
- return new CreateSynonymStatement(databaseType);
+ return new CreateSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateAggregate(final CreateAggregateContext ctx) {
- return new PostgreSQLCreateAggregateStatement(databaseType);
+ return new PostgreSQLCreateAggregateStatement(getDatabaseType());
}
@Override
public ASTNode visitCreatePublication(final CreatePublicationContext ctx) {
- return new PostgreSQLCreatePublicationStatement(databaseType);
+ return new PostgreSQLCreatePublicationStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDirectory(final CreateDirectoryContext ctx) {
- return new CreateDirectoryStatement(databaseType);
+ return new CreateDirectoryStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
- return new CreateTablespaceStatement(databaseType);
+ return new CreateTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
- return new AlterTablespaceStatement(databaseType, null, null);
+ return new AlterTablespaceStatement(getDatabaseType(), null, null);
}
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
- return new DropTablespaceStatement(databaseType);
+ return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDomain(final DropDomainContext ctx) {
- return new DropDomainStatement(databaseType);
+ return new DropDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDomain(final CreateDomainContext ctx) {
- return new CreateDomainStatement(databaseType);
+ return new CreateDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRule(final CreateRuleContext ctx) {
- return new PostgreSQLCreateRuleStatement(databaseType);
+ return new PostgreSQLCreateRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLanguage(final CreateLanguageContext ctx) {
- return new PostgreSQLCreateLanguageStatement(databaseType);
+ return new PostgreSQLCreateLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
- CreateSchemaStatement result = new CreateSchemaStatement(databaseType);
+ CreateSchemaStatement result = new CreateSchemaStatement(getDatabaseType());
if (null != ctx.createSchemaClauses().colId()) {
result.setSchemaName(new IdentifierValue(ctx.createSchemaClauses().colId().getText()));
}
@@ -854,7 +855,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
- AlterSchemaStatement result = new AlterSchemaStatement(databaseType);
+ AlterSchemaStatement result = new AlterSchemaStatement(getDatabaseType());
result.setSchemaName((IdentifierValue) visit(ctx.name().get(0)));
if (ctx.name().size() > 1) {
result.setRenameSchema((IdentifierValue) visit(ctx.name().get(1)));
@@ -865,7 +866,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropSchema(final DropSchemaContext ctx) {
- DropSchemaStatement result = new DropSchemaStatement(databaseType);
+ DropSchemaStatement result = new DropSchemaStatement(getDatabaseType());
result.getSchemaNames().addAll(((CollectionValue<IdentifierValue>) visit(ctx.nameList())).getValue());
result.setContainsCascade(null != ctx.dropBehavior() && null != ctx.dropBehavior().CASCADE());
return result;
@@ -886,97 +887,97 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitAlterLanguage(final AlterLanguageContext ctx) {
- return new PostgreSQLAlterLanguageStatement(databaseType);
+ return new PostgreSQLAlterLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSynonym(final AlterSynonymContext ctx) {
- return new AlterSynonymStatement(databaseType);
+ return new AlterSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDirectory(final AlterDirectoryContext ctx) {
- return new AlterDirectoryStatement(databaseType);
+ return new AlterDirectoryStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRule(final AlterRuleContext ctx) {
- return new PostgreSQLAlterRuleStatement(databaseType);
+ return new PostgreSQLAlterRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterType(final AlterTypeContext ctx) {
- return new AlterTypeStatement(databaseType);
+ return new AlterTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLanguage(final DropLanguageContext ctx) {
- return new PostgreSQLDropLanguageStatement(databaseType);
+ return new PostgreSQLDropLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateConversion(final CreateConversionContext ctx) {
- return new PostgreSQLCreateConversionStatement(databaseType);
+ return new PostgreSQLCreateConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateCast(final CreateCastContext ctx) {
- return new PostgreSQLCreateCastStatement(databaseType);
+ return new PostgreSQLCreateCastStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateType(final CreateTypeContext ctx) {
- return new CreateTypeStatement(databaseType);
+ return new CreateTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitDropConversion(final DropConversionContext ctx) {
- return new PostgreSQLDropConversionStatement(databaseType);
+ return new PostgreSQLDropConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterConversion(final AlterConversionContext ctx) {
- return new PostgreSQLAlterConversionStatement(databaseType);
+ return new PostgreSQLAlterConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTextSearch(final CreateTextSearchContext ctx) {
- return new PostgreSQLCreateTextSearchStatement(databaseType);
+ return new PostgreSQLCreateTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchDictionary(final AlterTextSearchDictionaryContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchTemplate(final AlterTextSearchTemplateContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchParser(final AlterTextSearchParserContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateExtension(final CreateExtensionContext ctx) {
- return new PostgreSQLCreateExtensionStatement(databaseType);
+ return new PostgreSQLCreateExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterExtension(final AlterExtensionContext ctx) {
- return new PostgreSQLAlterExtensionStatement(databaseType);
+ return new PostgreSQLAlterExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropExtension(final DropExtensionContext ctx) {
- return new PostgreSQLDropExtensionStatement(databaseType);
+ return new PostgreSQLDropExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDeclare(final DeclareContext ctx) {
- return new PostgreSQLDeclareStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
+ return new PostgreSQLDeclareStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
}
@Override
@@ -987,12 +988,12 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
if (null != ctx.commentClauses().COLUMN()) {
return commentOnColumn(ctx);
}
- return new CommentStatement(databaseType);
+ return new CommentStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnColumn(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
columnName.ifPresent(optional -> result.setColumn(new ColumnSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
@@ -1003,7 +1004,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@SuppressWarnings("unchecked")
private CommentStatement commentOnTable(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
setTableSegment(result, nameSegmentIterator);
@@ -1022,7 +1023,7 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitCursor(final CursorContext ctx) {
- return new CursorStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
+ return new CursorStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
}
@Override
@@ -1032,17 +1033,17 @@ public final class OpenGaussDDLStatementVisitor extends OpenGaussStatementVisito
@Override
public ASTNode visitClose(final CloseContext ctx) {
- return new CloseStatement(databaseType, null == ctx.cursorName() ? null : (CursorNameSegment) visit(ctx.cursorName()), null != ctx.ALL());
+ return new CloseStatement(getDatabaseType(), null == ctx.cursorName() ? null : (CursorNameSegment) visit(ctx.cursorName()), null != ctx.ALL());
}
@Override
public ASTNode visitMove(final MoveContext ctx) {
- return new MoveStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
+ return new MoveStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
}
@Override
public ASTNode visitFetch(final FetchContext ctx) {
- return new FetchStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
+ return new FetchStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
}
@Override
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDMLStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDMLStatementVisitor.java
index f7f701498bf..5e1162c087a 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDMLStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussDMLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.CallContext;
@@ -40,21 +39,23 @@ import java.util.Collections;
*/
public final class OpenGaussDMLStatementVisitor extends OpenGaussStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCall(final CallContext ctx) {
- return new CallStatement(databaseType, null, Collections.emptyList());
+ return new CallStatement(getDatabaseType(), null, Collections.emptyList());
}
@Override
public ASTNode visitDoStatement(final DoStatementContext ctx) {
- return new DoStatement(databaseType, Collections.emptyList());
+ return new DoStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitCopy(final CopyContext ctx) {
- return new PostgreSQLCopyStatement(databaseType, null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()), Collections.emptyList(), null);
+ return new PostgreSQLCopyStatement(getDatabaseType(), null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()), Collections.emptyList(), null);
}
@Override
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussLCLStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussLCLStatementVisitor.java
index 9bd49d86660..6a2a16a138d 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussLCLStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussLCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.LCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.LockContext;
@@ -36,11 +35,13 @@ import java.util.stream.Collectors;
*/
public final class OpenGaussLCLStatementVisitor extends OpenGaussStatementVisitor implements LCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussLCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, null == ctx.relationExprList() ? Collections.emptyList() : getLockTables(ctx.relationExprList().relationExpr()));
+ return new LockStatement(getDatabaseType(), null == ctx.relationExprList() ? Collections.emptyList() : getLockTables(ctx.relationExprList().relationExpr()));
}
private Collection<SimpleTableSegment> getLockTables(final Collection<RelationExprContext> relationExprContexts) {
diff --git a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussTCLStatementVisitor.java b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussTCLStatementVisitor.java
index b7081855e34..8dbf2ca1127 100644
--- a/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussTCLStatementVisitor.java
+++ b/parser/sql/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/opengauss/visitor/statement/type/OpenGaussTCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.opengauss.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OpenGaussStatementParser.AbortContext;
@@ -50,70 +49,72 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa
*/
public final class OpenGaussTCLStatementVisitor extends OpenGaussStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "openGauss");
+ public OpenGaussTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType);
+ return new SetTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitAbort(final AbortContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, ctx.colId().getText());
+ return new SavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitRollbackToSavepoint(final RollbackToSavepointContext ctx) {
- return new RollbackStatement(databaseType, ctx.colId().getText());
+ return new RollbackStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
- return new ReleaseSavepointStatement(databaseType, ctx.colId().getText());
+ return new ReleaseSavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitStartTransaction(final StartTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitEnd(final EndContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitSetConstraints(final SetConstraintsContext ctx) {
- return new SetConstraintsStatement(databaseType);
+ return new SetConstraintsStatement(getDatabaseType());
}
@Override
public ASTNode visitCommitPrepared(final CommitPreparedContext ctx) {
- return new XACommitStatement(databaseType, ctx.gid().getText());
+ return new XACommitStatement(getDatabaseType(), ctx.gid().getText());
}
@Override
public ASTNode visitRollbackPrepared(final RollbackPreparedContext ctx) {
- return new XARollbackStatement(databaseType, ctx.gid().getText());
+ return new XARollbackStatement(getDatabaseType(), ctx.gid().getText());
}
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
index a6d9fcfc834..0138f777178 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/OracleStatementVisitor.java
@@ -18,11 +18,13 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AggregationFunctionContext;
@@ -107,10 +109,6 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.XmlSer
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.XmlTableColumnContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.XmlTableFunctionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.XmlTableOptionsContext;
-import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.CursorForLoopStatementSegment;
-import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.ProcedureBodyEndNameSegment;
-import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.ProcedureCallNameSegment;
-import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.SQLStatementSegment;
import org.apache.shardingsphere.sql.parser.statement.core.enums.AggregationType;
import org.apache.shardingsphere.sql.parser.statement.core.enums.OrderDirection;
import org.apache.shardingsphere.sql.parser.statement.core.enums.ParameterMarkerType;
@@ -164,6 +162,10 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.Owner
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.ParameterMarkerSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.CursorForLoopStatementSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.ProcedureBodyEndNameSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.ProcedureCallNameSegment;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.procedure.SQLStatementSegment;
import org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
import org.apache.shardingsphere.sql.parser.statement.core.util.SQLUtils;
@@ -192,9 +194,12 @@ import java.util.stream.Collectors;
/**
* Statement visitor for Oracle.
*/
+@RequiredArgsConstructor
@Getter
public abstract class OracleStatementVisitor extends OracleStatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> globalParameterMarkerSegments = new LinkedList<>();
private final Collection<ParameterMarkerSegment> statementParameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java
index 666c37f9027..72d0f254b7d 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterResourceCostContext;
@@ -40,19 +39,21 @@ import java.util.Optional;
*/
public final class OracleDALStatementVisitor extends OracleStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitAlterResourceCost(final AlterResourceCostContext ctx) {
- return new OracleAlterResourceCostStatement(databaseType);
+ return new OracleAlterResourceCostStatement(getDatabaseType());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
- OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor();
+ OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor(getDatabaseType());
getGlobalParameterMarkerSegments().addAll(visitor.getGlobalParameterMarkerSegments());
getStatementParameterMarkerSegments().addAll(visitor.getStatementParameterMarkerSegments());
- ExplainStatement result = new ExplainStatement(databaseType, getExplainableSQLStatement(ctx, visitor).orElse(null));
+ ExplainStatement result = new ExplainStatement(getDatabaseType(), getExplainableSQLStatement(ctx, visitor).orElse(null));
result.addParameterMarkers(ctx.getParent() instanceof ExecuteContext ? getGlobalParameterMarkerSegments() : popAllStatementParameterMarkerSegments());
result.getVariableNames().addAll(getVariableNames());
return result;
@@ -76,11 +77,11 @@ public final class OracleDALStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitShow(final ShowContext ctx) {
- return new ShowStatement(databaseType, "");
+ return new ShowStatement(getDatabaseType(), "");
}
@Override
public ASTNode visitSpool(final SpoolContext ctx) {
- return new OracleSpoolStatement(databaseType, null == ctx.spoolFileName() ? null : ctx.spoolFileName().getText());
+ return new OracleSpoolStatement(getDatabaseType(), null == ctx.spoolFileName() ? null : ctx.spoolFileName().getText());
}
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDCLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
index e2ac62f242d..91cb097f794 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterRoleContext;
@@ -49,11 +48,13 @@ import java.util.Collections;
*/
public final class OracleDCLStatementVisitor extends OracleStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- GrantStatement result = new GrantStatement(databaseType);
+ GrantStatement result = new GrantStatement(getDatabaseType());
if (null != ctx.objectPrivilegeClause() && null != ctx.objectPrivilegeClause().onObjectClause().tableName()) {
result.getTables().add((SimpleTableSegment) visit(ctx.objectPrivilegeClause().onObjectClause().tableName()));
}
@@ -62,7 +63,7 @@ public final class OracleDCLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(databaseType);
+ RevokeStatement result = new RevokeStatement(getDatabaseType());
if (null != ctx.objectPrivilegeClause() && null != ctx.objectPrivilegeClause().onObjectClause().tableName()) {
result.getTables().add((SimpleTableSegment) visit(ctx.objectPrivilegeClause().onObjectClause().tableName()));
}
@@ -71,36 +72,36 @@ public final class OracleDCLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- return new CreateUserStatement(databaseType);
+ return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, Collections.emptyList());
+ return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, null);
+ return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
- return new AlterRoleStatement(databaseType);
+ return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitSetRole(final SetRoleContext ctx) {
- return new SetRoleStatement(databaseType);
+ return new SetRoleStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index e5ac1ee67e3..06e9747c136 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AddColumnSpecificationContext;
@@ -370,13 +369,15 @@ import java.util.stream.Collectors;
*/
public final class OracleDDLStatementVisitor extends OracleStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
- OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor();
+ OracleDMLStatementVisitor visitor = new OracleDMLStatementVisitor(getDatabaseType());
getGlobalParameterMarkerSegments().addAll(visitor.getGlobalParameterMarkerSegments());
getStatementParameterMarkerSegments().addAll(visitor.getStatementParameterMarkerSegments());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
@@ -389,7 +390,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
@@ -411,7 +412,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
TypeSegment typeSegment = (TypeSegment) visit(ctx.plsqlTypeSource().typeName());
if (null != ctx.plsqlTypeSource().objectSubTypeDef()) {
ObjectSubTypeDefContext objectSubTypeDefContext = ctx.plsqlTypeSource().objectSubTypeDef();
- return new OracleCreateSubTypeStatement(databaseType, isReplace, isEditionable,
+ return new OracleCreateSubTypeStatement(getDatabaseType(), isReplace, isEditionable,
null == objectSubTypeDefContext.finalClause() || null == objectSubTypeDefContext.finalClause().NOT(),
null == objectSubTypeDefContext.instantiableClause() || null == objectSubTypeDefContext.instantiableClause().NOT(),
typeSegment,
@@ -424,13 +425,13 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
private ASTNode visitCreateTypeObjectBaseTypeDef(final ObjectBaseTypeDefContext ctx, final boolean isReplace, final boolean isEditionable, final TypeSegment typeSegment) {
if (null != ctx.objectTypeDef()) {
ObjectTypeDefContext objectTypeDefContext = ctx.objectTypeDef();
- return new OracleCreateObjectTypeStatement(databaseType, isReplace, isEditionable, null == objectTypeDefContext.finalClause() || null == objectTypeDefContext.finalClause().NOT(),
+ return new OracleCreateObjectTypeStatement(getDatabaseType(), isReplace, isEditionable, null == objectTypeDefContext.finalClause() || null == objectTypeDefContext.finalClause().NOT(),
null == objectTypeDefContext.instantiableClause() || null == objectTypeDefContext.instantiableClause().NOT(),
null == objectTypeDefContext.persistableClause() || null == objectTypeDefContext.persistableClause().NOT(),
typeSegment, objectTypeDefContext.dataTypeDefinition().stream().map(definition -> (TypeDefinitionSegment) visit(definition)).collect(Collectors.toList()));
} else if (null != ctx.varrayTypeSpec()) {
VarrayTypeSpecContext varrayTypeSpecContext = ctx.varrayTypeSpec();
- return new OracleCreateVarrayTypeStatement(databaseType, isReplace, isEditionable,
+ return new OracleCreateVarrayTypeStatement(getDatabaseType(), isReplace, isEditionable,
null == varrayTypeSpecContext.INTEGER_() ? -1 : Integer.parseInt(varrayTypeSpecContext.INTEGER_().getText()),
null != varrayTypeSpecContext.typeSpec().NULL(),
null == varrayTypeSpecContext.typeSpec().persistableClause() || null == varrayTypeSpecContext.typeSpec().persistableClause().NOT(),
@@ -438,7 +439,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
(DataTypeSegment) visit(varrayTypeSpecContext.typeSpec().dataType()));
} else {
NestedTableTypeSpecContext nestedTableTypeSpecContext = ctx.nestedTableTypeSpec();
- return new OracleCreateNestedTableTypeStatement(databaseType, isReplace, isEditionable,
+ return new OracleCreateNestedTableTypeStatement(getDatabaseType(), isReplace, isEditionable,
null != nestedTableTypeSpecContext.typeSpec().NULL(),
null == nestedTableTypeSpecContext.typeSpec().persistableClause() || null == nestedTableTypeSpecContext.typeSpec().persistableClause().NOT(),
typeSegment,
@@ -540,7 +541,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
@@ -566,7 +567,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
- return new AlterTablespaceStatement(databaseType,
+ return new AlterTablespaceStatement(getDatabaseType(),
null == ctx.tablespaceName() ? null
: new TablespaceSegment(
ctx.tablespaceName().getStart().getStartIndex(), ctx.tablespaceName().getStop().getStopIndex(), (IdentifierValue) visit(ctx.tablespaceName())),
@@ -725,34 +726,34 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitDropContext(final DropContextContext ctx) {
- return new OracleDropContextStatement(databaseType);
+ return new OracleDropContextStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.getTables().add((SimpleTableSegment) visit(ctx.tableName()));
return result;
}
@Override
public ASTNode visitDropDatabaseLink(final DropDatabaseLinkContext ctx) {
- return new OracleDropDatabaseLinkStatement(databaseType);
+ return new OracleDropDatabaseLinkStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDatabaseLink(final AlterDatabaseLinkContext ctx) {
- return new OracleAlterDatabaseLinkStatement(databaseType);
+ return new OracleAlterDatabaseLinkStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDatabaseDictionary(final AlterDatabaseDictionaryContext ctx) {
- return new OracleAlterDatabaseDictionaryStatement(databaseType);
+ return new OracleAlterDatabaseDictionaryStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setConstraintDefinition((ConstraintDefinitionSegment) getAlterViewConstraintDefinition(ctx));
return result;
@@ -771,65 +772,65 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitDropPackage(final DropPackageContext ctx) {
- return new DropPackageStatement(databaseType);
+ return new DropPackageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterPackage(final AlterPackageContext ctx) {
- return new AlterPackageStatement(databaseType);
+ return new AlterPackageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSynonym(final CreateSynonymContext ctx) {
- return new CreateSynonymStatement(databaseType);
+ return new CreateSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitDropSynonym(final DropSynonymContext ctx) {
- return new DropSynonymStatement(databaseType);
+ return new DropSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDirectory(final CreateDirectoryContext ctx) {
- return new CreateDirectoryStatement(databaseType);
+ return new CreateDirectoryStatement(getDatabaseType());
}
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.getViews().add((SimpleTableSegment) visit(ctx.viewName()));
return result;
}
@Override
public ASTNode visitCreateEdition(final CreateEditionContext ctx) {
- return new OracleCreateEditionStatement(databaseType);
+ return new OracleCreateEditionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
- return new DropTriggerStatement(databaseType);
+ return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
- return new CreateTriggerStatement(databaseType);
+ return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
- return new AlterTriggerStatement(databaseType);
+ return new AlterTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ return new TruncateStatement(getDatabaseType(), Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
if (null != ctx.createIndexDefinitionClause().tableIndexClause()) {
result.setTable((SimpleTableSegment) visit(ctx.createIndexDefinitionClause().tableIndexClause().tableName()));
result.getColumns().addAll(((CollectionValue) visit(ctx.createIndexDefinitionClause().tableIndexClause().indexExpressions())).getValue());
@@ -867,47 +868,47 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new AlterIndexStatement(databaseType);
+ AlterIndexStatement result = new AlterIndexStatement(getDatabaseType());
result.setIndex((IndexSegment) visit(ctx.indexName()));
return result;
}
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
return result;
}
@Override
public ASTNode visitAlterSynonym(final AlterSynonymContext ctx) {
- return new AlterSynonymStatement(databaseType);
+ return new AlterSynonymStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSession(final AlterSessionContext ctx) {
- return new OracleAlterSessionStatement(databaseType);
+ return new OracleAlterSessionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
- return new AlterDatabaseStatement(databaseType);
+ return new AlterDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSystem(final AlterSystemContext ctx) {
- return new OracleAlterSystemStatement(databaseType);
+ return new OracleAlterSystemStatement(getDatabaseType());
}
@Override
public ASTNode visitAnalyze(final AnalyzeContext ctx) {
- return new OracleAnalyzeStatement(databaseType, null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
+ return new OracleAnalyzeStatement(getDatabaseType(), null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
null == ctx.indexName() ? null : (IndexSegment) visit(ctx.indexName()));
}
@Override
public ASTNode visitAssociateStatistics(final AssociateStatisticsContext ctx) {
- OracleAssociateStatisticsStatement result = new OracleAssociateStatisticsStatement(databaseType);
+ OracleAssociateStatisticsStatement result = new OracleAssociateStatisticsStatement(getDatabaseType());
if (null != ctx.columnAssociation()) {
for (TableNameContext each : ctx.columnAssociation().tableName()) {
result.getTables().add((SimpleTableSegment) visit(each));
@@ -938,7 +939,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitDisassociateStatistics(final DisassociateStatisticsContext ctx) {
- OracleDisassociateStatisticsStatement result = new OracleDisassociateStatisticsStatement(databaseType);
+ OracleDisassociateStatisticsStatement result = new OracleDisassociateStatisticsStatement(getDatabaseType());
if (null != ctx.tableName()) {
for (TableNameContext each : ctx.tableName()) {
result.getTables().add((SimpleTableSegment) visit(each));
@@ -982,22 +983,22 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitAuditTraditional(final AuditTraditionalContext ctx) {
- return new OracleAuditStatement(databaseType);
+ return new OracleAuditStatement(getDatabaseType());
}
@Override
public ASTNode visitAuditUnified(final AuditUnifiedContext ctx) {
- return new OracleAuditStatement(databaseType);
+ return new OracleAuditStatement(getDatabaseType());
}
@Override
public ASTNode visitNoAudit(final NoAuditContext ctx) {
- return new OracleNoAuditStatement(databaseType);
+ return new OracleNoAuditStatement(getDatabaseType());
}
@Override
public ASTNode visitComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
if (null != ctx.tableName()) {
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
}
@@ -1013,54 +1014,54 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitFlashbackDatabase(final FlashbackDatabaseContext ctx) {
- return new OracleFlashbackDatabaseStatement(databaseType);
+ return new OracleFlashbackDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitFlashbackTable(final FlashbackTableContext ctx) {
- return new OracleFlashbackTableStatement(databaseType, (SimpleTableSegment) visit(ctx.tableName()),
+ return new OracleFlashbackTableStatement(getDatabaseType(), (SimpleTableSegment) visit(ctx.tableName()),
null == ctx.renameToTable() ? null : (SimpleTableSegment) visit(ctx.renameToTable().tableName()));
}
@Override
public ASTNode visitPurge(final PurgeContext ctx) {
- return new OraclePurgeStatement(databaseType, null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
+ return new OraclePurgeStatement(getDatabaseType(), null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
null == ctx.indexName() ? null : (IndexSegment) visit(ctx.indexName()));
}
@Override
public ASTNode visitRename(final RenameContext ctx) {
- return new OracleRenameStatement(databaseType);
+ return new OracleRenameStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, null, false);
+ return new CreateDatabaseStatement(getDatabaseType(), null, false);
}
@Override
public ASTNode visitCreateDatabaseLink(final CreateDatabaseLinkContext ctx) {
- return new OracleCreateDatabaseLinkStatement(databaseType);
+ return new OracleCreateDatabaseLinkStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDimension(final CreateDimensionContext ctx) {
- return new OracleCreateDimensionStatement(databaseType);
+ return new OracleCreateDimensionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDimension(final AlterDimensionContext ctx) {
- return new OracleAlterDimensionStatement(databaseType);
+ return new OracleAlterDimensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDimension(final DropDimensionContext ctx) {
- return new OracleDropDimensionStatement(databaseType);
+ return new OracleDropDimensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDirectory(final DropDirectoryContext ctx) {
- return new DropDirectoryStatement(databaseType);
+ return new DropDirectoryStatement(getDatabaseType());
}
@Override
@@ -1078,7 +1079,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
getSqlStatementsInPlsql().sort(Comparator.comparingInt(SQLStatementSegment::getStartIndex));
getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
- OracleCreateFunctionStatement result = new OracleCreateFunctionStatement(databaseType, getSqlStatementsInPlsql(), getProcedureCallNames());
+ OracleCreateFunctionStatement result = new OracleCreateFunctionStatement(getDatabaseType(), getSqlStatementsInPlsql(), getProcedureCallNames());
result.setFunctionName(visitFunctionName(ctx.plsqlFunctionSource()));
result.getDynamicSqlStatementExpressions().addAll(getDynamicSqlStatementExpressions());
return result;
@@ -1098,227 +1099,227 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitDropEdition(final DropEditionContext ctx) {
- return new OracleDropEditionStatement(databaseType);
+ return new OracleDropEditionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropOutline(final DropOutlineContext ctx) {
- return new OracleDropOutlineStatement(databaseType);
+ return new OracleDropOutlineStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterOutline(final AlterOutlineContext ctx) {
- return new OracleAlterOutlineStatement(databaseType);
+ return new OracleAlterOutlineStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterAnalyticView(final AlterAnalyticViewContext ctx) {
- return new OracleAlterAnalyticViewStatement(databaseType);
+ return new OracleAlterAnalyticViewStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterAttributeDimension(final AlterAttributeDimensionContext ctx) {
- return new OracleAlterAttributeDimensionStatement(databaseType);
+ return new OracleAlterAttributeDimensionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
- return new CreateSequenceStatement(databaseType, ctx.sequenceName().getText());
+ return new CreateSequenceStatement(getDatabaseType(), ctx.sequenceName().getText());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
- return new AlterSequenceStatement(databaseType, null);
+ return new AlterSequenceStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateContext(final CreateContextContext ctx) {
- return new OracleCreateContextStatement(databaseType);
+ return new OracleCreateContextStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSPFile(final CreateSPFileContext ctx) {
- return new OracleCreateSPFileStatement(databaseType);
+ return new OracleCreateSPFileStatement(getDatabaseType());
}
@Override
public ASTNode visitCreatePFile(final CreatePFileContext ctx) {
- return new OracleCreatePFileStatement(databaseType);
+ return new OracleCreatePFileStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateControlFile(final CreateControlFileContext ctx) {
- return new OracleCreateControlFileStatement(databaseType);
+ return new OracleCreateControlFileStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFlashbackArchive(final CreateFlashbackArchiveContext ctx) {
- return new OracleCreateFlashbackArchiveStatement(databaseType);
+ return new OracleCreateFlashbackArchiveStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterFlashbackArchive(final AlterFlashbackArchiveContext ctx) {
- return new OracleAlterFlashbackArchiveStatement(databaseType);
+ return new OracleAlterFlashbackArchiveStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFlashbackArchive(final DropFlashbackArchiveContext ctx) {
- return new OracleDropFlashbackArchiveStatement(databaseType);
+ return new OracleDropFlashbackArchiveStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDiskgroup(final CreateDiskgroupContext ctx) {
- return new OracleCreateDiskgroupStatement(databaseType);
+ return new OracleCreateDiskgroupStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDiskgroup(final DropDiskgroupContext ctx) {
- return new OracleDropDiskgroupStatement(databaseType);
+ return new OracleDropDiskgroupStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRollbackSegment(final CreateRollbackSegmentContext ctx) {
- return new OracleCreateRollbackSegmentStatement(databaseType);
+ return new OracleCreateRollbackSegmentStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRollbackSegment(final DropRollbackSegmentContext ctx) {
- return new OracleDropRollbackSegmentStatement(databaseType);
+ return new OracleDropRollbackSegmentStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTableSpace(final DropTableSpaceContext ctx) {
- return new DropTablespaceStatement(databaseType);
+ return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLockdownProfile(final CreateLockdownProfileContext ctx) {
- return new OracleCreateLockdownProfileStatement(databaseType);
+ return new OracleCreateLockdownProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLockdownProfile(final DropLockdownProfileContext ctx) {
- return new OracleDropLockdownProfileStatement(databaseType);
+ return new OracleDropLockdownProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateInmemoryJoinGroup(final CreateInmemoryJoinGroupContext ctx) {
- return new OracleCreateInMemoryJoinGroupStatement(databaseType);
+ return new OracleCreateInMemoryJoinGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterInmemoryJoinGroup(final AlterInmemoryJoinGroupContext ctx) {
- return new OracleAlterInMemoryJoinGroupStatement(databaseType);
+ return new OracleAlterInMemoryJoinGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitDropInmemoryJoinGroup(final DropInmemoryJoinGroupContext ctx) {
- return new OracleDropInMemoryJoinGroupStatement(databaseType);
+ return new OracleDropInMemoryJoinGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRestorePoint(final CreateRestorePointContext ctx) {
- return new OracleCreateRestorePointStatement(databaseType);
+ return new OracleCreateRestorePointStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRestorePoint(final DropRestorePointContext ctx) {
- return new OracleDropRestorePointStatement(databaseType);
+ return new OracleDropRestorePointStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterOperator(final AlterOperatorContext ctx) {
- return new AlterOperatorStatement(databaseType);
+ return new AlterOperatorStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProfile(final AlterProfileContext ctx) {
- return new OracleAlterProfileStatement(databaseType);
+ return new OracleAlterProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRollbackSegment(final AlterRollbackSegmentContext ctx) {
- return new OracleAlterRollbackSegmentStatement(databaseType);
+ return new OracleAlterRollbackSegmentStatement(getDatabaseType());
}
@Override
public ASTNode visitDropOperator(final DropOperatorContext ctx) {
- return new DropOperatorStatement(databaseType);
+ return new DropOperatorStatement(getDatabaseType());
}
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
- return new DropSequenceStatement(databaseType, Collections.emptyList());
+ return new DropSequenceStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterLibrary(final AlterLibraryContext ctx) {
- return new OracleAlterLibraryStatement(databaseType);
+ return new OracleAlterLibraryStatement(getDatabaseType());
}
@Override
public ASTNode visitDropType(final DropTypeContext ctx) {
- return new DropPackageStatement(databaseType);
+ return new DropPackageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterMaterializedZonemap(final AlterMaterializedZonemapContext ctx) {
- return new OracleAlterMaterializedZoneMapStatement(databaseType);
+ return new OracleAlterMaterializedZoneMapStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterJava(final AlterJavaContext ctx) {
- return new OracleAlterJavaStatement(databaseType);
+ return new OracleAlterJavaStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterAuditPolicy(final AlterAuditPolicyContext ctx) {
- return new OracleAlterAuditPolicyStatement(databaseType);
+ return new OracleAlterAuditPolicyStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterCluster(final AlterClusterContext ctx) {
- return new OracleAlterClusterStatement(databaseType);
+ return new OracleAlterClusterStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDiskgroup(final AlterDiskgroupContext ctx) {
- return new OracleAlterDiskgroupStatement(databaseType);
+ return new OracleAlterDiskgroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterIndexType(final AlterIndexTypeContext ctx) {
- return new OracleAlterIndexTypeStatement(databaseType);
+ return new OracleAlterIndexTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterMaterializedView(final AlterMaterializedViewContext ctx) {
- return new AlterMaterializedViewStatement(databaseType);
+ return new AlterMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterMaterializedViewLog(final AlterMaterializedViewLogContext ctx) {
- return new OracleAlterMaterializedViewLogStatement(databaseType);
+ return new OracleAlterMaterializedViewLogStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterHierarchy(final AlterHierarchyContext ctx) {
- return new OracleAlterHierarchyStatement(databaseType);
+ return new OracleAlterHierarchyStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterLockdownProfile(final AlterLockdownProfileContext ctx) {
- return new OracleAlterLockdownProfileStatement(databaseType);
+ return new OracleAlterLockdownProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterPluggableDatabase(final AlterPluggableDatabaseContext ctx) {
- return new OracleAlterPluggableDatabaseStatement(databaseType);
+ return new OracleAlterPluggableDatabaseStatement(getDatabaseType());
}
@Override
@@ -1341,7 +1342,7 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
getSqlStatementsInPlsql().sort(Comparator.comparingInt(SQLStatementSegment::getStartIndex));
getProcedureCallNames().sort(Comparator.comparingInt(ProcedureCallNameSegment::getStartIndex));
getDynamicSqlStatementExpressions().sort(Comparator.comparingInt(ExpressionSegment::getStartIndex));
- OracleCreateProcedureStatement result = new OracleCreateProcedureStatement(databaseType);
+ OracleCreateProcedureStatement result = new OracleCreateProcedureStatement(getDatabaseType());
result.getProcedureCallNames().addAll(getProcedureCallNames());
result.getProcedureBodyEndNameSegments().addAll(getProcedureBodyEndNameSegments());
result.getDynamicSqlStatementExpressions().addAll(getDynamicSqlStatementExpressions());
@@ -1581,13 +1582,13 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
}
private OracleStatementVisitor createOracleTCLStatementVisitor() {
- OracleStatementVisitor result = new OracleTCLStatementVisitor();
+ OracleStatementVisitor result = new OracleTCLStatementVisitor(getDatabaseType());
result.getVariableNames().addAll(getVariableNames());
return result;
}
private OracleStatementVisitor createOracleDMLStatementVisitor() {
- OracleStatementVisitor result = new OracleDMLStatementVisitor();
+ OracleStatementVisitor result = new OracleDMLStatementVisitor(getDatabaseType());
result.getVariableNames().addAll(getVariableNames());
return result;
}
@@ -1644,131 +1645,131 @@ public final class OracleDDLStatementVisitor extends OracleStatementVisitor impl
if (null != ctx.body() && null != ctx.body().statement()) {
ctx.body().statement().forEach(this::visit);
}
- return new OraclePLSQLBlockStatement(databaseType);
+ return new OraclePLSQLBlockStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropIndexType(final DropIndexTypeContext ctx) {
- return new OracleDropIndexTypeStatement(databaseType);
+ return new OracleDropIndexTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProfile(final DropProfileContext ctx) {
- return new OracleDropProfileStatement(databaseType);
+ return new OracleDropProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitDropPluggableDatabase(final DropPluggableDatabaseContext ctx) {
- return new OracleDropPluggableDatabaseStatement(databaseType);
+ return new OracleDropPluggableDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitDropJava(final DropJavaContext ctx) {
- return new OracleDropJavaStatement(databaseType);
+ return new OracleDropJavaStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLibrary(final DropLibraryContext ctx) {
- return new OracleDropLibraryStatement(databaseType);
+ return new OracleDropLibraryStatement(getDatabaseType());
}
@Override
public ASTNode visitDropCluster(final DropClusterContext ctx) {
- return new OracleDropClusterStatement(databaseType);
+ return new OracleDropClusterStatement(getDatabaseType());
}
@Override
public ASTNode visitDropMaterializedView(final DropMaterializedViewContext ctx) {
- return new DropMaterializedViewStatement(databaseType);
+ return new DropMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitDropMaterializedViewLog(final DropMaterializedViewLogContext ctx) {
- return new OracleDropMaterializedViewLogStatement(databaseType);
+ return new OracleDropMaterializedViewLogStatement(getDatabaseType());
}
@Override
public ASTNode visitDropMaterializedZonemap(final DropMaterializedZonemapContext ctx) {
- return new OracleDropMaterializedZoneMapStatement(databaseType);
+ return new OracleDropMaterializedZoneMapStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
- return new CreateTablespaceStatement(databaseType);
+ return new CreateTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateMaterializedView(final CreateMaterializedViewContext ctx) {
- return new CreateMaterializedViewStatement(databaseType);
+ return new CreateMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateMaterializedViewLog(final CreateMaterializedViewLogContext ctx) {
- return new OracleCreateMaterializedViewLogStatement(databaseType);
+ return new OracleCreateMaterializedViewLogStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateCluster(final CreateClusterContext ctx) {
- return new OracleCreateClusterStatement(databaseType);
+ return new OracleCreateClusterStatement(getDatabaseType());
}
@Override
public ASTNode visitSystemAction(final SystemActionContext ctx) {
- return new OracleSystemActionStatement(databaseType);
+ return new OracleSystemActionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterType(final AlterTypeContext ctx) {
- return new AlterTypeStatement(databaseType);
+ return new AlterTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateJava(final CreateJavaContext ctx) {
- return new OracleCreateJavaStatement(databaseType);
+ return new OracleCreateJavaStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLibrary(final CreateLibraryContext ctx) {
- return new OracleCreateLibraryStatement(databaseType);
+ return new OracleCreateLibraryStatement(getDatabaseType());
}
@Override
public ASTNode visitSwitch(final SwitchContext ctx) {
- return new OracleSwitchStatement(databaseType);
+ return new OracleSwitchStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProfile(final CreateProfileContext ctx) {
- return new OracleCreateProfileStatement(databaseType);
+ return new OracleCreateProfileStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, null, false);
+ return new DropDatabaseStatement(getDatabaseType(), null, false);
}
@Override
public ASTNode visitCreateOperator(final CreateOperatorContext ctx) {
- return new CreateOperatorStatement(databaseType);
+ return new CreateOperatorStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateOutline(final CreateOutlineContext ctx) {
- return new OracleCreateOutlineStatement(databaseType);
+ return new OracleCreateOutlineStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
index 1744fccdb5c..650ebcad392 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AliasContext;
@@ -201,11 +200,13 @@ import java.util.stream.Collectors;
*/
public final class OracleDMLStatementVisitor extends OracleStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.updateSpecification()));
if (null != ctx.alias()) {
result.getTable().setAlias((AliasSegment) visit(ctx.alias()));
@@ -335,7 +336,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitInsertMultiTable(final InsertMultiTableContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
result.setMultiTableInsertType(null != ctx.conditionalInsertClause() && null != ctx.conditionalInsertClause().FIRST() ? MultiTableInsertType.FIRST : MultiTableInsertType.ALL);
List<MultiTableElementContext> multiTableElementContexts = ctx.multiTableElement();
if (null != multiTableElementContexts && !multiTableElementContexts.isEmpty()) {
@@ -373,7 +374,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
result.getValues().addAll(createInsertValuesSegments(ctx.assignmentValues()));
return result;
}
@@ -381,7 +382,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertIntoClause(final InsertIntoClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.dmlTableExprClause().dmlTableClause()) {
result.setTable((SimpleTableSegment) visit(ctx.dmlTableExprClause().dmlTableClause()));
} else if (null != ctx.dmlTableExprClause().dmlSubqueryClause()) {
@@ -401,7 +402,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.deleteSpecification()));
if (null != ctx.alias()) {
result.getTable().setAlias((AliasSegment) visit(ctx.alias()));
@@ -429,7 +430,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public SelectStatement visitSelectIntoStatement(final SelectIntoStatementContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.selectList()));
// TODO Visit selectIntoClause, bulkCollectIntoClause
result.setFrom((TableSegment) visit(ctx.fromClauseList()));
@@ -586,7 +587,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
public ASTNode visitSelectSubquery(final SelectSubqueryContext ctx) {
SelectStatement result;
if (null != ctx.combineType()) {
- result = new SelectStatement(databaseType);
+ result = new SelectStatement(getDatabaseType());
SelectStatement left = (SelectStatement) visit(ctx.selectSubquery(0));
result.setProjections(left.getProjections());
left.getFrom().ifPresent(result::setFrom);
@@ -627,7 +628,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitQueryBlock(final QueryBlockContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.selectList()));
if (null != ctx.withClause()) {
result.setWith((WithSegment) visit(ctx.withClause()));
@@ -1299,7 +1300,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitMerge(final MergeContext ctx) {
- MergeStatement result = new MergeStatement(databaseType);
+ MergeStatement result = new MergeStatement(getDatabaseType());
result.setTarget((TableSegment) visit(ctx.intoClause()));
result.setSource((TableSegment) visit(ctx.usingClause()));
ExpressionWithParamsSegment onExpression = new ExpressionWithParamsSegment(ctx.usingClause().expr().start.getStartIndex(), ctx.usingClause().expr().stop.getStopIndex(),
@@ -1325,7 +1326,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitMergeInsertClause(final MergeInsertClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.mergeInsertColumn()) {
result.setInsertColumns((InsertColumnsSegment) visit(ctx.mergeInsertColumn()));
}
@@ -1414,7 +1415,7 @@ public final class OracleDMLStatementVisitor extends OracleStatementVisitor impl
@Override
public ASTNode visitMergeUpdateClause(final MergeUpdateClauseContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
result.setSetAssignment((SetAssignmentSegment) visit(ctx.mergeSetAssignmentsClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleLCLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleLCLStatementVisitor.java
index 8de3621c107..c08a9d22317 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleLCLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleLCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.LCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.LockContext;
@@ -34,15 +33,17 @@ import java.util.Collections;
*/
public final class OracleLCLStatementVisitor extends OracleStatementVisitor implements LCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleLCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetConstraints(final SetConstraintsContext ctx) {
- return new SetConstraintsStatement(databaseType);
+ return new SetConstraintsStatement(getDatabaseType());
}
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, Collections.emptyList());
+ return new LockStatement(getDatabaseType(), Collections.emptyList());
}
}
diff --git a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleTCLStatementVisitor.java b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleTCLStatementVisitor.java
index fc371714996..68e6d62cbaa 100644
--- a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleTCLStatementVisitor.java
+++ b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleTCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.oracle.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.CommitContext;
@@ -43,36 +42,38 @@ import java.util.Collections;
*/
public final class OracleTCLStatementVisitor extends OracleStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Oracle");
+ public OracleTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType);
+ return new SetTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return null == ctx.savepointClause().savepointName() ? new RollbackStatement(databaseType)
- : new RollbackStatement(databaseType, ((IdentifierValue) visit(ctx.savepointClause().savepointName())).getValue());
+ return null == ctx.savepointClause().savepointName() ? new RollbackStatement(getDatabaseType())
+ : new RollbackStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.savepointClause().savepointName())).getValue());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, ((IdentifierValue) visit(ctx.savepointName())).getValue());
+ return new SavepointStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.savepointName())).getValue());
}
@Override
public ASTNode visitSetConstraints(final SetConstraintsContext ctx) {
- return new SetConstraintsStatement(databaseType);
+ return new SetConstraintsStatement(getDatabaseType());
}
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, Collections.emptyList());
+ return new LockStatement(getDatabaseType(), Collections.emptyList());
}
}
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
index 398531e8b06..874b075a5d3 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
@@ -19,13 +19,13 @@ package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.metadata.database.enums.NullsOrderType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AExprContext;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AexprConstContext;
@@ -216,10 +216,11 @@ import java.util.Optional;
/**
* Statement visitor for PostgreSQL.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class PostgreSQLStatementVisitor extends PostgreSQLStatementParserBaseVisitor<ASTNode> {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java
index c80b59f9b62..3af32df1058 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AnalyzeTableContext;
@@ -62,23 +61,25 @@ import java.util.List;
*/
public final class PostgreSQLDALStatementVisitor extends PostgreSQLStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitShow(final ShowContext ctx) {
if (null != ctx.varName()) {
- return new ShowStatement(databaseType, ctx.varName().getText());
+ return new ShowStatement(getDatabaseType(), ctx.varName().getText());
}
if (null != ctx.ZONE()) {
- return new ShowStatement(databaseType, "timezone");
+ return new ShowStatement(getDatabaseType(), "timezone");
}
if (null != ctx.ISOLATION()) {
- return new ShowStatement(databaseType, "transaction_isolation");
+ return new ShowStatement(getDatabaseType(), "transaction_isolation");
}
if (null != ctx.AUTHORIZATION()) {
- return new ShowStatement(databaseType, "session_authorization");
+ return new ShowStatement(getDatabaseType(), "session_authorization");
}
- return new ShowStatement(databaseType, "ALL");
+ return new ShowStatement(getDatabaseType(), "ALL");
}
@Override
@@ -96,7 +97,7 @@ public final class PostgreSQLDALStatementVisitor extends PostgreSQLStatementVisi
VariableAssignSegment variableAssign = new VariableAssignSegment(ctx.encoding().start.getStartIndex(), ctx.encoding().stop.getStopIndex(), variable, ctx.encoding().getText());
variableAssigns.add(variableAssign);
}
- return new SetStatement(databaseType, variableAssigns);
+ return new SetStatement(getDatabaseType(), variableAssigns);
}
@Override
@@ -117,13 +118,14 @@ public final class PostgreSQLDALStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitResetParameter(final ResetParameterContext ctx) {
- return new PostgreSQLResetParameterStatement(databaseType, null == ctx.ALL() ? ctx.identifier().getText() : "ALL");
+ return new PostgreSQLResetParameterStatement(getDatabaseType(), null == ctx.ALL() ? ctx.identifier().getText() : "ALL");
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAnalyzeTable(final AnalyzeTableContext ctx) {
- return new AnalyzeTableStatement(databaseType, null == ctx.vacuumRelationList() ? Collections.emptyList() : ((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue());
+ return new AnalyzeTableStatement(getDatabaseType(),
+ null == ctx.vacuumRelationList() ? Collections.emptyList() : ((CollectionValue<SimpleTableSegment>) visit(ctx.vacuumRelationList())).getValue());
}
@Override
@@ -139,17 +141,17 @@ public final class PostgreSQLDALStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitLoad(final LoadContext ctx) {
- return new PostgreSQLLoadStatement(databaseType);
+ return new PostgreSQLLoadStatement(getDatabaseType());
}
@Override
public ASTNode visitVacuum(final VacuumContext ctx) {
- return new PostgreSQLVacuumStatement(databaseType);
+ return new PostgreSQLVacuumStatement(getDatabaseType());
}
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
- return new ExplainStatement(databaseType, (SQLStatement) visit(ctx.explainableStmt()));
+ return new ExplainStatement(getDatabaseType(), (SQLStatement) visit(ctx.explainableStmt()));
}
@Override
@@ -182,11 +184,11 @@ public final class PostgreSQLDALStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCheckpoint(final CheckpointContext ctx) {
- return new PostgreSQLCheckpointStatement(databaseType);
+ return new PostgreSQLCheckpointStatement(getDatabaseType());
}
@Override
public ASTNode visitEmptyStatement(final EmptyStatementContext ctx) {
- return new EmptyStatement(databaseType);
+ return new EmptyStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
index 78a7a05ba53..5a722640364 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AlterRoleContext;
@@ -54,11 +53,13 @@ import java.util.Collections;
*/
public final class PostgreSQLDCLStatementVisitor extends PostgreSQLStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- GrantStatement result = new GrantStatement(databaseType);
+ GrantStatement result = new GrantStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
@@ -67,7 +68,7 @@ public final class PostgreSQLDCLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(databaseType);
+ RevokeStatement result = new RevokeStatement(getDatabaseType());
if (containsTableSegment(ctx.privilegeClause())) {
result.getTables().addAll(getTableSegments(ctx.privilegeClause()));
}
@@ -85,41 +86,41 @@ public final class PostgreSQLDCLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- return new CreateUserStatement(databaseType);
+ return new CreateUserStatement(getDatabaseType());
}
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, Collections.emptyList());
+ return new DropUserStatement(getDatabaseType(), Collections.emptyList());
}
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, null);
+ return new AlterUserStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
- return new AlterRoleStatement(databaseType);
+ return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitReassignOwned(final ReassignOwnedContext ctx) {
- return new PostgreSQLReassignOwnedStatement(databaseType);
+ return new PostgreSQLReassignOwnedStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateGroup(final CreateGroupContext ctx) {
- return new PostgreSQLCreateGroupStatement(databaseType);
+ return new PostgreSQLCreateGroupStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
index 95ced681ab4..fa5dade568d 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AbsoluteCountContext;
@@ -338,12 +337,14 @@ import java.util.stream.Collectors;
*/
public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
@@ -376,7 +377,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableNameClause().tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
@@ -406,22 +407,22 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterAggregate(final AlterAggregateContext ctx) {
- return new PostgreSQLAlterAggregateStatement(databaseType);
+ return new PostgreSQLAlterAggregateStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterCollation(final AlterCollationContext ctx) {
- return new AlterCollationStatement(databaseType);
+ return new AlterCollationStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterDefaultPrivileges(final AlterDefaultPrivilegesContext ctx) {
- return new PostgreSQLAlterDefaultPrivilegesStatement(databaseType);
+ return new PostgreSQLAlterDefaultPrivilegesStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterForeignDataWrapper(final AlterForeignDataWrapperContext ctx) {
- return new PostgreSQLAlterForeignDataWrapperStatement(databaseType);
+ return new PostgreSQLAlterForeignDataWrapperStatement(getDatabaseType());
}
@Override
@@ -468,27 +469,27 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterForeignTable(final AlterForeignTableContext ctx) {
- return new PostgreSQLAlterForeignTableStatement(databaseType);
+ return new PostgreSQLAlterForeignTableStatement(getDatabaseType());
}
@Override
public ASTNode visitDropForeignTable(final DropForeignTableContext ctx) {
- return new PostgreSQLDropForeignTableStatement(databaseType);
+ return new PostgreSQLDropForeignTableStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterGroup(final AlterGroupContext ctx) {
- return new PostgreSQLAlterGroupStatement(databaseType);
+ return new PostgreSQLAlterGroupStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterMaterializedView(final AlterMaterializedViewContext ctx) {
- return new AlterMaterializedViewStatement(databaseType);
+ return new AlterMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterOperator(final AlterOperatorContext ctx) {
- return new AlterOperatorStatement(databaseType);
+ return new AlterOperatorStatement(getDatabaseType());
}
@Override
@@ -513,32 +514,32 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterDomain(final AlterDomainContext ctx) {
- return new AlterDomainStatement(databaseType);
+ return new AlterDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterPolicy(final AlterPolicyContext ctx) {
- return new PostgreSQLAlterPolicyStatement(databaseType);
+ return new PostgreSQLAlterPolicyStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterPublication(final AlterPublicationContext ctx) {
- return new PostgreSQLAlterPublicationStatement(databaseType);
+ return new PostgreSQLAlterPublicationStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSubscription(final AlterSubscriptionContext ctx) {
- return new PostgreSQLAlterSubscriptionStatement(databaseType);
+ return new PostgreSQLAlterSubscriptionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
- return new AlterTriggerStatement(databaseType);
+ return new AlterTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterType(final AlterTypeContext ctx) {
- return new AlterTypeStatement(databaseType);
+ return new AlterTypeStatement(getDatabaseType());
}
@Override
@@ -631,7 +632,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
boolean containsCascade = null != ctx.dropTableOpt() && null != ctx.dropTableOpt().CASCADE();
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.setContainsCascade(containsCascade);
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
@@ -641,38 +642,38 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@SuppressWarnings("unchecked")
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, ((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
+ return new TruncateStatement(getDatabaseType(), ((CollectionValue<SimpleTableSegment>) visit(ctx.tableNamesClause())).getValue());
}
@Override
public ASTNode visitDropPolicy(final DropPolicyContext ctx) {
- return new PostgreSQLDropPolicyStatement(databaseType);
+ return new PostgreSQLDropPolicyStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRule(final DropRuleContext ctx) {
- return new PostgreSQLDropRuleStatement(databaseType);
+ return new PostgreSQLDropRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropStatistics(final DropStatisticsContext ctx) {
- return new PostgreSQLDropStatisticsStatement(databaseType);
+ return new PostgreSQLDropStatisticsStatement(getDatabaseType());
}
@Override
public ASTNode visitDropPublication(final DropPublicationContext ctx) {
- return new PostgreSQLDropPublicationStatement(databaseType);
+ return new PostgreSQLDropPublicationStatement(getDatabaseType());
}
@Override
public ASTNode visitDropSubscription(final DropSubscriptionContext ctx) {
- return new PostgreSQLDropSubscriptionStatement(databaseType);
+ return new PostgreSQLDropSubscriptionStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setIfNotExists(null != ctx.ifNotExists());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.getColumns().addAll(((CollectionValue<ColumnSegment>) visit(ctx.indexParams())).getValue());
@@ -723,7 +724,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new AlterIndexStatement(databaseType);
+ AlterIndexStatement result = new AlterIndexStatement(getDatabaseType());
result.setIndex(createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())));
if (null != ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
result.setRenameIndex((IndexSegment) visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
@@ -741,7 +742,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue()));
return result;
@@ -782,38 +783,38 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(databaseType);
+ return new CreateFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- return new CreateProcedureStatement(databaseType);
+ return new CreateProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropGroup(final DropGroupContext ctx) {
- return new PostgreSQLDropGroupStatement(databaseType);
+ return new PostgreSQLDropGroupStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.qualifiedNameList())).getValue());
return result;
@@ -821,7 +822,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
result.setViewDefinition(getOriginalText(ctx.select()));
@@ -831,7 +832,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.qualifiedName()));
if (ctx.alterViewClauses() instanceof AlterRenameViewContext) {
NameContext nameContext = ((AlterRenameViewContext) ctx.alterViewClauses()).name();
@@ -843,53 +844,53 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, ((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
+ return new DropDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), null != ctx.ifExists());
}
@Override
public ASTNode visitAlterRoutine(final AlterRoutineContext ctx) {
- return new PostgreSQLAlterRoutineStatement(databaseType);
+ return new PostgreSQLAlterRoutineStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRule(final AlterRuleContext ctx) {
- return new PostgreSQLAlterRuleStatement(databaseType);
+ return new PostgreSQLAlterRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRoutine(final DropRoutineContext ctx) {
- return new PostgreSQLDropRoutineStatement(databaseType);
+ return new PostgreSQLDropRoutineStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, ((IdentifierValue) visit(ctx.name())).getValue(), false);
+ return new CreateDatabaseStatement(getDatabaseType(), ((IdentifierValue) visit(ctx.name())).getValue(), false);
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
- return new CreateSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
+ return new CreateSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
- return new AlterSequenceStatement(databaseType, ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
+ return new AlterSequenceStatement(getDatabaseType(), ((SimpleTableSegment) visit(ctx.qualifiedName())).getTableName().getIdentifier().getValue());
}
@SuppressWarnings({"unchecked", "rawtypes"})
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
- return new DropSequenceStatement(databaseType, ((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
+ return new DropSequenceStatement(getDatabaseType(), ((CollectionValue) visit(ctx.qualifiedNameList())).getValue());
}
@Override
public ASTNode visitPrepare(final PrepareContext ctx) {
- PrepareStatement result = new PrepareStatement(databaseType);
+ PrepareStatement result = new PrepareStatement(getDatabaseType());
if (null != ctx.preparableStmt().select()) {
result.setSelect((SelectStatement) visit(ctx.preparableStmt().select()));
}
@@ -907,57 +908,57 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitDeallocate(final DeallocateContext ctx) {
- return new DeallocateStatement(databaseType);
+ return new DeallocateStatement(getDatabaseType());
}
@Override
public ASTNode visitDropCast(final DropCastContext ctx) {
- return new PostgreSQLDropCastStatement(databaseType);
+ return new PostgreSQLDropCastStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTablespace(final CreateTablespaceContext ctx) {
- return new CreateTablespaceStatement(databaseType);
+ return new CreateTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTablespace(final AlterTablespaceContext ctx) {
- return new AlterTablespaceStatement(databaseType, null, null);
+ return new AlterTablespaceStatement(getDatabaseType(), null, null);
}
@Override
public ASTNode visitDropTablespace(final DropTablespaceContext ctx) {
- return new DropTablespaceStatement(databaseType);
+ return new DropTablespaceStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTextSearch(final DropTextSearchContext ctx) {
- return new PostgreSQLDropTextSearchStatement(databaseType);
+ return new PostgreSQLDropTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDomain(final DropDomainContext ctx) {
- return new DropDomainStatement(databaseType);
+ return new DropDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateDomain(final CreateDomainContext ctx) {
- return new CreateDomainStatement(databaseType);
+ return new CreateDomainStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateRule(final CreateRuleContext ctx) {
- return new PostgreSQLCreateRuleStatement(databaseType);
+ return new PostgreSQLCreateRuleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLanguage(final CreateLanguageContext ctx) {
- return new PostgreSQLCreateLanguageStatement(databaseType);
+ return new PostgreSQLCreateLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
- CreateSchemaStatement result = new CreateSchemaStatement(databaseType);
+ CreateSchemaStatement result = new CreateSchemaStatement(getDatabaseType());
if (null != ctx.createSchemaClauses().colId()) {
result.setSchemaName(new IdentifierValue(ctx.createSchemaClauses().colId().getText()));
}
@@ -969,7 +970,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
- AlterSchemaStatement result = new AlterSchemaStatement(databaseType);
+ AlterSchemaStatement result = new AlterSchemaStatement(getDatabaseType());
result.setSchemaName((IdentifierValue) visit(ctx.name().get(0)));
if (ctx.name().size() > 1) {
result.setRenameSchema((IdentifierValue) visit(ctx.name().get(1)));
@@ -980,7 +981,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropSchema(final DropSchemaContext ctx) {
- DropSchemaStatement result = new DropSchemaStatement(databaseType);
+ DropSchemaStatement result = new DropSchemaStatement(getDatabaseType());
result.getSchemaNames().addAll(((CollectionValue<IdentifierValue>) visit(ctx.nameList())).getValue());
result.setContainsCascade(null != ctx.dropBehavior() && null != ctx.dropBehavior().CASCADE());
return result;
@@ -1001,132 +1002,132 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitAlterLanguage(final AlterLanguageContext ctx) {
- return new PostgreSQLAlterLanguageStatement(databaseType);
+ return new PostgreSQLAlterLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterServer(final AlterServerContext ctx) {
- return new AlterServerStatement(databaseType);
+ return new AlterServerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterStatistics(final AlterStatisticsContext ctx) {
- return new PostgreSQLAlterStatisticsStatement(databaseType);
+ return new PostgreSQLAlterStatisticsStatement(getDatabaseType());
}
@Override
public ASTNode visitDropLanguage(final DropLanguageContext ctx) {
- return new PostgreSQLDropLanguageStatement(databaseType);
+ return new PostgreSQLDropLanguageStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateConversion(final CreateConversionContext ctx) {
- return new PostgreSQLCreateConversionStatement(databaseType);
+ return new PostgreSQLCreateConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateType(final CreateTypeContext ctx) {
- return new CreateTypeStatement(databaseType);
+ return new CreateTypeStatement(getDatabaseType());
}
@Override
public ASTNode visitDropConversion(final DropConversionContext ctx) {
- return new PostgreSQLDropConversionStatement(databaseType);
+ return new PostgreSQLDropConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterConversion(final AlterConversionContext ctx) {
- return new PostgreSQLAlterConversionStatement(databaseType);
+ return new PostgreSQLAlterConversionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateTextSearch(final CreateTextSearchContext ctx) {
- return new PostgreSQLCreateTextSearchStatement(databaseType);
+ return new PostgreSQLCreateTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchConfiguration(final AlterTextSearchConfigurationContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchDictionary(final AlterTextSearchDictionaryContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchTemplate(final AlterTextSearchTemplateContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTextSearchParser(final AlterTextSearchParserContext ctx) {
- return new PostgreSQLAlterTextSearchStatement(databaseType);
+ return new PostgreSQLAlterTextSearchStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateExtension(final CreateExtensionContext ctx) {
- return new PostgreSQLCreateExtensionStatement(databaseType);
+ return new PostgreSQLCreateExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterExtension(final AlterExtensionContext ctx) {
- return new PostgreSQLAlterExtensionStatement(databaseType);
+ return new PostgreSQLAlterExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropExtension(final DropExtensionContext ctx) {
- return new PostgreSQLDropExtensionStatement(databaseType);
+ return new PostgreSQLDropExtensionStatement(getDatabaseType());
}
@Override
public ASTNode visitDiscard(final DiscardContext ctx) {
- return new PostgreSQLDiscardStatement(databaseType);
+ return new PostgreSQLDiscardStatement(getDatabaseType());
}
@Override
public ASTNode visitDropOwned(final DropOwnedContext ctx) {
- return new PostgreSQLDropOwnedStatement(databaseType);
+ return new PostgreSQLDropOwnedStatement(getDatabaseType());
}
@Override
public ASTNode visitDropOperator(final DropOperatorContext ctx) {
- return new DropOperatorStatement(databaseType);
+ return new DropOperatorStatement(getDatabaseType());
}
@Override
public ASTNode visitDropMaterializedView(final DropMaterializedViewContext ctx) {
- return new DropMaterializedViewStatement(databaseType);
+ return new DropMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitDropEventTrigger(final DropEventTriggerContext ctx) {
- return new PostgreSQLDropEventTriggerStatement(databaseType);
+ return new PostgreSQLDropEventTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropAggregate(final DropAggregateContext ctx) {
- return new PostgreSQLDropAggregateStatement(databaseType);
+ return new PostgreSQLDropAggregateStatement(getDatabaseType());
}
@Override
public ASTNode visitDropCollation(final DropCollationContext ctx) {
- return new DropCollationStatement(databaseType);
+ return new DropCollationStatement(getDatabaseType());
}
@Override
public ASTNode visitDropForeignDataWrapper(final DropForeignDataWrapperContext ctx) {
- return new PostgreSQLDropForeignDataWrapperStatement(databaseType);
+ return new PostgreSQLDropForeignDataWrapperStatement(getDatabaseType());
}
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
- return new DropTriggerStatement(databaseType);
+ return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropType(final DropTypeContext ctx) {
- return new DropTypeStatement(databaseType);
+ return new DropTypeStatement(getDatabaseType());
}
@Override
@@ -1140,12 +1141,12 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
if (null != ctx.commentClauses().objectTypeNameOnAnyName()) {
return getTableFromComment(ctx);
}
- return new CommentStatement(databaseType);
+ return new CommentStatement(getDatabaseType());
}
@SuppressWarnings("unchecked")
private CommentStatement commentOnColumn(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
Optional<NameSegment> columnName = nameSegmentIterator.hasNext() ? Optional.of(nameSegmentIterator.next()) : Optional.empty();
columnName.ifPresent(optional -> result.setColumn(new ColumnSegment(optional.getStartIndex(), optional.getStopIndex(), optional.getIdentifier())));
@@ -1156,7 +1157,7 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@SuppressWarnings("unchecked")
private CommentStatement commentOnTable(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
Iterator<NameSegment> nameSegmentIterator = ((CollectionValue<NameSegment>) visit(ctx.commentClauses().anyName())).getValue().iterator();
result.setComment(new IdentifierValue(ctx.commentClauses().commentText().getText()));
setTableSegment(result, nameSegmentIterator);
@@ -1174,49 +1175,49 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
}
private CommentStatement getTableFromComment(final CommentContext ctx) {
- CommentStatement result = new CommentStatement(databaseType);
+ CommentStatement result = new CommentStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.commentClauses().tableName()));
return result;
}
@Override
public ASTNode visitDropOperatorClass(final DropOperatorClassContext ctx) {
- return new PostgreSQLDropOperatorClassStatement(databaseType);
+ return new PostgreSQLDropOperatorClassStatement(getDatabaseType());
}
@Override
public ASTNode visitDropOperatorFamily(final DropOperatorFamilyContext ctx) {
- return new PostgreSQLDropOperatorFamilyStatement(databaseType);
+ return new PostgreSQLDropOperatorFamilyStatement(getDatabaseType());
}
@Override
public ASTNode visitDropAccessMethod(final DropAccessMethodContext ctx) {
- return new PostgreSQLDropAccessMethodStatement(databaseType);
+ return new PostgreSQLDropAccessMethodStatement(getDatabaseType());
}
@Override
public ASTNode visitDropServer(final DropServerContext ctx) {
- return new DropServerStatement(databaseType);
+ return new DropServerStatement(getDatabaseType());
}
@Override
public ASTNode visitDeclare(final DeclareContext ctx) {
- return new PostgreSQLDeclareStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
+ return new PostgreSQLDeclareStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), (SelectStatement) visit(ctx.select()));
}
@Override
public ASTNode visitFetch(final FetchContext ctx) {
- return new FetchStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
+ return new FetchStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
}
@Override
public ASTNode visitMove(final MoveContext ctx) {
- return new MoveStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
+ return new MoveStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()), null == ctx.direction() ? null : (DirectionSegment) visit(ctx.direction()));
}
@Override
public ASTNode visitClose(final CloseContext ctx) {
- return new CloseStatement(databaseType, null == ctx.cursorName() ? null : (CursorNameSegment) visit(ctx.cursorName()), null != ctx.ALL());
+ return new CloseStatement(getDatabaseType(), null == ctx.cursorName() ? null : (CursorNameSegment) visit(ctx.cursorName()), null != ctx.ALL());
}
@Override
@@ -1227,18 +1228,18 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCluster(final ClusterContext ctx) {
- return new PostgreSQLClusterStatement(databaseType, null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
+ return new PostgreSQLClusterStatement(getDatabaseType(), null == ctx.tableName() ? null : (SimpleTableSegment) visit(ctx.tableName()),
null == ctx.clusterIndexSpecification() ? null : (IndexSegment) visit(ctx.clusterIndexSpecification().indexName()));
}
@Override
public ASTNode visitCreateAccessMethod(final CreateAccessMethodContext ctx) {
- return new PostgreSQLCreateAccessMethodStatement(databaseType);
+ return new PostgreSQLCreateAccessMethodStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateAggregate(final CreateAggregateContext ctx) {
- return new PostgreSQLCreateAggregateStatement(databaseType);
+ return new PostgreSQLCreateAggregateStatement(getDatabaseType());
}
@Override
@@ -1313,81 +1314,81 @@ public final class PostgreSQLDDLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCreateCast(final CreateCastContext ctx) {
- return new PostgreSQLCreateCastStatement(databaseType);
+ return new PostgreSQLCreateCastStatement(getDatabaseType());
}
@Override
public ASTNode visitListen(final ListenContext ctx) {
- return new PostgreSQLListenStatement(databaseType, ctx.channelName().getText());
+ return new PostgreSQLListenStatement(getDatabaseType(), ctx.channelName().getText());
}
@Override
public ASTNode visitUnlisten(final UnlistenContext ctx) {
- return new PostgreSQLUnlistenStatement(databaseType);
+ return new PostgreSQLUnlistenStatement(getDatabaseType());
}
@Override
public ASTNode visitNotifyStmt(final NotifyStmtContext ctx) {
- return new PostgreSQLNotifyStmtStatement(databaseType);
+ return new PostgreSQLNotifyStmtStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateCollation(final CreateCollationContext ctx) {
- return new CreateCollationStatement(databaseType);
+ return new CreateCollationStatement(getDatabaseType());
}
@Override
public ASTNode visitRefreshMatViewStmt(final RefreshMatViewStmtContext ctx) {
- return new RefreshMatViewStmtStatement(databaseType);
+ return new RefreshMatViewStmtStatement(getDatabaseType());
}
@Override
public ASTNode visitReindex(final ReindexContext ctx) {
- return new PostgreSQLReindexStatement(databaseType);
+ return new PostgreSQLReindexStatement(getDatabaseType());
}
@Override
public ASTNode visitSecurityLabelStmt(final SecurityLabelStmtContext ctx) {
- return new PostgreSQLSecurityLabelStmtStatement(databaseType);
+ return new PostgreSQLSecurityLabelStmtStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateEventTrigger(final CreateEventTriggerContext ctx) {
- return new PostgreSQLCreateEventTriggerStatement(databaseType);
+ return new PostgreSQLCreateEventTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateForeignDataWrapper(final CreateForeignDataWrapperContext ctx) {
- return new PostgreSQLCreateForeignDataWrapperStatement(databaseType);
+ return new PostgreSQLCreateForeignDataWrapperStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateForeignTable(final CreateForeignTableContext ctx) {
- return new PostgreSQLCreateForeignTableStatement(databaseType);
+ return new PostgreSQLCreateForeignTableStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateMaterializedView(final CreateMaterializedViewContext ctx) {
- return new CreateMaterializedViewStatement(databaseType);
+ return new CreateMaterializedViewStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateOperator(final CreateOperatorContext ctx) {
- return new CreateOperatorStatement(databaseType);
+ return new CreateOperatorStatement(getDatabaseType());
}
@Override
public ASTNode visitCreatePolicy(final CreatePolicyContext ctx) {
- return new PostgreSQLCreatePolicyStatement(databaseType);
+ return new PostgreSQLCreatePolicyStatement(getDatabaseType());
}
@Override
public ASTNode visitCreatePublication(final CreatePublicationContext ctx) {
- return new PostgreSQLCreatePublicationStatement(databaseType);
+ return new PostgreSQLCreatePublicationStatement(getDatabaseType());
}
@Override
public ASTNode visitOpen(final OpenContext ctx) {
- return new PostgreSQLOpenStatement(databaseType, (CursorNameSegment) visit(ctx.cursorName()));
+ return new PostgreSQLOpenStatement(getDatabaseType(), (CursorNameSegment) visit(ctx.cursorName()));
}
}
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java
index 37ad7542700..7dc3daddbe6 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLDMLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.CallArgumentContext;
@@ -58,7 +57,9 @@ import java.util.stream.Collectors;
*/
public final class PostgreSQLDMLStatementVisitor extends PostgreSQLStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCall(final CallContext ctx) {
@@ -66,7 +67,7 @@ public final class PostgreSQLDMLStatementVisitor extends PostgreSQLStatementVisi
List<ExpressionSegment> params = null == ctx.callArguments()
? Collections.emptyList()
: ctx.callArguments().callArgument().stream().map(each -> (ExpressionSegment) visit(each)).collect(Collectors.toList());
- return new CallStatement(databaseType, procedureName, params);
+ return new CallStatement(getDatabaseType(), procedureName, params);
}
@Override
@@ -80,7 +81,7 @@ public final class PostgreSQLDMLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitDoStatement(final DoStatementContext ctx) {
- return new DoStatement(databaseType, Collections.emptyList());
+ return new DoStatement(getDatabaseType(), Collections.emptyList());
}
@Override
@@ -96,7 +97,7 @@ public final class PostgreSQLDMLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCopyWithTableOrQuery(final CopyWithTableOrQueryContext ctx) {
- return new PostgreSQLCopyStatement(databaseType, null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()),
+ return new PostgreSQLCopyStatement(getDatabaseType(), null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()),
null == ctx.columnNames() ? Collections.emptyList() : ((CollectionValue<ColumnSegment>) visit(ctx.columnNames())).getValue(),
null == ctx.preparableStmt() ? null : extractPrepareStatementQuerySegmentFromPreparableStmt(ctx.preparableStmt()));
}
@@ -117,14 +118,14 @@ public final class PostgreSQLDMLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitCopyWithTableOrQueryBinaryCsv(final CopyWithTableOrQueryBinaryCsvContext ctx) {
- return new PostgreSQLCopyStatement(databaseType, null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()),
+ return new PostgreSQLCopyStatement(getDatabaseType(), null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()),
null == ctx.columnNames() ? Collections.emptyList() : ((CollectionValue<ColumnSegment>) visit(ctx.columnNames())).getValue(),
null == ctx.preparableStmt() ? null : extractPrepareStatementQuerySegmentFromPreparableStmt(ctx.preparableStmt()));
}
@Override
public ASTNode visitCopyWithTableBinary(final CopyWithTableBinaryContext ctx) {
- return new PostgreSQLCopyStatement(databaseType, null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()), Collections.emptyList(), null);
+ return new PostgreSQLCopyStatement(getDatabaseType(), null == ctx.qualifiedName() ? null : (SimpleTableSegment) visit(ctx.qualifiedName()), Collections.emptyList(), null);
}
@Override
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLLCLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLLCLStatementVisitor.java
index 4adea964f54..568ef38e693 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLLCLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLLCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.LCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.LockContext;
@@ -36,11 +35,13 @@ import java.util.stream.Collectors;
*/
public final class PostgreSQLLCLStatementVisitor extends PostgreSQLStatementVisitor implements LCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLLCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitLock(final LockContext ctx) {
- return new LockStatement(databaseType, null == ctx.relationExprList() ? Collections.emptyList() : getLockTables(ctx.relationExprList().relationExpr()));
+ return new LockStatement(getDatabaseType(), null == ctx.relationExprList() ? Collections.emptyList() : getLockTables(ctx.relationExprList().relationExpr()));
}
private Collection<SimpleTableSegment> getLockTables(final Collection<RelationExprContext> relationExprContexts) {
diff --git a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLTCLStatementVisitor.java b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLTCLStatementVisitor.java
index 05d689abf15..82287f45db0 100644
--- a/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLTCLStatementVisitor.java
+++ b/parser/sql/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/postgresql/visitor/statement/type/PostgreSQLTCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.postgresql.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PostgreSQLStatementParser.AbortContext;
@@ -56,14 +55,16 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa
*/
public final class PostgreSQLTCLStatementVisitor extends PostgreSQLStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "PostgreSQL");
+ public PostgreSQLTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- SetTransactionStatement result = new SetTransactionStatement(databaseType);
+ SetTransactionStatement result = new SetTransactionStatement(getDatabaseType());
if (null != ctx.transactionModeList()) {
for (TransactionModeItemContext each : ctx.transactionModeList().transactionModeItem()) {
- result = new SetTransactionStatement(databaseType, null, getTransactionIsolationLevel(each.isoLevel()), getTransactionAccessType(each));
+ result = new SetTransactionStatement(getDatabaseType(), null, getTransactionIsolationLevel(each.isoLevel()), getTransactionAccessType(each));
}
}
return result;
@@ -103,66 +104,66 @@ public final class PostgreSQLTCLStatementVisitor extends PostgreSQLStatementVisi
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitAbort(final AbortContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, ctx.colId().getText());
+ return new SavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitRollbackToSavepoint(final RollbackToSavepointContext ctx) {
- return new RollbackStatement(databaseType, ctx.colId().getText());
+ return new RollbackStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitReleaseSavepoint(final ReleaseSavepointContext ctx) {
- return new ReleaseSavepointStatement(databaseType, ctx.colId().getText());
+ return new ReleaseSavepointStatement(getDatabaseType(), ctx.colId().getText());
}
@Override
public ASTNode visitStartTransaction(final StartTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitEnd(final EndContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitSetConstraints(final SetConstraintsContext ctx) {
- return new SetConstraintsStatement(databaseType);
+ return new SetConstraintsStatement(getDatabaseType());
}
@Override
public ASTNode visitPrepareTransaction(final PrepareTransactionContext ctx) {
- return new XAPrepareStatement(databaseType, ctx.gid().getText());
+ return new XAPrepareStatement(getDatabaseType(), ctx.gid().getText());
}
@Override
public ASTNode visitCommitPrepared(final CommitPreparedContext ctx) {
- return new XACommitStatement(databaseType, ctx.gid().getText());
+ return new XACommitStatement(getDatabaseType(), ctx.gid().getText());
}
@Override
public ASTNode visitRollbackPrepared(final RollbackPreparedContext ctx) {
- return new XARollbackStatement(databaseType, ctx.gid().getText());
+ return new XARollbackStatement(getDatabaseType(), ctx.gid().getText());
}
}
diff --git a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/PrestoStatementVisitor.java b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/PrestoStatementVisitor.java
index b78e98c1b74..6a25317c9c1 100644
--- a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/PrestoStatementVisitor.java
+++ b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/PrestoStatementVisitor.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.sql.parser.presto.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.PrestoStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PrestoStatementParser.BitExprContext;
@@ -102,9 +104,12 @@ import java.util.List;
/**
* Statement visitor for presto.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class PrestoStatementVisitor extends PrestoStatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
diff --git a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDDLStatementVisitor.java b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
index e60cb5e7998..90487d5d533 100644
--- a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
+++ b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.presto.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PrestoStatementParser.CharsetNameContext;
@@ -55,11 +54,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.value.identifier.Iden
*/
public final class PrestoDDLStatementVisitor extends PrestoStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Presto");
+ public PrestoDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.REPLACE());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.select()));
@@ -70,7 +71,7 @@ public final class PrestoDDLStatementVisitor extends PrestoStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getViews().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.viewNames())).getValue());
return result;
@@ -79,7 +80,7 @@ public final class PrestoDDLStatementVisitor extends PrestoStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIfNotExists(null != ctx.ifNotExists());
if (null != ctx.createDefinitionClause()) {
@@ -125,7 +126,7 @@ public final class PrestoDDLStatementVisitor extends PrestoStatementVisitor impl
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue());
return result;
diff --git a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
index 8cadb374c8a..a51d3e6854d 100644
--- a/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
+++ b/parser/sql/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
@@ -21,7 +21,6 @@ import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.PrestoStatementParser.AggregationFunctionContext;
@@ -198,7 +197,9 @@ import java.util.stream.Collectors;
*/
public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "Presto");
+ public PrestoDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSubquery(final SubqueryContext ctx) {
@@ -264,7 +265,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
return visit(ctx.queryPrimary());
}
if (null != ctx.queryExpressionBody()) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionBody().start.getStartIndex(), ctx.queryExpressionBody().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionBody()), getOriginalText(ctx.queryExpressionBody()));
result.setProjections(left.getSelect().getProjections());
@@ -273,7 +274,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
return result;
}
if (null != ctx.queryExpressionParens()) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
SubquerySegment left = new SubquerySegment(ctx.queryExpressionParens().start.getStartIndex(), ctx.queryExpressionParens().stop.getStopIndex(),
(SelectStatement) visit(ctx.queryExpressionParens()), getOriginalText(ctx.queryExpressionParens()));
result.setProjections(left.getSelect().getProjections());
@@ -298,7 +299,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitQuerySpecification(final QuerySpecificationContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (null != ctx.selectSpecification()) {
result.getProjections().setDistinctRow(isDistinct(ctx));
@@ -331,7 +332,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitTableValueConstructor(final TableValueConstructorContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
int startIndex = ctx.getStart().getStartIndex();
int stopIndex = ctx.getStop().getStopIndex();
ValuesExpression valuesExpression = new ValuesExpression(startIndex, stopIndex);
@@ -351,7 +352,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitTableStatement(final TableStatementContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
if (null != ctx.TABLE()) {
result.setFrom(new SimpleTableSegment(new TableNameSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex(),
new IdentifierValue(ctx.tableName().getText()))));
@@ -818,7 +819,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
} else if (null != ctx.insertSelectClause()) {
result = (InsertStatement) visit(ctx.insertSelectClause());
} else {
- result = new InsertStatement(databaseType);
+ result = new InsertStatement(getDatabaseType());
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
}
if (null != ctx.onDuplicateKeyClause()) {
@@ -831,7 +832,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitInsertSelectClause(final InsertSelectClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
@@ -852,7 +853,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.LP_()) {
if (null != ctx.fields()) {
result.setInsertColumns(new InsertColumnsSegment(ctx.LP_().getSymbol().getStartIndex(), ctx.RP_().getSymbol().getStopIndex(), createInsertColumns(ctx.fields())));
@@ -893,7 +894,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
TableSegment tableSegment = (TableSegment) visit(ctx.tableReferences());
result.setTable(tableSegment);
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
@@ -958,7 +959,7 @@ public final class PrestoDMLStatementVisitor extends PrestoStatementVisitor impl
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
if (null != ctx.multipleTablesClause()) {
result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
} else {
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java
index fe6bbb0456b..89f97eeb4f7 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/SQL92StatementVisitor.java
@@ -19,10 +19,12 @@ package org.apache.shardingsphere.sql.parser.sql92.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AggregationFunctionContext;
@@ -107,9 +109,12 @@ import java.util.stream.Collectors;
/**
* Statement visitor for SQL92.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class SQL92StatementVisitor extends SQL92StatementBaseVisitor<ASTNode> {
+ private final DatabaseType databaseType;
+
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
@Override
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DALStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DALStatementVisitor.java
index dbf271e385a..09d5c2ef13f 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DALStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DALStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.SQL92StatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.sql92.visitor.statement.SQL92Stateme
* DAL statement visitor for SQL92.
*/
public final class SQL92DALStatementVisitor extends SQL92StatementVisitor implements DALStatementVisitor {
+
+ public SQL92DALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
index 9e51d69dc17..9a68ffc84c8 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.GrantContext;
@@ -33,11 +32,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dcl.Re
*/
public final class SQL92DCLStatementVisitor extends SQL92StatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQL92");
+ public SQL92DCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- GrantStatement result = new GrantStatement(databaseType);
+ GrantStatement result = new GrantStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
@@ -46,7 +47,7 @@ public final class SQL92DCLStatementVisitor extends SQL92StatementVisitor implem
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- RevokeStatement result = new RevokeStatement(databaseType);
+ RevokeStatement result = new RevokeStatement(getDatabaseType());
if (null != ctx.privilegeClause()) {
result.getTables().add((SimpleTableSegment) visit(ctx.privilegeClause().onObjectClause().privilegeLevel().tableName()));
}
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
index 95308fa2cb2..705490dbda8 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AddColumnSpecificationContext;
@@ -66,12 +65,14 @@ import java.util.Collections;
*/
public final class SQL92DDLStatementVisitor extends SQL92StatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQL92");
+ public SQL92DDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.createDefinitionClause()) {
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) visit(ctx.createDefinitionClause());
@@ -161,7 +162,7 @@ public final class SQL92DDLStatementVisitor extends SQL92StatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
if (null != ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(ctx.alterDefinitionClause())).getValue()) {
@@ -221,7 +222,7 @@ public final class SQL92DDLStatementVisitor extends SQL92StatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
return result;
}
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
index 96478ec9e2a..5b5955d3fb0 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.type;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.AliasContext;
@@ -105,7 +104,9 @@ import java.util.stream.Collectors;
*/
public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implements DMLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQL92");
+ public SQL92DMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitInsert(final InsertContext ctx) {
@@ -118,7 +119,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
@SuppressWarnings("unchecked")
@Override
public ASTNode visitInsertValuesClause(final InsertValuesClauseContext ctx) {
- InsertStatement result = new InsertStatement(databaseType);
+ InsertStatement result = new InsertStatement(getDatabaseType());
if (null != ctx.columnNames()) {
ColumnNamesContext columnNames = ctx.columnNames();
CollectionValue<ColumnSegment> columnSegments = (CollectionValue<ColumnSegment>) visit(columnNames);
@@ -140,7 +141,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
@Override
public ASTNode visitUpdate(final UpdateContext ctx) {
- UpdateStatement result = new UpdateStatement(databaseType);
+ UpdateStatement result = new UpdateStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.tableReferences()));
result.setSetAssignment((SetAssignmentSegment) visit(ctx.setAssignmentsClause()));
if (null != ctx.whereClause()) {
@@ -190,7 +191,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
@Override
public ASTNode visitDelete(final DeleteContext ctx) {
- DeleteStatement result = new DeleteStatement(databaseType);
+ DeleteStatement result = new DeleteStatement(getDatabaseType());
result.setTable((TableSegment) visit(ctx.singleTableClause()));
if (null != ctx.whereClause()) {
result.setWhere((WhereSegment) visit(ctx.whereClause()));
@@ -224,7 +225,7 @@ public final class SQL92DMLStatementVisitor extends SQL92StatementVisitor implem
@Override
public ASTNode visitSelectClause(final SelectClauseContext ctx) {
- SelectStatement result = new SelectStatement(databaseType);
+ SelectStatement result = new SelectStatement(getDatabaseType());
result.setProjections((ProjectionsSegment) visit(ctx.projections()));
if (!ctx.selectSpecification().isEmpty()) {
result.getProjections().setDistinctRow(isDistinct(ctx.selectSpecification().get(0)));
diff --git a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92TCLStatementVisitor.java b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92TCLStatementVisitor.java
index 221859a554b..e7f484a0a4a 100644
--- a/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92TCLStatementVisitor.java
+++ b/parser/sql/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/sql92/visitor/statement/type/SQL92TCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.sql92.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQL92StatementParser.CommitContext;
@@ -34,20 +33,22 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.Se
*/
public final class SQL92TCLStatementVisitor extends SQL92StatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQL92");
+ public SQL92TCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType);
+ return new SetTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
index fd745d882ae..8760b9d51f0 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/SQLServerStatementVisitor.java
@@ -19,13 +19,13 @@ package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.RequiredArgsConstructor;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.misc.Interval;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementBaseVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AggregationClauseContext;
@@ -253,10 +253,11 @@ import java.util.stream.Collectors;
/**
* Statement visitor for SQLServer.
*/
+@RequiredArgsConstructor
@Getter(AccessLevel.PROTECTED)
public abstract class SQLServerStatementVisitor extends SQLServerStatementBaseVisitor<ASTNode> {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQLServer");
+ private final DatabaseType databaseType;
private final Collection<ParameterMarkerSegment> parameterMarkerSegments = new LinkedList<>();
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDALStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDALStatementVisitor.java
index 8a3a9c9fc53..dbc273166e4 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDALStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDALStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DALStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.ExplainContext;
@@ -32,11 +31,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.Ex
*/
public final class SQLServerDALStatementVisitor extends SQLServerStatementVisitor implements DALStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQLServer");
+ public SQLServerDALStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitExplain(final ExplainContext ctx) {
- return new ExplainStatement(databaseType, (SQLStatement) visit(ctx.explainableStatement()));
+ return new ExplainStatement(getDatabaseType(), (SQLStatement) visit(ctx.explainableStatement()));
}
@Override
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
index 483e9b443d9..e9d8f575a78 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AlterLoginContext;
@@ -78,11 +77,13 @@ import java.util.Optional;
*/
public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisitor implements DCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQLServer");
+ public SQLServerDCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitGrant(final GrantContext ctx) {
- SQLServerGrantStatement result = new SQLServerGrantStatement(databaseType);
+ SQLServerGrantStatement result = new SQLServerGrantStatement(getDatabaseType());
if (null != ctx.grantClassPrivilegesClause()) {
findTableSegment(ctx.grantClassPrivilegesClause().onClassClause(), ctx.grantClassPrivilegesClause().classPrivileges()).ifPresent(optional -> result.getTables().add(optional));
if (null != ctx.grantClassPrivilegesClause().classPrivileges().columnNames()) {
@@ -99,7 +100,7 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitRevoke(final RevokeContext ctx) {
- SQLServerRevokeStatement result = new SQLServerRevokeStatement(databaseType);
+ SQLServerRevokeStatement result = new SQLServerRevokeStatement(getDatabaseType());
if (null != ctx.revokeClassPrivilegesClause()) {
findTableSegment(ctx.revokeClassPrivilegesClause().onClassClause(), ctx.revokeClassPrivilegesClause().classPrivileges()).ifPresent(optional -> result.getTables().add(optional));
if (null != ctx.revokeClassPrivilegesClause().classPrivileges().columnNames()) {
@@ -126,7 +127,7 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitCreateUser(final CreateUserContext ctx) {
- CreateUserStatement result = new CreateUserStatement(databaseType);
+ CreateUserStatement result = new CreateUserStatement(getDatabaseType());
if (null != ctx.createUserLoginClause()) {
result.getUsers().add((UserSegment) visit(ctx.createUserLoginClause().userName()));
} else if (null != ctx.createUserWindowsPrincipalClause()) {
@@ -179,12 +180,12 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitAlterUser(final AlterUserContext ctx) {
- return new AlterUserStatement(databaseType, (UserSegment) visit(ctx.userName()));
+ return new AlterUserStatement(getDatabaseType(), (UserSegment) visit(ctx.userName()));
}
@Override
public ASTNode visitDeny(final DenyContext ctx) {
- SQLServerDenyUserStatement result = new SQLServerDenyUserStatement(databaseType);
+ SQLServerDenyUserStatement result = new SQLServerDenyUserStatement(getDatabaseType());
if (null != ctx.denyClassPrivilegesClause()) {
findTableSegment(ctx.denyClassPrivilegesClause().onClassClause(), ctx.denyClassPrivilegesClause().classPrivileges()).ifPresent(result::setTable);
if (null != ctx.denyClassPrivilegesClause().classPrivileges().columnNames()) {
@@ -216,27 +217,27 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitDropUser(final DropUserContext ctx) {
- return new DropUserStatement(databaseType, Collections.singleton(((UserSegment) visit(ctx.userName())).getUser()));
+ return new DropUserStatement(getDatabaseType(), Collections.singleton(((UserSegment) visit(ctx.userName())).getUser()));
}
@Override
public ASTNode visitCreateRole(final CreateRoleContext ctx) {
- return new CreateRoleStatement(databaseType);
+ return new CreateRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterRole(final AlterRoleContext ctx) {
- return new AlterRoleStatement(databaseType);
+ return new AlterRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitDropRole(final DropRoleContext ctx) {
- return new DropRoleStatement(databaseType);
+ return new DropRoleStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateLogin(final CreateLoginContext ctx) {
- return new SQLServerCreateLoginStatement(databaseType,
+ return new SQLServerCreateLoginStatement(getDatabaseType(),
null == ctx.ignoredNameIdentifier()
? null
: new LoginSegment(
@@ -245,7 +246,7 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitAlterLogin(final AlterLoginContext ctx) {
- return new SQLServerAlterLoginStatement(databaseType, null == ctx.ignoredNameIdentifier()
+ return new SQLServerAlterLoginStatement(getDatabaseType(), null == ctx.ignoredNameIdentifier()
? null
: new LoginSegment(
ctx.ignoredNameIdentifier().getStart().getStartIndex(), ctx.ignoredNameIdentifier().getStop().getStopIndex(), (IdentifierValue) visit(ctx.ignoredNameIdentifier())));
@@ -253,13 +254,13 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitDropLogin(final DropLoginContext ctx) {
- return new SQLServerDropLoginStatement(databaseType, new LoginSegment(
+ return new SQLServerDropLoginStatement(getDatabaseType(), new LoginSegment(
ctx.ignoredNameIdentifier().getStart().getStartIndex(), ctx.ignoredNameIdentifier().getStop().getStopIndex(), (IdentifierValue) visit(ctx.ignoredNameIdentifier())));
}
@Override
public ASTNode visitSetUser(final SetUserContext ctx) {
- return new SQLServerSetUserStatement(databaseType, null == ctx.stringLiterals() ? null : getUserSegment(ctx));
+ return new SQLServerSetUserStatement(getDatabaseType(), null == ctx.stringLiterals() ? null : getUserSegment(ctx));
}
private UserSegment getUserSegment(final SetUserContext ctx) {
@@ -272,6 +273,6 @@ public final class SQLServerDCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitRevert(final RevertContext ctx) {
- return new SQLServerRevertStatement(databaseType);
+ return new SQLServerRevertStatement(getDatabaseType());
}
}
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
index 2c1d89ccadb..6affa9a97be 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.misc.Interval;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.AddColumnSpecificationContext;
@@ -131,7 +130,9 @@ import java.util.LinkedList;
*/
public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisitor implements DDLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQLServer");
+ public SQLServerDDLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitCreateTable(final CreateTableContext ctx) {
@@ -141,7 +142,7 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitCreateTableClause(final CreateTableClauseContext ctx) {
- CreateTableStatement result = new CreateTableStatement(databaseType);
+ CreateTableStatement result = new CreateTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
CollectionValue<CreateDefinitionSegment> createDefinitions = (CollectionValue<CreateDefinitionSegment>) generateCreateDefinitionSegment(ctx.createDefinitionClause().createTableDefinitions());
for (CreateDefinitionSegment each : createDefinitions.getValue()) {
@@ -233,7 +234,7 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitAlterTable(final AlterTableContext ctx) {
- AlterTableStatement result = new AlterTableStatement(databaseType);
+ AlterTableStatement result = new AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
for (AlterDefinitionClauseContext alterDefinitionClauseContext : ctx.alterDefinitionClause()) {
for (AlterDefinitionSegment each : ((CollectionValue<AlterDefinitionSegment>) visit(alterDefinitionClauseContext)).getValue()) {
@@ -314,7 +315,7 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@SuppressWarnings("unchecked")
@Override
public ASTNode visitDropTable(final DropTableContext ctx) {
- DropTableStatement result = new DropTableStatement(databaseType);
+ DropTableStatement result = new DropTableStatement(getDatabaseType());
result.setContainsCascade(null != ctx.ifExists());
result.getTables().addAll(((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue());
return result;
@@ -322,13 +323,13 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitTruncateTable(final TruncateTableContext ctx) {
- return new TruncateStatement(databaseType, Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
+ return new TruncateStatement(getDatabaseType(), Collections.singleton((SimpleTableSegment) visit(ctx.tableName())));
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public ASTNode visitCreateIndex(final CreateIndexContext ctx) {
- CreateIndexStatement result = new CreateIndexStatement(databaseType);
+ CreateIndexStatement result = new CreateIndexStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
result.setIndex((IndexSegment) visit(ctx.indexName()));
result.getColumns().addAll(((CollectionValue) visit(ctx.columnNamesWithSort())).getValue());
@@ -342,7 +343,7 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
- AlterIndexStatement result = new AlterIndexStatement(databaseType);
+ AlterIndexStatement result = new AlterIndexStatement(getDatabaseType());
if (null != ctx.indexName()) {
result.setIndex((IndexSegment) visit(ctx.indexName()));
}
@@ -352,7 +353,7 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitDropIndex(final DropIndexContext ctx) {
- DropIndexStatement result = new DropIndexStatement(databaseType);
+ DropIndexStatement result = new DropIndexStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
@@ -375,22 +376,22 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitCreateDatabase(final CreateDatabaseContext ctx) {
- return new CreateDatabaseStatement(databaseType, ctx.databaseName().getText(), false);
+ return new CreateDatabaseStatement(getDatabaseType(), ctx.databaseName().getText(), false);
}
@Override
public ASTNode visitCreateFunction(final CreateFunctionContext ctx) {
- return new CreateFunctionStatement(databaseType);
+ return new CreateFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateProcedure(final CreateProcedureContext ctx) {
- return new CreateProcedureStatement(databaseType);
+ return new CreateProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateView(final CreateViewContext ctx) {
- CreateViewStatement result = new CreateViewStatement(databaseType);
+ CreateViewStatement result = new CreateViewStatement(getDatabaseType());
result.setReplaceView(null != ctx.ALTER());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.createOrAlterViewClause().select()));
@@ -400,67 +401,67 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitCreateTrigger(final CreateTriggerContext ctx) {
- return new CreateTriggerStatement(databaseType);
+ return new CreateTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateSequence(final CreateSequenceContext ctx) {
- return new CreateSequenceStatement(databaseType, ctx.sequenceName().name().getText());
+ return new CreateSequenceStatement(getDatabaseType(), ctx.sequenceName().name().getText());
}
@Override
public ASTNode visitCreateSchema(final CreateSchemaContext ctx) {
- return new CreateSchemaStatement(databaseType);
+ return new CreateSchemaStatement(getDatabaseType());
}
@Override
public ASTNode visitCreateService(final CreateServiceContext ctx) {
- return new SQLServerCreateServiceStatement(databaseType);
+ return new SQLServerCreateServiceStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSchema(final AlterSchemaContext ctx) {
- return new AlterSchemaStatement(databaseType);
+ return new AlterSchemaStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterService(final AlterServiceContext ctx) {
- return new SQLServerAlterServiceStatement(databaseType);
+ return new SQLServerAlterServiceStatement(getDatabaseType());
}
@Override
public ASTNode visitDropSchema(final DropSchemaContext ctx) {
- return new DropSchemaStatement(databaseType);
+ return new DropSchemaStatement(getDatabaseType());
}
@Override
public ASTNode visitDropService(final DropServiceContext ctx) {
- return new SQLServerDropServiceStatement(databaseType);
+ return new SQLServerDropServiceStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterTrigger(final AlterTriggerContext ctx) {
- return new AlterTriggerStatement(databaseType);
+ return new AlterTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterSequence(final AlterSequenceContext ctx) {
- return new AlterSequenceStatement(databaseType, null);
+ return new AlterSequenceStatement(getDatabaseType(), null);
}
@Override
public ASTNode visitAlterProcedure(final AlterProcedureContext ctx) {
- return new AlterProcedureStatement(databaseType);
+ return new AlterProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterFunction(final AlterFunctionContext ctx) {
- return new AlterFunctionStatement(databaseType);
+ return new AlterFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitAlterView(final AlterViewContext ctx) {
- AlterViewStatement result = new AlterViewStatement(databaseType);
+ AlterViewStatement result = new AlterViewStatement(getDatabaseType());
result.setView((SimpleTableSegment) visit(ctx.viewName()));
result.setViewDefinition(getOriginalText(ctx.createOrAlterViewClause().select()));
result.setSelect((SelectStatement) visit(ctx.createOrAlterViewClause().select()));
@@ -469,27 +470,27 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
- return new AlterDatabaseStatement(databaseType);
+ return new AlterDatabaseStatement(getDatabaseType());
}
@Override
public ASTNode visitDropDatabase(final DropDatabaseContext ctx) {
- return new DropDatabaseStatement(databaseType, null, false);
+ return new DropDatabaseStatement(getDatabaseType(), null, false);
}
@Override
public ASTNode visitDropFunction(final DropFunctionContext ctx) {
- return new DropFunctionStatement(databaseType);
+ return new DropFunctionStatement(getDatabaseType());
}
@Override
public ASTNode visitDropProcedure(final DropProcedureContext ctx) {
- return new DropProcedureStatement(databaseType);
+ return new DropProcedureStatement(getDatabaseType());
}
@Override
public ASTNode visitDropView(final DropViewContext ctx) {
- DropViewStatement result = new DropViewStatement(databaseType);
+ DropViewStatement result = new DropViewStatement(getDatabaseType());
result.setIfExists(null != ctx.ifExists());
for (ViewNameContext each : ctx.viewName()) {
result.getViews().add((SimpleTableSegment) visit(each));
@@ -499,11 +500,11 @@ public final class SQLServerDDLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitDropTrigger(final DropTriggerContext ctx) {
- return new DropTriggerStatement(databaseType);
+ return new DropTriggerStatement(getDatabaseType());
}
@Override
public ASTNode visitDropSequence(final DropSequenceContext ctx) {
- return new DropSequenceStatement(databaseType, Collections.emptyList());
+ return new DropSequenceStatement(getDatabaseType(), Collections.emptyList());
}
}
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDMLStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDMLStatementVisitor.java
index 7a276bd9f0f..a6556451161 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDMLStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerDMLStatementVisitor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DMLStatementVisitor;
import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.SQLServerStatementVisitor;
@@ -24,4 +25,8 @@ import org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.SQLServe
* DML statement visitor for SQLServer.
*/
public final class SQLServerDMLStatementVisitor extends SQLServerStatementVisitor implements DMLStatementVisitor {
+
+ public SQLServerDMLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
}
diff --git a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerTCLStatementVisitor.java b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerTCLStatementVisitor.java
index 24f223ac8a1..8505d4dfec2 100644
--- a/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerTCLStatementVisitor.java
+++ b/parser/sql/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/sqlserver/visitor/statement/type/SQLServerTCLStatementVisitor.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.sql.parser.sqlserver.visitor.statement.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.statement.type.TCLStatementVisitor;
import org.apache.shardingsphere.sql.parser.autogen.SQLServerStatementParser.BeginDistributedTransactionContext;
@@ -46,11 +45,13 @@ import org.apache.shardingsphere.sql.parser.statement.core.statement.type.tcl.xa
*/
public final class SQLServerTCLStatementVisitor extends SQLServerStatementVisitor implements TCLStatementVisitor {
- private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "SQLServer");
+ public SQLServerTCLStatementVisitor(final DatabaseType databaseType) {
+ super(databaseType);
+ }
@Override
public ASTNode visitSetTransaction(final SetTransactionContext ctx) {
- return new SetTransactionStatement(databaseType, null, getTransactionIsolationLevel(ctx.isolationLevel()), null);
+ return new SetTransactionStatement(getDatabaseType(), null, getTransactionIsolationLevel(ctx.isolationLevel()), null);
}
private TransactionIsolationLevel getTransactionIsolationLevel(final IsolationLevelContext ctx) {
@@ -71,37 +72,37 @@ public final class SQLServerTCLStatementVisitor extends SQLServerStatementVisito
@Override
public ASTNode visitSetImplicitTransactions(final SetImplicitTransactionsContext ctx) {
- return new SetAutoCommitStatement(databaseType, "ON".equalsIgnoreCase(ctx.implicitTransactionsValue().getText()));
+ return new SetAutoCommitStatement(getDatabaseType(), "ON".equalsIgnoreCase(ctx.implicitTransactionsValue().getText()));
}
@Override
public ASTNode visitBeginTransaction(final BeginTransactionContext ctx) {
- return new BeginTransactionStatement(databaseType);
+ return new BeginTransactionStatement(getDatabaseType());
}
@Override
public ASTNode visitCommit(final CommitContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitCommitWork(final CommitWorkContext ctx) {
- return new CommitStatement(databaseType);
+ return new CommitStatement(getDatabaseType());
}
@Override
public ASTNode visitRollback(final RollbackContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitRollbackWork(final RollbackWorkContext ctx) {
- return new RollbackStatement(databaseType);
+ return new RollbackStatement(getDatabaseType());
}
@Override
public ASTNode visitSavepoint(final SavepointContext ctx) {
- return new SavepointStatement(databaseType, null);
+ return new SavepointStatement(getDatabaseType(), null);
}
@Override
@@ -112,6 +113,6 @@ public final class SQLServerTCLStatementVisitor extends SQLServerStatementVisito
} else if (null != ctx.transactionVariableName()) {
xid = ctx.transactionVariableName().getText();
}
- return new XABeginStatement(databaseType, xid);
+ return new XABeginStatement(getDatabaseType(), xid);
}
}
diff --git a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
index c5dfd4fad5e..5f78c0d3835 100644
--- a/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
+++ b/parser/sql/engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLStatementVisitorFactory.java
@@ -42,24 +42,24 @@ public final class SQLStatementVisitorFactory {
*/
public static SQLStatementVisitor newInstance(final DatabaseType databaseType, final SQLVisitorRule visitorRule) {
SQLStatementVisitorFacade facade = DatabaseTypedSPILoader.getService(SQLStatementVisitorFacade.class, databaseType);
- return createParseTreeVisitor(facade, visitorRule.getType());
+ return createParseTreeVisitor(databaseType, facade, visitorRule.getType());
}
@SneakyThrows(ReflectiveOperationException.class)
- private static SQLStatementVisitor createParseTreeVisitor(final SQLStatementVisitorFacade visitorFacade, final SQLStatementType type) {
+ private static SQLStatementVisitor createParseTreeVisitor(final DatabaseType databaseType, final SQLStatementVisitorFacade visitorFacade, final SQLStatementType type) {
switch (type) {
case DML:
- return visitorFacade.getDMLVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getDMLVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
case DDL:
- return visitorFacade.getDDLVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getDDLVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
case TCL:
- return visitorFacade.getTCLVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getTCLVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
case LCL:
- return visitorFacade.getLCLVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getLCLVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
case DCL:
- return visitorFacade.getDCLVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getDCLVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
case DAL:
- return visitorFacade.getDALVisitorClass().getConstructor().newInstance();
+ return visitorFacade.getDALVisitorClass().getConstructor(DatabaseType.class).newInstance(databaseType);
default:
throw new SQLParsingException(type.name());
}
diff --git a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyState.java b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyState.java
index f42af6a8aa5..3acc171a439 100644
--- a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyState.java
+++ b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/state/impl/OKProxyState.java
@@ -42,7 +42,8 @@ public final class OKProxyState implements ProxyState {
}
private ExecutorService determineSuitableExecutorService(final ConnectionSession connectionSession) {
- return requireOccupyThreadForConnection(connectionSession) ? ConnectionThreadExecutorGroup.getInstance().get(connectionSession.getConnectionId())
+ return requireOccupyThreadForConnection(connectionSession)
+ ? ConnectionThreadExecutorGroup.getInstance().get(connectionSession.getConnectionId())
: UserExecutorGroup.getInstance().getExecutorService();
}