This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 d8c4511d06c Add table not exists exception. (#28330)
d8c4511d06c is described below
commit d8c4511d06c78aad70d7e7471a4055195a7f6ccc
Author: Chuxin Chen <[email protected]>
AuthorDate: Fri Sep 1 15:48:29 2023 +0800
Add table not exists exception. (#28330)
* Add table not exists exception.
* Add table not exists exception.
* Add table not exists exception.
* Add table not exists exception.
---
.../user-manual/error-code/sql-error-code.cn.md | 1 +
.../user-manual/error-code/sql-error-code.en.md | 1 +
.../from/impl/SimpleTableSegmentBinder.java | 18 +++++++++++-
.../from/impl/JoinTableSegmentBinderTest.java | 4 +++
.../from/impl/SimpleTableSegmentBinderTest.java | 17 +++++++++++
.../from/impl/SubqueryTableSegmentBinderTest.java | 3 ++
.../statement/DeleteStatementBinderTest.java | 3 ++
.../binder/statement/MergeStatementBinderTest.java | 4 +++
.../statement/SelectStatementBinderTest.java | 3 ++
.../statement/UpdateStatementBinderTest.java | 3 ++
.../infra/exception/TableNotExistsException.java | 33 ++++++++++++++++++++++
.../type/HBaseDeleteOperationConverterTest.java | 2 ++
.../type/HBaseUpdateOperationConverterTest.java | 2 ++
.../prepare/MySQLComStmtPrepareExecutorTest.java | 1 +
.../query/MySQLComQueryPacketExecutorTest.java | 1 +
.../query/MySQLMultiStatementsHandlerTest.java | 3 ++
.../PostgreSQLComDescribeExecutorTest.java | 3 ++
.../parse/PostgreSQLComParseExecutorTest.java | 1 +
18 files changed, 102 insertions(+), 1 deletion(-)
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
index 2966dd4ae89..7df4412ed7e 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.cn.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.cn.md
@@ -21,6 +21,7 @@ SQL 错误码以标准的 SQL State,Vendor Code 和详细错误信息提供,
| 42000 | 10004 | Unsupported SQL node conversion for SQL statement
\`%s\`. |
| HY000 | 10005 | Column '%s' in %s is ambiguous.
|
| 42S02 | 10006 | Unknown column '%s' in '%s'.
|
+| 42S02 | 10007 | Table or view \`%s\` does not exist.
|
| 42000 | 10010 | Rule does not exist.
|
| 42S02 | 10020 | Schema \`%s\` does not exist.
|
| 42S02 | 10021 | Single table \`%s\` does not exist.
|
diff --git a/docs/document/content/user-manual/error-code/sql-error-code.en.md
b/docs/document/content/user-manual/error-code/sql-error-code.en.md
index 6e0746c654f..22aaf389820 100644
--- a/docs/document/content/user-manual/error-code/sql-error-code.en.md
+++ b/docs/document/content/user-manual/error-code/sql-error-code.en.md
@@ -21,6 +21,7 @@ SQL error codes provide by standard `SQL State`, `Vendor
Code` and `Reason`, whi
| 42000 | 10004 | Unsupported SQL node conversion for SQL statement
\`%s\`. |
| HY000 | 10005 | Column '%s' in %s is ambiguous.
|
| 42S02 | 10006 | Unknown column '%s' in '%s'.
|
+| 42S02 | 10007 | Table or view \`%s\` does not exist.
|
| 42000 | 10010 | Rule does not exist.
|
| 42S02 | 10020 | Schema \`%s\` does not exist.
|
| 42S02 | 10021 | Single table \`%s\` does not exist.
|
diff --git
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
index 2216a39d1d2..e189c3a93b2 100644
---
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
+++
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinder.java
@@ -26,6 +26,9 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
import
org.apache.shardingsphere.infra.database.opengauss.type.OpenGaussDatabaseType;
import
org.apache.shardingsphere.infra.database.postgresql.type.PostgreSQLDatabaseType;
+import org.apache.shardingsphere.infra.exception.TableNotExistsException;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
+import
org.apache.shardingsphere.infra.metadata.database.schema.builder.SystemSchemaBuilderRule;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
@@ -74,7 +77,7 @@ public final class SimpleTableSegmentBinder {
public static SimpleTableSegment bind(final SimpleTableSegment segment,
final SQLStatementBinderContext statementBinderContext, final Map<String,
TableSegmentBinderContext> tableBinderContexts) {
IdentifierValue originalDatabase = getDatabaseName(segment,
statementBinderContext);
IdentifierValue originalSchema = getSchemaName(segment,
statementBinderContext);
- // TODO check database and schema
+ checkTableExists(segment.getTableName().getIdentifier().getValue(),
statementBinderContext, originalDatabase.getValue(), originalSchema.getValue());
ShardingSphereSchema schema =
statementBinderContext.getMetaData().getDatabase(originalDatabase.getValue()).getSchema(originalSchema.getValue());
tableBinderContexts.put(segment.getAliasName().orElseGet(() ->
segment.getTableName().getIdentifier().getValue()),
createSimpleTableBinderContext(segment, schema,
originalDatabase, originalSchema, statementBinderContext.getDatabaseType()));
@@ -122,4 +125,17 @@ public final class SimpleTableSegmentBinder {
}
return new TableSegmentBinderContext(projectionSegments);
}
+
+ private static void checkTableExists(final String tableName, final
SQLStatementBinderContext statementBinderContext, final String databaseName,
final String schemaName) {
+ if ("dual".equalsIgnoreCase(tableName)) {
+ return;
+ }
+ if (SystemSchemaBuilderRule.isSystemTable(schemaName, tableName)) {
+ return;
+ }
+
ShardingSpherePreconditions.checkState(statementBinderContext.getMetaData().containsDatabase(databaseName)
+ &&
statementBinderContext.getMetaData().getDatabase(databaseName).containsSchema(schemaName)
+ &&
statementBinderContext.getMetaData().getDatabase(databaseName).getSchema(schemaName).containsTable(tableName),
+ () -> new TableNotExistsException(tableName));
+ }
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
index 0b8e985b882..7f6bc4d476f 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/JoinTableSegmentBinderTest.java
@@ -250,6 +250,10 @@ class JoinTableSegmentBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order_item")).thenReturn(true);
return result;
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
index b9a9f767a65..3a63b4be718 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SimpleTableSegmentBinderTest.java
@@ -22,6 +22,7 @@ import
org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinderCon
import
org.apache.shardingsphere.infra.binder.statement.SQLStatementBinderContext;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import org.apache.shardingsphere.infra.exception.TableNotExistsException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -39,6 +40,7 @@ import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
@@ -122,6 +124,21 @@ class SimpleTableSegmentBinderTest {
when(result.getDatabase("sharding_db").getSchema("sharding_db")).thenReturn(schema);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema("public")).thenReturn(schema);
when(result.getDatabase("sharding_db").getSchema("test")).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
+ when(result.containsDatabase("sharding_db")).thenReturn(true);
+
when(result.getDatabase("sharding_db").containsSchema("sharding_db")).thenReturn(true);
+
when(result.getDatabase("sharding_db").getSchema("sharding_db").containsTable("t_order")).thenReturn(true);
return result;
}
+
+ @Test
+ void assertBindTableNotExists() {
+ SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new
TableNameSegment(0, 10, new IdentifierValue("t_not_exists")));
+ ShardingSphereMetaData metaData = createMetaData();
+ Map<String, TableSegmentBinderContext> tableBinderContexts = new
CaseInsensitiveMap<>();
+ assertThrows(TableNotExistsException.class,
+ () -> SimpleTableSegmentBinder.bind(simpleTableSegment, new
SQLStatementBinderContext(metaData, DefaultDatabase.LOGIC_NAME, databaseType),
tableBinderContexts));
+ }
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinderTest.java
index 8cff2484e1d..e0bdbc223c4 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/segment/from/impl/SubqueryTableSegmentBinderTest.java
@@ -138,6 +138,9 @@ class SubqueryTableSegmentBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
return result;
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/DeleteStatementBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/DeleteStatementBinderTest.java
index 97e93fe3aa6..986ba26090c 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/DeleteStatementBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/DeleteStatementBinderTest.java
@@ -76,6 +76,9 @@ class DeleteStatementBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
return result;
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/MergeStatementBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/MergeStatementBinderTest.java
index 7cdf2382e21..46af27db8cc 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/MergeStatementBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/MergeStatementBinderTest.java
@@ -95,6 +95,10 @@ class MergeStatementBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order_item")).thenReturn(true);
return result;
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/SelectStatementBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/SelectStatementBinderTest.java
index e5a2cfa9f9d..4e2cc0242aa 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/SelectStatementBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/SelectStatementBinderTest.java
@@ -111,6 +111,9 @@ class SelectStatementBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
return result;
}
}
diff --git
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/UpdateStatementBinderTest.java
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/UpdateStatementBinderTest.java
index 6dad29e3dad..234057d8b2d 100644
---
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/UpdateStatementBinderTest.java
+++
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/statement/UpdateStatementBinderTest.java
@@ -76,6 +76,9 @@ class UpdateStatementBinderTest {
new ShardingSphereColumn("status", Types.INTEGER, false,
false, false, true, false, false)));
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class,
RETURNS_DEEP_STUBS);
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(schema);
+
when(result.containsDatabase(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(result.getDatabase(DefaultDatabase.LOGIC_NAME).getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_order")).thenReturn(true);
return result;
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/TableNotExistsException.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/TableNotExistsException.java
new file mode 100644
index 00000000000..28141de15fb
--- /dev/null
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/exception/TableNotExistsException.java
@@ -0,0 +1,33 @@
+/*
+ * 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.exception;
+
+import
org.apache.shardingsphere.infra.exception.core.external.sql.sqlstate.XOpenSQLState;
+import
org.apache.shardingsphere.infra.exception.core.external.sql.type.kernel.category.MetaDataSQLException;
+
+/**
+ * Table not exists exception.
+ */
+public final class TableNotExistsException extends MetaDataSQLException {
+
+ private static final long serialVersionUID = -2507596759730534895L;
+
+ public TableNotExistsException(final String tableName) {
+ super(XOpenSQLState.NOT_FOUND, 7, "Table or view `%s` does not
exist.", tableName);
+ }
+}
diff --git
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseDeleteOperationConverterTest.java
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseDeleteOperationConverterTest.java
index c8a1e55bf28..9f5382b1550 100644
---
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseDeleteOperationConverterTest.java
+++
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseDeleteOperationConverterTest.java
@@ -76,6 +76,8 @@ class HBaseDeleteOperationConverterTest {
ShardingSphereTable table = new ShardingSphereTable("t_test_order",
Collections.singletonList(new ShardingSphereColumn("rowKey", Types.VARCHAR,
true, false, false, false, true, false)),
Collections.emptyList(), Collections.emptyList());
when(database.getSchema(DefaultDatabase.LOGIC_NAME).getTable("t_test_order")).thenReturn(table);
+
when(database.containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_test_order")).thenReturn(true);
Map<String, ShardingSphereDatabase> databases =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME, database);
return new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class),
mock(ConfigurationProperties.class));
diff --git
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseUpdateOperationConverterTest.java
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseUpdateOperationConverterTest.java
index 46f24540b55..4aaefbf457f 100644
---
a/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseUpdateOperationConverterTest.java
+++
b/proxy/backend/type/hbase/src/test/java/org/apache/shardingsphere/proxy/backend/hbase/converter/type/HBaseUpdateOperationConverterTest.java
@@ -77,6 +77,8 @@ class HBaseUpdateOperationConverterTest {
ShardingSphereTable table = new ShardingSphereTable("t_test_order",
Arrays.asList(new ShardingSphereColumn("rowKey", Types.VARCHAR, true, false,
false, false, true, false),
new ShardingSphereColumn("age", Types.INTEGER, false, false,
false, false, true, false)), Collections.emptyList(), Collections.emptyList());
when(database.getSchema(DefaultDatabase.LOGIC_NAME).getTable("t_test_order")).thenReturn(table);
+
when(database.containsSchema(DefaultDatabase.LOGIC_NAME)).thenReturn(true);
+
when(database.getSchema(DefaultDatabase.LOGIC_NAME).containsTable("t_test_order")).thenReturn(true);
Map<String, ShardingSphereDatabase> databases =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME, database);
return new ShardingSphereMetaData(databases,
mock(ResourceMetaData.class), mock(RuleMetaData.class),
mock(ConfigurationProperties.class));
diff --git
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
index a645a4f7113..945165e6fd2 100644
---
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
+++
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
@@ -208,6 +208,7 @@ class MySQLComStmtPrepareExecutorTest {
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
TypedSPILoader.getService(DatabaseType.class, "MySQL"),
new ResourceMetaData("foo_db", Collections.emptyMap()), new
RuleMetaData(Collections.emptyList()), Collections.singletonMap("foo_db",
schema));
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
}
diff --git
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
index f4097c49e09..eea216efe80 100644
---
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
+++
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutorTest.java
@@ -154,6 +154,7 @@ class MySQLComQueryPacketExecutorTest {
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
TypedSPILoader.getService(DatabaseType.class, "MySQL"),
new ResourceMetaData("foo_db", Collections.emptyMap()), new
RuleMetaData(Collections.emptyList()), Collections.singletonMap("foo_db",
schema));
when(result.getMetaData().getDatabase("foo_db")).thenReturn(database);
+ when(result.getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
diff --git
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
index 5c9db921a50..e84d35be991 100644
---
a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
+++
b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLMultiStatementsHandlerTest.java
@@ -123,6 +123,9 @@ class MySQLMultiStatementsHandlerTest {
ShardingSphereTable table = new ShardingSphereTable("t",
Arrays.asList(new ShardingSphereColumn("id", Types.BIGINT, true, false, false,
false, true, false),
new ShardingSphereColumn("v", Types.INTEGER, false, false,
false, false, true, false)), Collections.emptyList(), Collections.emptyList());
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_db").getTable("t")).thenReturn(table);
+
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
+
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").containsSchema("foo_db")).thenReturn(true);
+
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db").getSchema("foo_db").containsTable("t")).thenReturn(true);
return result;
}
}
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
index 45da4ae6d92..b44e5a902d2 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
@@ -404,6 +404,9 @@ class PostgreSQLComDescribeExecutorTest {
when(storageUnit.getStorageType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getResourceMetaData().getStorageUnitMetaData().getStorageUnits())
.thenReturn(Collections.singletonMap("ds_0", storageUnit));
+
when(result.getMetaDataContexts().getMetaData().containsDatabase(DATABASE_NAME)).thenReturn(true);
+
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).containsSchema("public")).thenReturn(true);
+
when(result.getMetaDataContexts().getMetaData().getDatabase(DATABASE_NAME).getSchema("public").containsTable(TABLE_NAME)).thenReturn(true);
return result;
}
diff --git
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
index 9f6cce134db..56b62df345c 100644
---
a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
+++
b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/parse/PostgreSQLComParseExecutorTest.java
@@ -190,6 +190,7 @@ class PostgreSQLComParseExecutorTest {
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"),
new ResourceMetaData("foo_db", Collections.emptyMap()), new
RuleMetaData(Collections.emptyList()), Collections.singletonMap("public",
schema));
when(result.getMetaDataContexts().getMetaData().getDatabase("foo_db")).thenReturn(database);
+
when(result.getMetaDataContexts().getMetaData().containsDatabase("foo_db")).thenReturn(true);
return result;
}
}