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 a2661a750be Add FromDatabaseSQLStatementAttribute (#35777)
a2661a750be is described below
commit a2661a750be0301cb221ba8f549504f04cc8a5af
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jun 21 23:26:37 2025 +0800
Add FromDatabaseSQLStatementAttribute (#35777)
* Add FromDatabaseSQLStatementAttribute
* Add FromDatabaseSQLStatementAttribute
* Add FromDatabaseSQLStatementAttribute
* Add FromDatabaseSQLStatementAttribute
* Add FromDatabaseSQLStatementAttribute
* Add FromDatabaseSQLStatementAttribute
---
...adwriteSplittingStorageUnitStatusStatement.java | 11 ++---
...StatusFromReadwriteSplittingRulesStatement.java | 15 +++---
.../distsql/handler/util/DatabaseNameUtils.java | 11 ++---
.../handler/util/DatabaseNameUtilsTest.java | 16 +++---
.../ExportDatabaseConfigurationStatement.java | 9 ++--
.../queryable/show/ShowTableMetaDataStatement.java | 12 ++---
.../rql/resource/ShowStorageUnitsStatement.java | 11 +++--
.../rql/resource/ShowTablesStatement.java | 11 +++--
.../rule/database/ShowDatabaseRulesStatement.java | 13 ++---
.../type/FromDatabaseSQLStatementAttribute.java} | 17 ++++---
.../FromDatabaseAvailableSQLStatement.java | 35 -------------
.../statement/dal/ShowTableStatusStatement.java | 16 ++++--
.../core/statement/dal/ShowTablesStatement.java | 14 ++++--
.../dal/show/column/MySQLShowColumnsStatement.java | 26 +++++-----
.../dal/show/index/MySQLShowIndexStatement.java | 18 +++++--
.../distsql/DistSQLBackendHandlerFactoryTest.java | 57 ++++++++++++++++------
.../distsql/DistSQLQueryBackendHandlerTest.java | 7 +--
.../ShowTableMetaDataStatementAssert.java | 4 +-
...eSplittingStorageUnitStatusStatementAssert.java | 8 ++-
.../rql/impl/ShowRulesStatementAssert.java | 10 ++--
.../rql/impl/ShowStorageUnitsStatementAssert.java | 6 +--
.../rql/impl/ShowTablesStatementAssert.java | 6 +--
22 files changed, 173 insertions(+), 160 deletions(-)
diff --git
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/AlterReadwriteSplittingStorageUnitStatusStatement.java
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/AlterReadwriteSplittingStorageUnitStatusStatement.java
index 62bc3330a11..c0f2029cac8 100644
---
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/AlterReadwriteSplittingStorageUnitStatusStatement.java
+++
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/AlterReadwriteSplittingStorageUnitStatusStatement.java
@@ -21,16 +21,15 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.distsql.statement.ral.updatable.UpdatableRALStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
-
-import java.util.Optional;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
/**
* Set readwrite-splitting status statement.
*/
@RequiredArgsConstructor
@Getter
-public final class AlterReadwriteSplittingStorageUnitStatusStatement extends
UpdatableRALStatement implements FromDatabaseAvailableSQLStatement {
+public final class AlterReadwriteSplittingStorageUnitStatusStatement extends
UpdatableRALStatement {
private final FromDatabaseSegment fromDatabase;
@@ -41,7 +40,7 @@ public final class
AlterReadwriteSplittingStorageUnitStatusStatement extends Upd
private final boolean enable;
@Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
index 762ef2e58c1..0c7c0b5752e 100644
---
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
+++
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
@@ -20,7 +20,8 @@ package
org.apache.shardingsphere.readwritesplitting.distsql.statement;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.distsql.statement.rql.resource.ResourceQueryStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -28,17 +29,12 @@ import java.util.Optional;
* Show status from readwrite-splitting rules statement.
*/
@RequiredArgsConstructor
-public final class ShowStatusFromReadwriteSplittingRulesStatement extends
ResourceQueryStatement implements FromDatabaseAvailableSQLStatement {
+public final class ShowStatusFromReadwriteSplittingRulesStatement extends
ResourceQueryStatement {
private final FromDatabaseSegment fromDatabase;
private final String ruleName;
- @Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
- }
-
/**
* Get rule name.
*
@@ -47,4 +43,9 @@ public final class
ShowStatusFromReadwriteSplittingRulesStatement extends Resour
public Optional<String> getRuleName() {
return Optional.ofNullable(ruleName);
}
+
+ @Override
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
+ }
}
diff --git
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtils.java
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtils.java
index f86f1258cf4..4768f45f89e 100644
---
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtils.java
+++
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtils.java
@@ -20,9 +20,8 @@ package org.apache.shardingsphere.distsql.handler.util;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DatabaseSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -40,9 +39,9 @@ public final class DatabaseNameUtils {
* @return database name
*/
public static String getDatabaseName(final SQLStatement sqlStatement,
final String currentDatabaseName) {
- Optional<DatabaseSegment> databaseSegment = sqlStatement instanceof
FromDatabaseAvailableSQLStatement
- ? ((FromDatabaseAvailableSQLStatement)
sqlStatement).getFromDatabase().map(FromDatabaseSegment::getDatabase)
- : Optional.empty();
- return databaseSegment.map(optional ->
optional.getIdentifier().getValue()).orElse(currentDatabaseName);
+ Optional<FromDatabaseSQLStatementAttribute> fromDatabaseAttribute =
sqlStatement.getAttributes().findAttribute(FromDatabaseSQLStatementAttribute.class);
+ return fromDatabaseAttribute.isPresent()
+ ?
fromDatabaseAttribute.get().getFromDatabase().map(FromDatabaseSegment::getDatabase).map(optional
-> optional.getIdentifier().getValue()).orElse(currentDatabaseName)
+ : currentDatabaseName;
}
}
diff --git
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtilsTest.java
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtilsTest.java
index b29a8920d40..b8e6d218a3b 100644
---
a/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtilsTest.java
+++
b/infra/distsql-handler/src/test/java/org/apache/shardingsphere/distsql/handler/util/DatabaseNameUtilsTest.java
@@ -18,32 +18,32 @@
package org.apache.shardingsphere.distsql.handler.util;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import org.junit.jupiter.api.Test;
-import java.util.Optional;
-
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.withSettings;
class DatabaseNameUtilsTest {
@Test
void assertDatabaseNameWhenAvailableInSQLStatement() {
- FromDatabaseAvailableSQLStatement sqlStatement =
mock(FromDatabaseAvailableSQLStatement.class,
withSettings().extraInterfaces(SQLStatement.class));
FromDatabaseSegment databaseSegment = mock(FromDatabaseSegment.class,
RETURNS_DEEP_STUBS);
when(databaseSegment.getDatabase().getIdentifier().getValue()).thenReturn("bar_db");
-
when(sqlStatement.getFromDatabase()).thenReturn(Optional.of(databaseSegment));
- assertThat(DatabaseNameUtils.getDatabaseName((SQLStatement)
sqlStatement, "foo_db"), is("bar_db"));
+ SQLStatement sqlStatement = mock(SQLStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes(new FromDatabaseSQLStatementAttribute(databaseSegment)));
+ assertThat(DatabaseNameUtils.getDatabaseName(sqlStatement, "foo_db"),
is("bar_db"));
}
@Test
void assertDatabaseNameWhenNotAvailableInSQLStatement() {
- assertThat(DatabaseNameUtils.getDatabaseName(mock(SQLStatement.class),
"foo_db"), is("foo_db"));
+ SQLStatement sqlStatement = mock(SQLStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(DatabaseNameUtils.getDatabaseName(sqlStatement, "foo_db"),
is("foo_db"));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/export/ExportDatabaseConfigurationStatement.java
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/export/ExportDatabaseConfigurationStatement.java
index 060d7dcea30..44a5df29fdf 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/export/ExportDatabaseConfigurationStatement.java
+++
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/export/ExportDatabaseConfigurationStatement.java
@@ -20,7 +20,8 @@ package
org.apache.shardingsphere.distsql.statement.ral.queryable.export;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.QueryableRALStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -28,7 +29,7 @@ import java.util.Optional;
* Export database configuration statement.
*/
@RequiredArgsConstructor
-public final class ExportDatabaseConfigurationStatement extends
QueryableRALStatement implements FromDatabaseAvailableSQLStatement {
+public final class ExportDatabaseConfigurationStatement extends
QueryableRALStatement {
private final String filePath;
@@ -44,7 +45,7 @@ public final class ExportDatabaseConfigurationStatement
extends QueryableRALStat
}
@Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/show/ShowTableMetaDataStatement.java
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/show/ShowTableMetaDataStatement.java
index 5016f803fed..97951582b4b 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/show/ShowTableMetaDataStatement.java
+++
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/ral/queryable/show/ShowTableMetaDataStatement.java
@@ -21,24 +21,24 @@ import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.distsql.statement.ral.queryable.QueryableRALStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Collection;
-import java.util.Optional;
/**
* Show table meta data statement.
*/
@RequiredArgsConstructor
-public final class ShowTableMetaDataStatement extends QueryableRALStatement
implements FromDatabaseAvailableSQLStatement {
+@Getter
+public final class ShowTableMetaDataStatement extends QueryableRALStatement {
- @Getter
private final Collection<String> tableNames;
private final FromDatabaseSegment fromDatabase;
@Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowStorageUnitsStatement.java
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowStorageUnitsStatement.java
index b5d84668243..d4e3714a1fd 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowStorageUnitsStatement.java
+++
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowStorageUnitsStatement.java
@@ -20,16 +20,17 @@ package
org.apache.shardingsphere.distsql.statement.rql.resource;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
/**
* Show storage unit statement.
*/
-@Getter
@RequiredArgsConstructor
-public final class ShowStorageUnitsStatement extends ResourceQueryStatement
implements FromDatabaseAvailableSQLStatement {
+@Getter
+public final class ShowStorageUnitsStatement extends ResourceQueryStatement {
private final FromDatabaseSegment fromDatabase;
@@ -45,7 +46,7 @@ public final class ShowStorageUnitsStatement extends
ResourceQueryStatement impl
}
@Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowTablesStatement.java
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowTablesStatement.java
index ade7dd19a60..a3237d8e1d3 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowTablesStatement.java
+++
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/resource/ShowTablesStatement.java
@@ -17,9 +17,11 @@
package org.apache.shardingsphere.distsql.statement.rql.resource;
+import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -27,7 +29,8 @@ import java.util.Optional;
* Show tables statement.
*/
@RequiredArgsConstructor
-public abstract class ShowTablesStatement extends ResourceQueryStatement
implements FromDatabaseAvailableSQLStatement {
+@Getter
+public abstract class ShowTablesStatement extends ResourceQueryStatement {
private final FromDatabaseSegment fromDatabase;
@@ -43,7 +46,7 @@ public abstract class ShowTablesStatement extends
ResourceQueryStatement impleme
}
@Override
- public final Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
index 80b27c5e8d2..1d3e2b890dc 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
+++
b/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
@@ -17,23 +17,24 @@
package org.apache.shardingsphere.distsql.statement.rql.rule.database;
+import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.distsql.statement.rql.rule.RuleQueryStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
-
-import java.util.Optional;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
/**
* Show database rules statement.
*/
@RequiredArgsConstructor
-public abstract class ShowDatabaseRulesStatement extends RuleQueryStatement
implements FromDatabaseAvailableSQLStatement {
+@Getter
+public abstract class ShowDatabaseRulesStatement extends RuleQueryStatement {
private final FromDatabaseSegment fromDatabase;
@Override
- public final Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/attribute/type/FromDatabaseSQLStatementAttribute.java
similarity index 72%
copy from
parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
copy to
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/attribute/type/FromDatabaseSQLStatementAttribute.java
index 80b27c5e8d2..ea213fe343a 100644
---
a/parser/distsql/statement/src/main/java/org/apache/shardingsphere/distsql/statement/rql/rule/database/ShowDatabaseRulesStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/attribute/type/FromDatabaseSQLStatementAttribute.java
@@ -15,25 +15,28 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.distsql.statement.rql.rule.database;
+package
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type;
import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.statement.rql.rule.RuleQueryStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttribute;
import java.util.Optional;
/**
- * Show database rules statement.
+ * From database SQL statement attribute.
*/
@RequiredArgsConstructor
-public abstract class ShowDatabaseRulesStatement extends RuleQueryStatement
implements FromDatabaseAvailableSQLStatement {
+public final class FromDatabaseSQLStatementAttribute implements
SQLStatementAttribute {
private final FromDatabaseSegment fromDatabase;
- @Override
- public final Optional<FromDatabaseSegment> getFromDatabase() {
+ /**
+ * Get from database.
+ *
+ * @return from database
+ */
+ public Optional<FromDatabaseSegment> getFromDatabase() {
return Optional.ofNullable(fromDatabase);
}
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/FromDatabaseAvailableSQLStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/FromDatabaseAvailableSQLStatement.java
deleted file mode 100644
index c406baac632..00000000000
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/available/FromDatabaseAvailableSQLStatement.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.sql.parser.statement.core.statement.available;
-
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
-
-import java.util.Optional;
-
-/**
- * From database available SQL statement.
- */
-public interface FromDatabaseAvailableSQLStatement {
-
- /**
- * Get from database.
- *
- * @return from database
- */
- Optional<FromDatabaseSegment> getFromDatabase();
-}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTableStatusStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTableStatusStatement.java
index 2defb542d01..fee7dc4252e 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTableStatusStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTableStatusStatement.java
@@ -17,13 +17,14 @@
package org.apache.shardingsphere.sql.parser.statement.core.statement.dal;
+import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.ShowFilterSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.DatabaseSelectRequiredSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.DatabaseSelectRequiredSQLStatementAttribute;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -31,13 +32,18 @@ import java.util.Optional;
* Show table status statement.
*/
@RequiredArgsConstructor
-public final class ShowTableStatusStatement extends AbstractSQLStatement
implements DALStatement, FromDatabaseAvailableSQLStatement {
+@Getter
+public final class ShowTableStatusStatement extends AbstractSQLStatement
implements DALStatement {
private final FromDatabaseSegment fromDatabase;
private final ShowFilterSegment filter;
- @Override
+ /**
+ * Get from database.
+ *
+ * @return from database
+ */
public Optional<FromDatabaseSegment> getFromDatabase() {
return Optional.ofNullable(fromDatabase);
}
@@ -53,6 +59,6 @@ public final class ShowTableStatusStatement extends
AbstractSQLStatement impleme
@Override
public SQLStatementAttributes getAttributes() {
- return new SQLStatementAttributes(new
DatabaseSelectRequiredSQLStatementAttribute());
+ return new SQLStatementAttributes(new
DatabaseSelectRequiredSQLStatementAttribute(), new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTablesStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTablesStatement.java
index e3195334f93..90f07fa1135 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTablesStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/dal/ShowTablesStatement.java
@@ -22,9 +22,9 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.ShowFilterSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.DatabaseSelectRequiredSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.DatabaseSelectRequiredSQLStatementAttribute;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import java.util.Optional;
@@ -33,7 +33,7 @@ import java.util.Optional;
*/
@RequiredArgsConstructor
@Getter
-public final class ShowTablesStatement extends AbstractSQLStatement implements
DALStatement, FromDatabaseAvailableSQLStatement {
+public final class ShowTablesStatement extends AbstractSQLStatement implements
DALStatement {
private final FromDatabaseSegment fromDatabase;
@@ -41,7 +41,11 @@ public final class ShowTablesStatement extends
AbstractSQLStatement implements D
private final boolean containsFull;
- @Override
+ /**
+ * Get from database.
+ *
+ * @return from database
+ */
public Optional<FromDatabaseSegment> getFromDatabase() {
return Optional.ofNullable(fromDatabase);
}
@@ -57,6 +61,6 @@ public final class ShowTablesStatement extends
AbstractSQLStatement implements D
@Override
public SQLStatementAttributes getAttributes() {
- return new SQLStatementAttributes(new
DatabaseSelectRequiredSQLStatementAttribute());
+ return new SQLStatementAttributes(new
DatabaseSelectRequiredSQLStatementAttribute(), new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
index 4c6b145d1f2..e3447c6cbf0 100644
---
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
+++
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/column/MySQLShowColumnsStatement.java
@@ -23,9 +23,9 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatab
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.ShowFilterSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ColumnInResultSetSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.ColumnInResultSetSQLStatementAttribute;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.TableAvailableSQLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DALStatement;
@@ -38,11 +38,7 @@ import java.util.Optional;
*/
@RequiredArgsConstructor
@Getter
-public final class MySQLShowColumnsStatement extends AbstractSQLStatement
- implements
- DALStatement,
- TableAvailableSQLStatement,
- FromDatabaseAvailableSQLStatement {
+public final class MySQLShowColumnsStatement extends AbstractSQLStatement
implements DALStatement, TableAvailableSQLStatement {
private final SimpleTableSegment table;
@@ -50,6 +46,15 @@ public final class MySQLShowColumnsStatement extends
AbstractSQLStatement
private final ShowFilterSegment filter;
+ /**
+ * Get from database.
+ *
+ * @return from database
+ */
+ public Optional<FromDatabaseSegment> getFromDatabase() {
+ return Optional.ofNullable(fromDatabase);
+ }
+
/**
* Get filter segment.
*
@@ -64,13 +69,8 @@ public final class MySQLShowColumnsStatement extends
AbstractSQLStatement
return Collections.singleton(table);
}
- @Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
- }
-
@Override
public SQLStatementAttributes getAttributes() {
- return new SQLStatementAttributes(new
ColumnInResultSetSQLStatementAttribute(1));
+ return new SQLStatementAttributes(new
ColumnInResultSetSQLStatementAttribute(1), new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
index d1bb23f52ed..d4eb0bd3eaa 100644
---
a/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
+++
b/parser/sql/statement/type/mysql/src/main/java/org/apache/shardingsphere/sql/parser/statement/mysql/dal/show/index/MySQLShowIndexStatement.java
@@ -22,7 +22,8 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dal.FromDatabaseSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.AbstractSQLStatement;
-import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.FromDatabaseAvailableSQLStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.type.FromDatabaseSQLStatementAttribute;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.available.TableAvailableSQLStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.dal.DALStatement;
@@ -35,19 +36,28 @@ import java.util.Optional;
*/
@RequiredArgsConstructor
@Getter
-public final class MySQLShowIndexStatement extends AbstractSQLStatement
implements DALStatement, TableAvailableSQLStatement,
FromDatabaseAvailableSQLStatement {
+public final class MySQLShowIndexStatement extends AbstractSQLStatement
implements DALStatement, TableAvailableSQLStatement {
private final SimpleTableSegment table;
private final FromDatabaseSegment fromDatabase;
+ /**
+ * Get from database.
+ *
+ * @return from database
+ */
+ public Optional<FromDatabaseSegment> getFromDatabase() {
+ return Optional.ofNullable(fromDatabase);
+ }
+
@Override
public Collection<SimpleTableSegment> getTables() {
return Collections.singleton(table);
}
@Override
- public Optional<FromDatabaseSegment> getFromDatabase() {
- return Optional.ofNullable(fromDatabase);
+ public SQLStatementAttributes getAttributes() {
+ return new SQLStatementAttributes(new
FromDatabaseSQLStatementAttribute(fromDatabase));
}
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 083072990cf..47c01bf8fbf 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -17,12 +17,12 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql;
-import
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
import
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.AlterStorageUnitStatement;
import
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.RegisterStorageUnitStatement;
import
org.apache.shardingsphere.distsql.statement.rdl.resource.unit.type.UnregisterStorageUnitStatement;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
+import
org.apache.shardingsphere.infra.exception.kernel.metadata.rule.MissingRequiredRuleException;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
@@ -48,6 +48,7 @@ import
org.apache.shardingsphere.shadow.distsql.statement.ShowShadowRulesStateme
import
org.apache.shardingsphere.shadow.distsql.statement.ShowShadowTableRulesStatement;
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import
org.apache.shardingsphere.sharding.distsql.statement.CreateShardingTableRuleStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
import org.apache.shardingsphere.test.mock.AutoMockExtension;
import org.apache.shardingsphere.test.mock.StaticMockSettings;
import org.apache.shardingsphere.test.util.PropertiesBuilder;
@@ -114,41 +115,55 @@ class DistSQLBackendHandlerFactoryTest {
@Test
void assertExecuteDataSourcesContext() throws SQLException {
- assertThat(new
DistSQLUpdateBackendHandler(mock(RegisterStorageUnitStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteShardingTableRuleContext() throws SQLException {
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
- assertThat(new
DistSQLUpdateBackendHandler(mock(CreateShardingTableRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ CreateShardingTableRuleStatement sqlStatement =
mock(CreateShardingTableRuleStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteAddResourceContext() throws SQLException {
- assertThat(new
DistSQLUpdateBackendHandler(mock(RegisterStorageUnitStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterResourceContext() throws SQLException {
- assertThat(new
DistSQLUpdateBackendHandler(mock(AlterStorageUnitStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ AlterStorageUnitStatement sqlStatement =
mock(AlterStorageUnitStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterShadowRuleContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLUpdateBackendHandler(mock(AlterShadowRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ AlterShadowRuleStatement sqlStatement =
mock(AlterShadowRuleStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteCreateShadowRuleContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLUpdateBackendHandler(mock(CreateShadowRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ CreateShadowRuleStatement sqlStatement =
mock(CreateShadowRuleStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropShadowRuleContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLUpdateBackendHandler(mock(DropShadowRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ DropShadowRuleStatement sqlStatement =
mock(DropShadowRuleStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
@@ -162,45 +177,55 @@ class DistSQLBackendHandlerFactoryTest {
@Test
void assertExecuteShowShadowRulesContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLQueryBackendHandler(mock(ShowShadowRulesStatement.class),
connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ assertThat(new
DistSQLQueryBackendHandler(mock(ShowShadowRulesStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute(),
instanceOf(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowTableRulesContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLQueryBackendHandler(mock(ShowShadowTableRulesStatement.class),
connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ ShowShadowTableRulesStatement sqlStatement =
mock(ShowShadowTableRulesStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLQueryBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowAlgorithmsContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLQueryBackendHandler(mock(ShowShadowAlgorithmsStatement.class),
connectionSession).execute(), instanceOf(QueryResponseHeader.class));
+ ShowShadowAlgorithmsStatement sqlStatement =
mock(ShowShadowAlgorithmsStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLQueryBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
void assertExecuteDropShadowAlgorithmContext() throws SQLException {
mockRuleMetaData();
- assertThat(new
DistSQLUpdateBackendHandler(mock(DropShadowAlgorithmStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ DropShadowAlgorithmStatement sqlStatement =
mock(DropShadowAlgorithmStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropResourceContext() throws SQLException {
- assertThat(new
DistSQLUpdateBackendHandler(mock(UnregisterStorageUnitStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ UnregisterStorageUnitStatement sqlStatement =
mock(UnregisterStorageUnitStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropReadwriteSplittingRuleContext() {
- assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateBackendHandler(mock(DropReadwriteSplittingRuleStatement.class),
connectionSession).execute());
+ assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateBackendHandler(mock(DropReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute());
}
@Test
void assertExecuteCreateReadwriteSplittingRuleContext() throws
SQLException {
- assertThat(new
DistSQLUpdateBackendHandler(mock(CreateReadwriteSplittingRuleStatement.class),
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
+ CreateReadwriteSplittingRuleStatement sqlStatement =
mock(CreateReadwriteSplittingRuleStatement.class);
+ when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
+ assertThat(new DistSQLUpdateBackendHandler(sqlStatement,
connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterReadwriteSplittingRuleContext() {
- assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class),
connectionSession).execute());
+ assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute());
}
private void mockRuleMetaData() {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandlerTest.java
index c52140ad318..63de2257d35 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryBackendHandlerTest.java
@@ -65,7 +65,7 @@ class DistSQLQueryBackendHandlerTest {
@Test
void assertExecuteWithNoDatabase() {
assertThrows(NoDatabaseSelectedException.class,
- () -> new
DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class),
mock(ConnectionSession.class, RETURNS_DEEP_STUBS)).execute());
+ () -> new
DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), mock(ConnectionSession.class,
RETURNS_DEEP_STUBS)).execute());
}
@Test
@@ -78,12 +78,13 @@ class DistSQLQueryBackendHandlerTest {
when(computeNodeInstanceContext.getModeConfiguration()).thenReturn(mock(ModeConfiguration.class));
ContextManager contextManager = new ContextManager(metaDataContexts,
computeNodeInstanceContext, mock(), mock(PersistRepository.class));
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- assertThrows(UnknownDatabaseException.class, () -> new
DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class),
connectionSession).execute());
+ assertThrows(UnknownDatabaseException.class, () -> new
DistSQLQueryBackendHandler(mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute());
}
@Test
void assertExecuteWithAbstractStatement() {
- assertThrows(ServiceProviderNotFoundException.class, () -> new
DistSQLQueryBackendHandler(mock(QueryableRALStatement.class),
mock(ConnectionSession.class, RETURNS_DEEP_STUBS)).execute());
+ assertThrows(ServiceProviderNotFoundException.class,
+ () -> new
DistSQLQueryBackendHandler(mock(QueryableRALStatement.class,
RETURNS_DEEP_STUBS), mock(ConnectionSession.class,
RETURNS_DEEP_STUBS)).execute());
}
@Test
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/queryable/ShowTableMetaDataStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/queryable/ShowTableMetaDataStatementAssert.java
index 0e5b6fea22c..8e545767795 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/queryable/ShowTableMetaDataStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/queryable/ShowTableMetaDataStatementAssert.java
@@ -27,7 +27,6 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* Show table meta data statement assert.
@@ -44,8 +43,7 @@ public final class ShowTableMetaDataStatementAssert {
*/
public static void assertIs(final SQLCaseAssertContext assertContext,
final ShowTableMetaDataStatement actual, final
ShowTableMetaDataStatementTestCase expected) {
if (ExistingAssert.assertIs(assertContext, actual, expected)) {
- assertTrue(actual.getFromDatabase().isPresent());
- DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().get().getDatabase(), expected.getDatabase());
+ DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().getDatabase(), expected.getDatabase());
assertThat(assertContext.getText("Table assertion error:"),
actual.getTableNames(), is(expected.getTableNames()));
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/updatable/AlterReadwriteSplittingStorageUnitStatusStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/updatable/AlterReadwriteSplittingStorageUnitStatusStatementAssert.java
index 2280a035306..7dff1526dc9 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/updatable/AlterReadwriteSplittingStorageUnitStatusStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ral/impl/updatable/AlterReadwriteSplittingStorageUnitStatusStatementAssert.java
@@ -28,8 +28,7 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class AlterReadwriteSplittingStorageUnitStatusStatementAssert {
@@ -53,10 +52,9 @@ public final class
AlterReadwriteSplittingStorageUnitStatusStatementAssert {
private static void assertIs(final SQLCaseAssertContext assertContext,
final AlterReadwriteSplittingStorageUnitStatusStatement actual, final
DatabaseContainedTestCase expected) {
if (null == expected.getDatabase()) {
- assertFalse(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should not exist."));
+ assertNull(actual.getFromDatabase(), assertContext.getText("Actual
database should not exist."));
} else {
- assertTrue(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should exist."));
- DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().get().getDatabase(), expected.getDatabase());
+ DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().getDatabase(), expected.getDatabase());
}
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowRulesStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowRulesStatementAssert.java
index 2eb496277da..04f561d1800 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowRulesStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowRulesStatementAssert.java
@@ -22,13 +22,12 @@ import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.distsql.statement.rql.rule.database.ShowDatabaseRulesStatement;
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.database.DatabaseAssert;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.DatabaseContainedTestCase;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.DatabaseContainedTestCase;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Show rules statement assert.
@@ -50,10 +49,9 @@ public final class ShowRulesStatementAssert {
private static void assertIs(final SQLCaseAssertContext assertContext,
final ShowDatabaseRulesStatement actual, final DatabaseContainedTestCase
expected) {
if (null == expected.getDatabase()) {
- assertFalse(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should not exist."));
+ assertNull(actual.getFromDatabase(), assertContext.getText("Actual
database should not exist."));
} else {
- assertTrue(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should exist."));
- DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().get().getDatabase(), expected.getDatabase());
+ DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().getDatabase(), expected.getDatabase());
}
}
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
index ba368ae3eee..ec6f3b58b50 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowStorageUnitsStatementAssert.java
@@ -29,6 +29,7 @@ import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
@@ -51,10 +52,9 @@ public final class ShowStorageUnitsStatementAssert {
private static void assertIs(final SQLCaseAssertContext assertContext,
final ShowStorageUnitsStatement actual, final ShowStorageUnitsStatementTestCase
expected) {
if (null == expected.getDatabase()) {
- assertFalse(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should not exist."));
+ assertNull(actual.getFromDatabase(), assertContext.getText("Actual
database should not exist."));
} else {
- assertTrue(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should exist."));
- DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().get().getDatabase(), expected.getDatabase());
+ DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().getDatabase(), expected.getDatabase());
}
if (null == expected.getLikePattern()) {
assertFalse(actual.getLikePattern().isPresent(),
assertContext.getText("Actual like pattern should not exist."));
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
index 5d67cbca684..a5efb5eeacc 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/rql/impl/ShowTablesStatementAssert.java
@@ -29,6 +29,7 @@ import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
@@ -51,10 +52,9 @@ public final class ShowTablesStatementAssert {
private static void assertIs(final SQLCaseAssertContext assertContext,
final ShowTablesStatement actual, final ShowTableStatementTestCase expected) {
if (null == expected.getDatabase()) {
- assertFalse(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should not exist."));
+ assertNull(actual.getFromDatabase(), assertContext.getText("Actual
database should not exist."));
} else {
- assertTrue(actual.getFromDatabase().isPresent(),
assertContext.getText("Actual database should exist."));
- DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().get().getDatabase(), expected.getDatabase());
+ DatabaseAssert.assertIs(assertContext,
actual.getFromDatabase().getDatabase(), expected.getDatabase());
}
if (null == expected.getLikePattern()) {
assertFalse(actual.getLikePattern().isPresent(),
assertContext.getText("Actual like pattern should not exist."));