This is an automated email from the ASF dual-hosted git repository.
panjuan 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 ddd99fd3c39 Add UnknownSQLStatementContext and make
CommonSQLStatementContext as abstract (#25675)
ddd99fd3c39 is described below
commit ddd99fd3c39f4d46f388d34170b382d0a5792c91
Author: Liang Zhang <[email protected]>
AuthorDate: Mon May 15 16:04:55 2023 +0800
Add UnknownSQLStatementContext and make CommonSQLStatementContext as
abstract (#25675)
* Fix sonar issue of PacketCodec
* Add UnknownSQLStatementContext and make CommonSQLStatementContext as
abstract
---
.../core/advice/SQLRouteCountAdviceTest.java | 14 +++++-----
.../db/protocol/codec/PacketCodec.java | 2 ++
.../merge/ShardingResultMergerEngineTest.java | 6 ++--
.../ShardingAlterViewStatementValidatorTest.java | 10 +++----
...ardingCreateFunctionStatementValidatorTest.java | 10 +++----
...rdingCreateProcedureStatementValidatorTest.java | 10 +++----
.../ShardingDropTableStatementValidatorTest.java | 4 +--
.../infra/binder/SQLStatementContextFactory.java | 10 +++----
.../statement/CommonSQLStatementContext.java | 2 +-
.../statement/UnknownSQLStatementContext.java | 32 ++++++++++++++++++++++
.../ddl/SingleDropSchemaMetaDataValidatorTest.java | 4 +--
.../admin/PostgreSQLAdminExecutorCreatorTest.java | 10 +++----
.../execute/MySQLComStmtExecuteExecutorTest.java | 6 ++--
.../command/query/extended/PortalTest.java | 12 ++++----
.../bind/PostgreSQLComBindExecutorTest.java | 4 +--
15 files changed, 85 insertions(+), 51 deletions(-)
diff --git
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index 7ba2bd2d160..8df5936c1e5 100644
---
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -20,11 +20,11 @@ package
org.apache.shardingsphere.agent.plugin.metrics.core.advice;
import
org.apache.shardingsphere.agent.plugin.metrics.core.collector.MetricsCollectorRegistry;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricCollectorType;
import
org.apache.shardingsphere.agent.plugin.metrics.core.config.MetricConfiguration;
-import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.TargetAdviceObjectFixture;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
+import
org.apache.shardingsphere.agent.plugin.metrics.core.fixture.collector.MetricsCollectorFixture;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLDeleteStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLInsertStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLSelectStatement;
@@ -52,25 +52,25 @@ class SQLRouteCountAdviceTest {
@Test
void assertInsertRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLInsertStatement()), "",
Collections.emptyList());
+ QueryContext queryContext = new QueryContext(new
UnknownSQLStatementContext<>(new MySQLInsertStatement()), "",
Collections.emptyList());
assertRoute(queryContext, "INSERT=1");
}
@Test
void assertUpdateRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLUpdateStatement()), "",
Collections.emptyList());
+ QueryContext queryContext = new QueryContext(new
UnknownSQLStatementContext<>(new MySQLUpdateStatement()), "",
Collections.emptyList());
assertRoute(queryContext, "UPDATE=1");
}
@Test
void assertDeleteRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLDeleteStatement()), "",
Collections.emptyList());
+ QueryContext queryContext = new QueryContext(new
UnknownSQLStatementContext<>(new MySQLDeleteStatement()), "",
Collections.emptyList());
assertRoute(queryContext, "DELETE=1");
}
@Test
void assertSelectRoute() {
- QueryContext queryContext = new QueryContext(new
CommonSQLStatementContext<>(new MySQLSelectStatement()), "",
Collections.emptyList());
+ QueryContext queryContext = new QueryContext(new
UnknownSQLStatementContext<>(new MySQLSelectStatement()), "",
Collections.emptyList());
assertRoute(queryContext, "SELECT=1");
}
diff --git
a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
index 0a3e356f89f..df31b27a178 100644
---
a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
+++
b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
@@ -34,8 +34,10 @@ import java.util.List;
@Slf4j
public final class PacketCodec extends ByteToMessageCodec<DatabasePacket<?>> {
+ @SuppressWarnings("rawtypes")
private final DatabasePacketCodecEngine databasePacketCodecEngine;
+ @SuppressWarnings("unchecked")
@Override
protected void decode(final ChannelHandlerContext context, final ByteBuf
in, final List<Object> out) {
int readableBytes = in.readableBytes();
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
index 1605fe68187..1be199c2dfb 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/merge/ShardingResultMergerEngineTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.sharding.merge;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -104,7 +104,7 @@ class ShardingResultMergerEngineTest {
@Test
void assertNewInstanceWithDALStatement() {
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
- CommonSQLStatementContext<PostgreSQLShowStatement> sqlStatementContext
= new CommonSQLStatementContext<>(new PostgreSQLShowStatement(""));
+ UnknownSQLStatementContext<PostgreSQLShowStatement>
sqlStatementContext = new UnknownSQLStatementContext<>(new
PostgreSQLShowStatement(""));
assertThat(new
ShardingResultMergerEngine().newInstance(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "MySQL"), null, props,
sqlStatementContext),
instanceOf(ShardingDALResultMerger.class));
}
@@ -130,7 +130,7 @@ class ShardingResultMergerEngineTest {
@Test
void assertNewInstanceWithDDLStatement() {
ConfigurationProperties props = new ConfigurationProperties(new
Properties());
- CommonSQLStatementContext<OpenGaussFetchStatement> sqlStatementContext
= new CommonSQLStatementContext<>(new OpenGaussFetchStatement());
+ UnknownSQLStatementContext<OpenGaussFetchStatement>
sqlStatementContext = new UnknownSQLStatementContext<>(new
OpenGaussFetchStatement());
assertThat(new
ShardingResultMergerEngine().newInstance(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "MySQL"), null, props,
sqlStatementContext),
instanceOf(ShardingDDLResultMerger.class));
}
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
index e90701ee99f..9f7802d5d53 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingAlterViewStatementValidatorTest.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.ddl.AlterViewStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.sharding.exception.syntax.RenamedViewWithoutSameConfigurationException;
@@ -56,7 +56,7 @@ class ShardingAlterViewStatementValidatorTest {
selectStatement.setFrom(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("t_order"))));
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
- SQLStatementContext<AlterViewStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<AlterViewStatement> sqlStatementContext = new
AlterViewStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(shardingRule.isShardingTable("t_order")).thenReturn(false);
assertDoesNotThrow(() -> new
ShardingAlterViewStatementValidator().preValidate(shardingRule,
sqlStatementContext, Collections.emptyList(), database,
mock(ConfigurationProperties.class)));
@@ -69,7 +69,7 @@ class ShardingAlterViewStatementValidatorTest {
MySQLAlterViewStatement sqlStatement = new MySQLAlterViewStatement();
sqlStatement.setSelect(selectStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
- SQLStatementContext<AlterViewStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<AlterViewStatement> sqlStatementContext = new
AlterViewStatementContext(sqlStatement);
when(shardingRule.isShardingTable("t_order")).thenReturn(true);
assertThrows(UnsupportedShardingOperationException.class,
() -> new
ShardingAlterViewStatementValidator().preValidate(shardingRule,
sqlStatementContext, Collections.emptyList(), database,
mock(ConfigurationProperties.class)));
@@ -80,7 +80,7 @@ class ShardingAlterViewStatementValidatorTest {
OpenGaussAlterViewStatement selectStatement = new
OpenGaussAlterViewStatement();
selectStatement.setView(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("t_order"))));
selectStatement.setRenameView(new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
- SQLStatementContext<AlterViewStatement> sqlStatementContext = new
CommonSQLStatementContext<>(selectStatement);
+ SQLStatementContext<AlterViewStatement> sqlStatementContext = new
AlterViewStatementContext(selectStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(shardingRule.isBroadcastTable("t_order")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_order_new")).thenReturn(true);
@@ -92,7 +92,7 @@ class ShardingAlterViewStatementValidatorTest {
OpenGaussAlterViewStatement selectStatement = new
OpenGaussAlterViewStatement();
selectStatement.setView(new SimpleTableSegment(new TableNameSegment(0,
0, new IdentifierValue("t_order"))));
selectStatement.setRenameView(new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
- SQLStatementContext<AlterViewStatement> sqlStatementContext = new
CommonSQLStatementContext<>(selectStatement);
+ SQLStatementContext<AlterViewStatement> sqlStatementContext = new
AlterViewStatementContext(selectStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(shardingRule.isBroadcastTable("t_order")).thenReturn(true);
when(shardingRule.isBroadcastTable("t_order_new")).thenReturn(false);
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
index 64874446487..1f582929452 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateFunctionStatementValidatorTest.java
@@ -19,8 +19,8 @@ package
org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import
org.apache.shardingsphere.dialect.exception.syntax.table.NoSuchTableException;
import
org.apache.shardingsphere.dialect.exception.syntax.table.TableExistsException;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.ddl.CreateFunctionStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.DefaultDatabase;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -69,7 +69,7 @@ class ShardingCreateFunctionStatementValidatorTest {
routineBody.getValidStatements().add(selectValidStatementSegment);
MySQLCreateFunctionStatement sqlStatement = new
MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CreateFunctionStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order_item")).thenReturn(true);
@@ -87,7 +87,7 @@ class ShardingCreateFunctionStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateFunctionStatement sqlStatement = new
MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CreateFunctionStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db_schema");
assertThrows(NoSuchTableException.class,
@@ -104,7 +104,7 @@ class ShardingCreateFunctionStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateFunctionStatement sqlStatement = new
MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CreateFunctionStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db_schema");
assertThrows(NoSuchTableException.class,
@@ -121,7 +121,7 @@ class ShardingCreateFunctionStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateFunctionStatement sqlStatement = new
MySQLCreateFunctionStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateFunctionStatement> sqlStatementContext = new
CreateFunctionStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
index affe5288cf7..f1ab1e8dc6b 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingCreateProcedureStatementValidatorTest.java
@@ -19,8 +19,8 @@ package
org.apache.shardingsphere.sharding.route.engine.validator.ddl;
import
org.apache.shardingsphere.dialect.exception.syntax.table.NoSuchTableException;
import
org.apache.shardingsphere.dialect.exception.syntax.table.TableExistsException;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.ddl.CreateProcedureStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.DefaultDatabase;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -73,7 +73,7 @@ class ShardingCreateProcedureStatementValidatorTest {
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order_item")).thenReturn(true);
when(shardingRule.isShardingTable("t_order_item")).thenReturn(false);
- SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CreateProcedureStatementContext(sqlStatement);
assertDoesNotThrow(() -> new
ShardingCreateProcedureStatementValidator().preValidate(
shardingRule, sqlStatementContext, Collections.emptyList(),
database, mock(ConfigurationProperties.class)));
}
@@ -88,7 +88,7 @@ class ShardingCreateProcedureStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateProcedureStatement sqlStatement = new
MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CreateProcedureStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db_schema");
assertThrows(NoSuchTableException.class,
@@ -105,7 +105,7 @@ class ShardingCreateProcedureStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateProcedureStatement sqlStatement = new
MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CreateProcedureStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db_schema");
assertThrows(NoSuchTableException.class,
@@ -122,7 +122,7 @@ class ShardingCreateProcedureStatementValidatorTest {
routineBody.getValidStatements().add(validStatementSegment);
MySQLCreateProcedureStatement sqlStatement = new
MySQLCreateProcedureStatement();
sqlStatement.setRoutineBody(routineBody);
- SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<CreateProcedureStatement> sqlStatementContext =
new CreateProcedureStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn(DefaultDatabase.LOGIC_NAME);
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
diff --git
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
index 6831eef4a70..687132305d0 100644
---
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
+++
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/validator/ddl/ShardingDropTableStatementValidatorTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sharding.route.engine.validator.ddl;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.ddl.DropTableStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -83,9 +82,10 @@ class ShardingDropTableStatementValidatorTest {
void assertPreValidateDropTableForMySQL() {
MySQLDropTableStatement sqlStatement = new
MySQLDropTableStatement(false);
sqlStatement.getTables().add(new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order_item"))));
- SQLStatementContext<DropTableStatement> sqlStatementContext = new
CommonSQLStatementContext<>(sqlStatement);
+ SQLStatementContext<DropTableStatement> sqlStatementContext = new
DropTableStatementContext(sqlStatement);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db_schema");
+
when(database.getSchema("db_schema").containsTable("t_order_item")).thenReturn(true);
ShardingDropTableStatementValidator validator = new
ShardingDropTableStatementValidator();
validator.preValidate(shardingRule, sqlStatementContext,
Collections.emptyList(), database, mock(ConfigurationProperties.class));
Collection<RouteUnit> routeUnits = new LinkedList<>();
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/SQLStatementContextFactory.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/SQLStatementContextFactory.java
index 525cb0d491a..dcfcac1a18d 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/SQLStatementContextFactory.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/SQLStatementContextFactory.java
@@ -19,8 +19,8 @@ package org.apache.shardingsphere.infra.binder;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dal.AnalyzeTableStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dal.ExplainStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dal.FlushStatementContext;
@@ -157,7 +157,7 @@ public final class SQLStatementContextFactory {
if (sqlStatement instanceof DALStatement) {
return getDALStatementContext((DALStatement) sqlStatement);
}
- return new CommonSQLStatementContext<>(sqlStatement);
+ return new UnknownSQLStatementContext<>(sqlStatement);
}
private static SQLStatementContext<?> getDMLStatementContext(final
ShardingSphereMetaData metaData,
@@ -254,7 +254,7 @@ public final class SQLStatementContextFactory {
if (sqlStatement instanceof FetchStatement) {
return new FetchStatementContext((FetchStatement) sqlStatement);
}
- return new CommonSQLStatementContext<>(sqlStatement);
+ return new UnknownSQLStatementContext<>(sqlStatement);
}
private static SQLStatementContext<?> getDCLStatementContext(final
DCLStatement sqlStatement) {
@@ -267,7 +267,7 @@ public final class SQLStatementContextFactory {
if (sqlStatement instanceof SQLServerDenyUserStatement) {
return new DenyUserStatementContext((SQLServerDenyUserStatement)
sqlStatement);
}
- return new CommonSQLStatementContext<>(sqlStatement);
+ return new UnknownSQLStatementContext<>(sqlStatement);
}
private static SQLStatementContext<?> getDALStatementContext(final
DALStatement sqlStatement) {
@@ -301,6 +301,6 @@ public final class SQLStatementContextFactory {
if (sqlStatement instanceof MySQLKillStatement) {
return new KillStatementContext((MySQLKillStatement) sqlStatement);
}
- return new CommonSQLStatementContext<>(sqlStatement);
+ return new UnknownSQLStatementContext<>(sqlStatement);
}
}
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/CommonSQLStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/CommonSQLStatementContext.java
index 77ec61835ea..2acff16838c 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/CommonSQLStatementContext.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/CommonSQLStatementContext.java
@@ -40,7 +40,7 @@ import java.util.Optional;
* @param <T> type of SQL statement
*/
@Getter
-public class CommonSQLStatementContext<T extends SQLStatement> implements
SQLStatementContext<T> {
+public abstract class CommonSQLStatementContext<T extends SQLStatement>
implements SQLStatementContext<T> {
private final T sqlStatement;
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/UnknownSQLStatementContext.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/UnknownSQLStatementContext.java
new file mode 100644
index 00000000000..d981f6f5b81
--- /dev/null
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/UnknownSQLStatementContext.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.infra.binder.statement;
+
+import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
+
+/**
+ * Unknown SQL statement context.
+ *
+ * @param <T> type of SQL statement
+ */
+public final class UnknownSQLStatementContext<T extends SQLStatement> extends
CommonSQLStatementContext<T> {
+
+ public UnknownSQLStatementContext(final T sqlStatement) {
+ super(sqlStatement);
+ }
+}
diff --git
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/validator/ddl/SingleDropSchemaMetaDataValidatorTest.java
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/validator/ddl/SingleDropSchemaMetaDataValidatorTest.java
index 89954ba6acf..98fafe3b1ac 100644
---
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/validator/ddl/SingleDropSchemaMetaDataValidatorTest.java
+++
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/route/validator/ddl/SingleDropSchemaMetaDataValidatorTest.java
@@ -17,8 +17,8 @@
package org.apache.shardingsphere.single.route.validator.ddl;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import org.apache.shardingsphere.infra.exception.SchemaNotFoundException;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -70,6 +70,6 @@ class SingleDropSchemaMetaDataValidatorTest {
PostgreSQLDropSchemaStatement dropSchemaStatement =
mock(PostgreSQLDropSchemaStatement.class, RETURNS_DEEP_STUBS);
when(dropSchemaStatement.isContainsCascade()).thenReturn(isCascade);
when(dropSchemaStatement.getSchemaNames()).thenReturn(Collections.singleton(new
IdentifierValue(schemaName)));
- return new CommonSQLStatementContext<>(dropSchemaStatement);
+ return new UnknownSQLStatementContext<>(dropSchemaStatement);
}
}
diff --git
a/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
index f110d7c0314..3e9e9c6c142 100644
---
a/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
+++
b/proxy/backend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.proxy.backend.postgresql.handler.admin;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.DeleteStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
@@ -82,12 +82,12 @@ class PostgreSQLAdminExecutorCreatorTest {
@Test
void assertCreateWithOtherSQLStatementContextOnly() {
- assertThat(new PostgreSQLAdminExecutorCreator().create(new
CommonSQLStatementContext<>(new PostgreSQLInsertStatement())),
is(Optional.empty()));
+ assertThat(new PostgreSQLAdminExecutorCreator().create(new
UnknownSQLStatementContext<>(new PostgreSQLInsertStatement())),
is(Optional.empty()));
}
@Test
void assertCreateWithShowSQLStatement() {
- Optional<DatabaseAdminExecutor> actual = new
PostgreSQLAdminExecutorCreator().create(new CommonSQLStatementContext<>(new
PostgreSQLShowStatement("client_encoding")));
+ Optional<DatabaseAdminExecutor> actual = new
PostgreSQLAdminExecutorCreator().create(new UnknownSQLStatementContext<>(new
PostgreSQLShowStatement("client_encoding")));
assertTrue(actual.isPresent());
assertThat(actual.get(),
instanceOf(PostgreSQLShowVariableExecutor.class));
}
@@ -146,7 +146,7 @@ class PostgreSQLAdminExecutorCreatorTest {
@Test
void assertCreateWithSetStatement() {
PostgreSQLSetStatement setStatement = new PostgreSQLSetStatement();
- CommonSQLStatementContext<PostgreSQLSetStatement> sqlStatementContext
= new CommonSQLStatementContext<>(setStatement);
+ UnknownSQLStatementContext<PostgreSQLSetStatement> sqlStatementContext
= new UnknownSQLStatementContext<>(setStatement);
Optional<DatabaseAdminExecutor> actual = new
PostgreSQLAdminExecutorCreator().create(sqlStatementContext, "SET
client_encoding = utf8", "", Collections.emptyList());
assertTrue(actual.isPresent());
assertThat(actual.get(),
instanceOf(PostgreSQLSetVariableAdminExecutor.class));
@@ -155,7 +155,7 @@ class PostgreSQLAdminExecutorCreatorTest {
@Test
void assertCreateWithResetStatement() {
Optional<DatabaseAdminExecutor> actual = new
PostgreSQLAdminExecutorCreator()
- .create(new CommonSQLStatementContext<>(new
PostgreSQLResetParameterStatement("client_encoding")), "RESET client_encoding",
"", Collections.emptyList());
+ .create(new UnknownSQLStatementContext<>(new
PostgreSQLResetParameterStatement("client_encoding")), "RESET client_encoding",
"", Collections.emptyList());
assertTrue(actual.isPresent());
assertThat(actual.get(),
instanceOf(PostgreSQLResetVariableAdminExecutor.class));
}
diff --git
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index 95e8832f387..7c462863bac 100644
---
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -28,12 +28,12 @@ import
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.e
import
org.apache.shardingsphere.db.protocol.mysql.packet.generic.MySQLEofPacket;
import
org.apache.shardingsphere.db.protocol.mysql.packet.generic.MySQLOKPacket;
import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.UpdateStatementContext;
import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import
org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandlerFactory;
@@ -109,7 +109,7 @@ class MySQLComStmtExecuteExecutorTest {
when(connectionSession.getServerPreparedStatementRegistry().getPreparedStatement(2))
.thenReturn(new MySQLServerPreparedStatement("UPDATE tbl SET
col=1 WHERE id = ?", updateStatementContext, Collections.emptyList()));
when(connectionSession.getServerPreparedStatementRegistry().getPreparedStatement(3))
- .thenReturn(new MySQLServerPreparedStatement("COMMIT", new
CommonSQLStatementContext<>(new MySQLCommitStatement()),
Collections.emptyList()));
+ .thenReturn(new MySQLServerPreparedStatement("COMMIT", new
UnknownSQLStatementContext<>(new MySQLCommitStatement()),
Collections.emptyList()));
}
private SQLStatementContext<?> prepareSelectStatementContext() {
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
index 2d0945ad0eb..ccb53d5c7f3 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PortalTest.java
@@ -27,15 +27,15 @@ import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.Pos
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.execute.PostgreSQLPortalSuspendedPacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.generic.PostgreSQLCommandCompletePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.handshake.PostgreSQLParameterStatusPacket;
-import org.apache.shardingsphere.infra.session.query.QueryContext;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.InsertStatementContext;
import
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import org.apache.shardingsphere.infra.hint.HintValueContext;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.util.reflection.ReflectionUtils;
import org.apache.shardingsphere.mode.manager.ContextManager;
import
org.apache.shardingsphere.proxy.backend.connector.ProxyDatabaseConnectionManager;
@@ -130,7 +130,7 @@ class PortalTest {
@Test
void assertGetName() throws SQLException {
Portal portal = new Portal("", new
PostgreSQLServerPreparedStatement("",
- new CommonSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList()), Collections.emptyList(),
Collections.emptyList(), databaseConnectionManager);
+ new UnknownSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList()), Collections.emptyList(),
Collections.emptyList(), databaseConnectionManager);
assertThat(portal.getName(), is(""));
}
@@ -211,7 +211,7 @@ class PortalTest {
void assertExecuteEmptyStatement() throws SQLException {
when(proxyBackendHandler.execute()).thenReturn(mock(UpdateResponseHeader.class));
when(proxyBackendHandler.next()).thenReturn(false);
- PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement("", new CommonSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList());
+ PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement("", new UnknownSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList());
Portal portal = new Portal("", preparedStatement,
Collections.emptyList(), Collections.emptyList(), databaseConnectionManager);
portal.bind();
assertThat(portal.describe(),
is(PostgreSQLNoDataPacket.getInstance()));
@@ -228,7 +228,7 @@ class PortalTest {
VariableAssignSegment variableAssignSegment = new
VariableAssignSegment();
variableAssignSegment.setVariable(new VariableSegment(0, 0,
"client_encoding"));
setStatement.getVariableAssigns().add(variableAssignSegment);
- PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement(sql, new
CommonSQLStatementContext<>(setStatement), Collections.emptyList());
+ PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement(sql, new
UnknownSQLStatementContext<>(setStatement), Collections.emptyList());
Portal portal = new Portal("", preparedStatement,
Collections.emptyList(), Collections.emptyList(), databaseConnectionManager);
portal.bind();
List<PostgreSQLPacket> actualPackets = portal.execute(0);
@@ -247,7 +247,7 @@ class PortalTest {
@Test
void assertClose() throws SQLException {
- PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement("", new CommonSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList());
+ PostgreSQLServerPreparedStatement preparedStatement = new
PostgreSQLServerPreparedStatement("", new UnknownSQLStatementContext<>(new
PostgreSQLEmptyStatement()), Collections.emptyList());
new Portal("", preparedStatement, Collections.emptyList(),
Collections.emptyList(), databaseConnectionManager).close();
verify(databaseConnectionManager).unmarkResourceInUse(proxyBackendHandler);
verify(proxyBackendHandler).close();
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
index 392a57e4d3a..33a6c5d5d37 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/bind/PostgreSQLComBindExecutorTest.java
@@ -20,7 +20,7 @@ package
org.apache.shardingsphere.proxy.frontend.postgresql.command.query.extend
import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.bind.PostgreSQLBindCompletePacket;
import
org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.extended.bind.PostgreSQLComBindPacket;
-import
org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.statement.UnknownSQLStatementContext;
import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.mode.manager.ContextManager;
@@ -81,7 +81,7 @@ class PostgreSQLComBindExecutorTest {
when(databaseConnectionManager.getConnectionSession()).thenReturn(connectionSession);
String statementId = "S_1";
connectionSession.getServerPreparedStatementRegistry().addPreparedStatement(statementId,
- new PostgreSQLServerPreparedStatement("", new
CommonSQLStatementContext<>(new PostgreSQLEmptyStatement()),
Collections.emptyList()));
+ new PostgreSQLServerPreparedStatement("", new
UnknownSQLStatementContext<>(new PostgreSQLEmptyStatement()),
Collections.emptyList()));
when(bindPacket.getStatementId()).thenReturn(statementId);
when(bindPacket.getPortal()).thenReturn("C_1");
when(bindPacket.readParameters(anyList())).thenReturn(Collections.emptyList());