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 0d30c4d3480 Refactor package structure of database.core.dict (#27518)
0d30c4d3480 is described below
commit 0d30c4d34805d811a8962d3683793344157eec2b
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 27 23:04:20 2023 +0800
Refactor package structure of database.core.dict (#27518)
* Refactor StandardJdbcUrlParser
* Add test case of StandardConnectionProperties
* Refactor ConnectionProperties
* Refactor package structure of database.core.dict
* Refactor package structure of database.core.dict
---
docs/document/content/dev-manual/data-source.cn.md | 12 +-
docs/document/content/dev-manual/data-source.en.md | 12 +-
.../schema/builder/GenericSchemaBuilder.java | 10 +-
.../database/schema/util/SchemaMetaDataUtils.java | 8 +-
.../schema/builder/GenericSchemaBuilderTest.java | 10 +-
.../schema/util/SchemaMetaDataUtilsTest.java | 22 +--
.../DialectMetaDataLoader.java} | 6 +-
.../MetaDataLoaderEngine.java} | 19 ++-
.../MetaDataLoaderMaterial.java} | 6 +-
.../adapter/MetaDataLoaderConnectionAdapter.java | 2 +-
.../{ => loader}/common/ColumnMetaDataLoader.java | 2 +-
.../{ => loader}/common/IndexMetaDataLoader.java | 2 +-
.../{ => loader}/common/SchemaMetaDataLoader.java | 4 +-
.../{ => loader}/common/TableMetaDataLoader.java | 4 +-
.../MetaDataLoaderConnectionAdapterTest.java | 3 +-
.../loader/common/ColumnMetaDataLoaderTest.java | 5 +-
.../loader/common/IndexMetaDataLoaderTest.java | 3 +-
.../loader/common/TableMetaDataLoaderTest.java | 14 +-
...maMetaDataLoader.java => H2MetaDataLoader.java} | 6 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
...taLoaderTest.java => H2MetaDataLoaderTest.java} | 8 +-
...etaDataLoader.java => MySQLMetaDataLoader.java} | 6 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
...oaderTest.java => MySQLMetaDataLoaderTest.java} | 8 +-
.../mysql/MySQLSchemaMetaDataLoaderTest.java | 117 ++++---------
...ataLoader.java => OpenGaussMetaDataLoader.java} | 8 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
.../OpenGaussSchemaMetaDataLoaderTest.java} | 31 +---
...taDataLoader.java => OracleMetaDataLoader.java} | 8 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
...aderTest.java => OracleMetaDataLoaderTest.java} | 8 +-
...taLoader.java => PostgreSQLMetaDataLoader.java} | 8 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
....core.dict.metadata.DialectSchemaMetaDataLoader | 18 --
...Test.java => PostgreSQLMetaDataLoaderTest.java} | 8 +-
.../PostgreSQLSchemaMetaDataLoaderTest.java | 181 +++++----------------
...ataLoader.java => SQLServerMetaDataLoader.java} | 6 +-
...atabase.core.dict.loader.DialectMetaDataLoader} | 2 +-
....core.dict.metadata.DialectSchemaMetaDataLoader | 18 --
...rTest.java => SQLServerMetaDataLoaderTest.java} | 8 +-
.../single/datanode/SingleTableDataNodeLoader.java | 2 +-
41 files changed, 199 insertions(+), 406 deletions(-)
diff --git a/docs/document/content/dev-manual/data-source.cn.md
b/docs/document/content/dev-manual/data-source.cn.md
index b30519ab7cf..5a262b8edc2 100644
--- a/docs/document/content/dev-manual/data-source.cn.md
+++ b/docs/document/content/dev-manual/data-source.cn.md
@@ -42,12 +42,12 @@ chapter = true
| *配置标识* | *详细说明* | *全限定类名*
|
|------------|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| MySQL | 使用 MySQL 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.mysql.MySQLSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java)
|
-| Oracle | 使用 Oracle 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.oracle.OracleSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java)
|
-| PostgreSQL | 使用 PostgreSQL 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.postgresql.PostgreSQLSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java)
|
-| SQLServer | 使用 SQLServer 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.sqlserver.SQLServerSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java)
|
-| H2 | 使用 H2 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.h2.H2SchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java)
|
-| openGauss | 使用 OpenGauss 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.opengauss.OpenGaussSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java)
|
+| MySQL | 使用 MySQL 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.mysql.MySQLMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java)
|
+| Oracle | 使用 Oracle 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.oracle.OracleMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java)
|
+| PostgreSQL | 使用 PostgreSQL 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.postgresql.PostgreSQLMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java)
|
+| SQLServer | 使用 SQLServer 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.sqlserver.SQLServerMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java)
|
+| H2 | 使用 H2 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.h2.H2MetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java)
|
+| openGauss | 使用 OpenGauss 方言加载元数据 |
[`org.apache.shardingsphere.infra.database.opengauss.OpenGaussMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java)
|
## DialectDataTypeLoader
diff --git a/docs/document/content/dev-manual/data-source.en.md
b/docs/document/content/dev-manual/data-source.en.md
index f234ddce0e9..6ce74df6d3f 100644
--- a/docs/document/content/dev-manual/data-source.en.md
+++ b/docs/document/content/dev-manual/data-source.en.md
@@ -42,12 +42,12 @@ Use SQL dialect to load meta data rapidly
| *Configuration Type* | *Description* |
*Fully-qualified class name*
|
|----------------------|------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| MySQL | Use MySQL dialect to load meta data |
[`org.apache.shardingsphere.infra.database.mysql.MySQLSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java)
|
-| Oracle | Use Oracle dialect to load meta data |
[`org.apache.shardingsphere.infra.database.oracle.OracleSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java)
|
-| PostgreSQL | Use PostgreSQL dialect to load meta data |
[`org.apache.shardingsphere.infra.database.postgresql.PostgreSQLSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java)
|
-| SQLServer | Use SQLServer dialect to load meta data |
[`org.apache.shardingsphere.infra.database.sqlserver.SQLServerSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java)
|
-| H2 | Use H2 dialect to load meta data |
[`org.apache.shardingsphere.infra.database.h2.H2SchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java)
|
-| openGauss | Use OpenGauss dialect to load meta data |
[`org.apache.shardingsphere.infra.database.opengauss.OpenGaussSchemaMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java)
|
+| MySQL | Use MySQL dialect to load meta data |
[`org.apache.shardingsphere.infra.database.mysql.MySQLMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java)
|
+| Oracle | Use Oracle dialect to load meta data |
[`org.apache.shardingsphere.infra.database.oracle.OracleMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java)
|
+| PostgreSQL | Use PostgreSQL dialect to load meta data |
[`org.apache.shardingsphere.infra.database.postgresql.PostgreSQLMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java)
|
+| SQLServer | Use SQLServer dialect to load meta data |
[`org.apache.shardingsphere.infra.database.sqlserver.SQLServerMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java)
|
+| H2 | Use H2 dialect to load meta data |
[`org.apache.shardingsphere.infra.database.h2.H2MetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java)
|
+| openGauss | Use OpenGauss dialect to load meta data |
[`org.apache.shardingsphere.infra.database.opengauss.OpenGaussMetaDataLoader`](https://github.com/apache/shardingsphere/blob/master/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java)
|
## DataSourcePoolMetaData
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
index 885f8ef1f80..076296ddc8c 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
@@ -22,8 +22,8 @@ import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.DatabaseTypeEngine;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderEngine;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderMaterial;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderEngine;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderMaterial;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import
org.apache.shardingsphere.infra.database.core.dict.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
@@ -98,11 +98,11 @@ public final class GenericSchemaBuilder {
private static Map<String, SchemaMetaData> loadSchemas(final
Collection<String> tableNames, final GenericSchemaBuilderMaterial material)
throws SQLException {
boolean checkMetaDataEnable =
material.getProps().getValue(ConfigurationPropertyKey.CHECK_TABLE_METADATA_ENABLED);
- Collection<SchemaMetaDataLoaderMaterial> schemaMetaDataLoaderMaterials
= SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(tableNames, material,
checkMetaDataEnable);
- if (schemaMetaDataLoaderMaterials.isEmpty()) {
+ Collection<MetaDataLoaderMaterial> metaDataLoaderMaterials =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(tableNames, material,
checkMetaDataEnable);
+ if (metaDataLoaderMaterials.isEmpty()) {
return Collections.emptyMap();
}
- return SchemaMetaDataLoaderEngine.load(schemaMetaDataLoaderMaterials);
+ return MetaDataLoaderEngine.load(metaDataLoaderMaterials);
}
private static Map<String, SchemaMetaData> translate(final Map<String,
SchemaMetaData> schemaMetaDataMap, final GenericSchemaBuilderMaterial material)
{
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
index 660a6cebf0b..aacd9f41578 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtils.java
@@ -25,7 +25,7 @@ import org.apache.shardingsphere.infra.datanode.DataNodes;
import org.apache.shardingsphere.infra.database.core.GlobalDataSourceRegistry;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
import
org.apache.shardingsphere.infra.metadata.database.schema.exception.UnsupportedActualDataNodeStructureException;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderMaterial;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderMaterial;
import
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
import javax.sql.DataSource;
@@ -50,8 +50,8 @@ public final class SchemaMetaDataUtils {
* @param checkMetaDataEnable check meta data enable config
* @return schema meta data loader materials
*/
- public static Collection<SchemaMetaDataLoaderMaterial>
getSchemaMetaDataLoaderMaterials(final Collection<String> tableNames,
-
final GenericSchemaBuilderMaterial material, final boolean
checkMetaDataEnable) {
+ public static Collection<MetaDataLoaderMaterial>
getSchemaMetaDataLoaderMaterials(final Collection<String> tableNames,
+
final GenericSchemaBuilderMaterial material, final boolean
checkMetaDataEnable) {
Map<String, Collection<String>> dataSourceTableGroups = new
LinkedHashMap<>();
Collection<DatabaseType> notSupportThreeTierStructureStorageTypes =
getNotSupportThreeTierStructureStorageTypes(material.getStorageTypes().values());
DataNodes dataNodes = new DataNodes(material.getRules());
@@ -63,7 +63,7 @@ public final class SchemaMetaDataUtils {
addOneActualTableDataNode(material, dataSourceTableGroups,
dataNodes, each);
}
}
- return dataSourceTableGroups.entrySet().stream().map(entry -> new
SchemaMetaDataLoaderMaterial(entry.getValue(),
+ return dataSourceTableGroups.entrySet().stream().map(entry -> new
MetaDataLoaderMaterial(entry.getValue(),
getDataSource(material, entry.getKey()),
material.getStorageTypes().get(entry.getKey()),
material.getDefaultSchemaName())).collect(Collectors.toList());
}
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
index e6d690b12bd..a6684a32416 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilderTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.schema.fixture.rule.TableContainedFixtureRule;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderEngine;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderEngine;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
@@ -50,7 +50,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(SchemaMetaDataLoaderEngine.class)
+@StaticMockSettings(MetaDataLoaderEngine.class)
class GenericSchemaBuilderTest {
private GenericSchemaBuilderMaterial material;
@@ -65,21 +65,21 @@ class GenericSchemaBuilderTest {
@Test
void assertLoadWithExistedTableName() throws SQLException {
Collection<String> tableNames =
Collections.singletonList("data_node_routed_table1");
-
when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
+
when(MetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
assertFalse(GenericSchemaBuilder.build(tableNames,
material).get(DefaultDatabase.LOGIC_NAME).getTables().isEmpty());
}
@Test
void assertLoadWithNotExistedTableName() throws SQLException {
Collection<String> tableNames =
Collections.singletonList("invalid_table");
-
when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
+
when(MetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
assertTrue(GenericSchemaBuilder.build(tableNames,
material).get(DefaultDatabase.LOGIC_NAME).getTables().isEmpty());
}
@Test
void assertLoadAllTables() throws SQLException {
Collection<String> tableNames =
Arrays.asList("data_node_routed_table1", "data_node_routed_table2");
-
when(SchemaMetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
+
when(MetaDataLoaderEngine.load(any())).thenReturn(createSchemaMetaDataMap(tableNames,
material));
Map<String, ShardingSphereSchema> actual =
GenericSchemaBuilder.build(tableNames, material);
assertThat(actual.size(), is(1));
assertTables(new
ShardingSphereSchema(actual.values().iterator().next().getTables(),
Collections.emptyMap()).getTables());
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
index 74f53aba660..4c1f297ed6f 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SchemaMetaDataUtilsTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
import
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderMaterial;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderMaterial;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
import
org.apache.shardingsphere.infra.rule.identifier.type.DataSourceContainedRule;
import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
@@ -49,13 +49,13 @@ class SchemaMetaDataUtilsTest {
when(dataNodeContainedRule.getDataNodesByTableName("t_order")).thenReturn(mockShardingDataNodes());
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(mock(DatabaseType.class), Collections.emptyMap(),
mockDataSourceMap(),
Arrays.asList(dataNodeContainedRule,
mock(DataSourceContainedRule.class)), mock(ConfigurationProperties.class),
"sharding_db");
- Collection<SchemaMetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_order"),
material, true);
+ Collection<MetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_order"),
material, true);
assertThat(actual.size(), is(2));
- Iterator<SchemaMetaDataLoaderMaterial> iterator = actual.iterator();
- SchemaMetaDataLoaderMaterial firstMaterial = iterator.next();
+ Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
+ MetaDataLoaderMaterial firstMaterial = iterator.next();
assertThat(firstMaterial.getDefaultSchemaName(), is("sharding_db"));
assertThat(firstMaterial.getActualTableNames(),
is(Collections.singletonList("t_order_0")));
- SchemaMetaDataLoaderMaterial secondMaterial = iterator.next();
+ MetaDataLoaderMaterial secondMaterial = iterator.next();
assertThat(secondMaterial.getDefaultSchemaName(), is("sharding_db"));
assertThat(secondMaterial.getActualTableNames(),
is(Collections.singletonList("t_order_1")));
}
@@ -66,10 +66,10 @@ class SchemaMetaDataUtilsTest {
when(dataNodeContainedRule.getDataNodesByTableName("t_order")).thenReturn(mockShardingDataNodes());
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(mock(DatabaseType.class), Collections.emptyMap(),
mockDataSourceMap(),
Arrays.asList(dataNodeContainedRule,
mock(DataSourceContainedRule.class)), mock(ConfigurationProperties.class),
"sharding_db");
- Collection<SchemaMetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_order"),
material, false);
+ Collection<MetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_order"),
material, false);
assertThat(actual.size(), is(1));
- Iterator<SchemaMetaDataLoaderMaterial> iterator = actual.iterator();
- SchemaMetaDataLoaderMaterial firstMaterial = iterator.next();
+ Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
+ MetaDataLoaderMaterial firstMaterial = iterator.next();
assertThat(firstMaterial.getDefaultSchemaName(), is("sharding_db"));
assertThat(firstMaterial.getActualTableNames(),
is(Collections.singletonList("t_order_0")));
}
@@ -80,10 +80,10 @@ class SchemaMetaDataUtilsTest {
when(dataNodeContainedRule.getDataNodesByTableName("t_single")).thenReturn(mockSingleTableDataNodes());
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(mock(DatabaseType.class), Collections.emptyMap(),
mockDataSourceMap(),
Arrays.asList(dataNodeContainedRule,
mock(DataSourceContainedRule.class)), mock(ConfigurationProperties.class),
"public");
- Collection<SchemaMetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_single"),
material, false);
+ Collection<MetaDataLoaderMaterial> actual =
SchemaMetaDataUtils.getSchemaMetaDataLoaderMaterials(Collections.singleton("t_single"),
material, false);
assertThat(actual.size(), is(1));
- Iterator<SchemaMetaDataLoaderMaterial> iterator = actual.iterator();
- SchemaMetaDataLoaderMaterial firstMaterial = iterator.next();
+ Iterator<MetaDataLoaderMaterial> iterator = actual.iterator();
+ MetaDataLoaderMaterial firstMaterial = iterator.next();
assertThat(firstMaterial.getDefaultSchemaName(), is("public"));
assertThat(firstMaterial.getActualTableNames(),
is(Collections.singletonList("t_single")));
}
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/DialectSchemaMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/DialectMetaDataLoader.java
similarity index 89%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/DialectSchemaMetaDataLoader.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/DialectMetaDataLoader.java
index 390ac0baaac..88a3a850089 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/DialectSchemaMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/DialectMetaDataLoader.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.metadata;
+package org.apache.shardingsphere.infra.database.core.dict.loader;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI;
@@ -26,10 +26,10 @@ import java.sql.SQLException;
import java.util.Collection;
/**
- * Dialect schema meta data loader.
+ * Dialect meta data loader.
*/
@SingletonSPI
-public interface DialectSchemaMetaDataLoader extends DatabaseTypedSPI {
+public interface DialectMetaDataLoader extends DatabaseTypedSPI {
/**
* Load schema meta data.
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderEngine.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderEngine.java
similarity index 86%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderEngine.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderEngine.java
index 772fe3c98d2..bba42bb134d 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderEngine.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderEngine.java
@@ -15,14 +15,14 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.metadata;
+package org.apache.shardingsphere.infra.database.core.dict.loader;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
-import
org.apache.shardingsphere.infra.database.core.dict.common.TableMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.TableMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
import
org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.UnknownSQLException;
@@ -41,9 +41,12 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+/**
+ * Meta data loader engine.
+ */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@Slf4j
-public final class SchemaMetaDataLoaderEngine {
+public final class MetaDataLoaderEngine {
private static final ExecutorService EXECUTOR_SERVICE = new
ThreadPoolExecutor(Runtime.getRuntime().availableProcessors() * 2,
Runtime.getRuntime().availableProcessors() * 2,
0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new
ThreadFactoryBuilder().setDaemon(true).setNameFormat("ShardingSphere-SchemaMetaDataLoaderEngine-%d").build());
@@ -55,10 +58,10 @@ public final class SchemaMetaDataLoaderEngine {
* @return schema meta data map
* @throws SQLException SQL exception
*/
- public static Map<String, SchemaMetaData> load(final
Collection<SchemaMetaDataLoaderMaterial> materials) throws SQLException {
+ public static Map<String, SchemaMetaData> load(final
Collection<MetaDataLoaderMaterial> materials) throws SQLException {
Map<String, SchemaMetaData> result = new
LinkedHashMap<>(materials.size(), 1F);
Collection<Future<Collection<SchemaMetaData>>> futures = new
LinkedList<>();
- for (SchemaMetaDataLoaderMaterial each : materials) {
+ for (MetaDataLoaderMaterial each : materials) {
futures.add(EXECUTOR_SERVICE.submit(() -> load(each)));
}
try {
@@ -76,8 +79,8 @@ public final class SchemaMetaDataLoaderEngine {
return result;
}
- private static Collection<SchemaMetaData> load(final
SchemaMetaDataLoaderMaterial material) throws SQLException {
- Optional<DialectSchemaMetaDataLoader> dialectSchemaMetaDataLoader =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
material.getStorageType());
+ private static Collection<SchemaMetaData> load(final
MetaDataLoaderMaterial material) throws SQLException {
+ Optional<DialectMetaDataLoader> dialectSchemaMetaDataLoader =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
material.getStorageType());
if (dialectSchemaMetaDataLoader.isPresent()) {
try {
return
dialectSchemaMetaDataLoader.get().load(material.getDataSource(),
material.getActualTableNames(), material.getDefaultSchemaName());
@@ -88,7 +91,7 @@ public final class SchemaMetaDataLoaderEngine {
return loadByDefault(material);
}
- private static Collection<SchemaMetaData> loadByDefault(final
SchemaMetaDataLoaderMaterial material) throws SQLException {
+ private static Collection<SchemaMetaData> loadByDefault(final
MetaDataLoaderMaterial material) throws SQLException {
Collection<TableMetaData> tableMetaData = new LinkedList<>();
for (String each : material.getActualTableNames()) {
TableMetaDataLoader.load(material.getDataSource(), each,
material.getStorageType()).ifPresent(tableMetaData::add);
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderMaterial.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderMaterial.java
similarity index 88%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderMaterial.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderMaterial.java
index efa6a8e003d..6ef415af5b7 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/metadata/SchemaMetaDataLoaderMaterial.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/MetaDataLoaderMaterial.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.metadata;
+package org.apache.shardingsphere.infra.database.core.dict.loader;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -25,11 +25,11 @@ import javax.sql.DataSource;
import java.util.Collection;
/**
- * Schema meta data loader material.
+ * Meta data loader material.
*/
@RequiredArgsConstructor
@Getter
-public final class SchemaMetaDataLoaderMaterial {
+public final class MetaDataLoaderMaterial {
private final Collection<String> actualTableNames;
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/adapter/MetaDataLoaderConnectionAdapter.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapter.java
similarity index 99%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/adapter/MetaDataLoaderConnectionAdapter.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapter.java
index 8efbd84a174..adc2f6b2d96 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/adapter/MetaDataLoaderConnectionAdapter.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.adapter;
+package org.apache.shardingsphere.infra.database.core.dict.loader.adapter;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/ColumnMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoader.java
similarity index 98%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/ColumnMetaDataLoader.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoader.java
index 13bd44c544d..ffde4f64f0e 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/ColumnMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoader.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/IndexMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoader.java
similarity index 97%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/IndexMetaDataLoader.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoader.java
index 47ea7206f4c..a1777ba2067 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/IndexMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoader.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/SchemaMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/SchemaMetaDataLoader.java
similarity index 96%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/SchemaMetaDataLoader.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/SchemaMetaDataLoader.java
index 7f004b76165..c19fec85102 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/SchemaMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/SchemaMetaDataLoader.java
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.database.core.metadata.system.SystemDatabase;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.database.core.dict.adapter.MetaDataLoaderConnectionAdapter;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.adapter.MetaDataLoaderConnectionAdapter;
import javax.sql.DataSource;
import java.sql.Connection;
diff --git
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/TableMetaDataLoader.java
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoader.java
similarity index 93%
rename from
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/TableMetaDataLoader.java
rename to
infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoader.java
index 3b5a74a4627..40b1bc197b3 100644
---
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/common/TableMetaDataLoader.java
+++
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoader.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.core.dict.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
-import
org.apache.shardingsphere.infra.database.core.dict.adapter.MetaDataLoaderConnectionAdapter;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.adapter.MetaDataLoaderConnectionAdapter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
similarity index 94%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
rename to
infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
index 650c8806c74..b385c2c6357 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
+++
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/adapter/MetaDataLoaderConnectionAdapterTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.infra.metadata.database.schema.loader.adapter;
+package org.apache.shardingsphere.infra.database.core.dict.loader.adapter;
-import
org.apache.shardingsphere.infra.database.core.dict.adapter.MetaDataLoaderConnectionAdapter;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/ColumnMetaDataLoaderTest.java
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoaderTest.java
similarity index 96%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/ColumnMetaDataLoaderTest.java
rename to
infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoaderTest.java
index 4dc5cea0d9f..b991b41667b 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/ColumnMetaDataLoaderTest.java
+++
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/ColumnMetaDataLoaderTest.java
@@ -15,11 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.loader.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
-import
org.apache.shardingsphere.infra.database.core.dict.common.ColumnMetaDataLoader;
-import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
+import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/IndexMetaDataLoaderTest.java
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoaderTest.java
similarity index 93%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/IndexMetaDataLoaderTest.java
rename to
infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoaderTest.java
index 47ec30f688e..37a4610523c 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/IndexMetaDataLoaderTest.java
+++
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/IndexMetaDataLoaderTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.loader.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
-import
org.apache.shardingsphere.infra.database.core.dict.common.IndexMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.junit.jupiter.api.Test;
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/TableMetaDataLoaderTest.java
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoaderTest.java
similarity index 89%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/TableMetaDataLoaderTest.java
rename to
infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoaderTest.java
index 1a3f739c5cd..af6bb85c257 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/TableMetaDataLoaderTest.java
+++
b/infra/database/core/src/test/java/org/apache/shardingsphere/infra/database/core/dict/loader/common/TableMetaDataLoaderTest.java
@@ -15,11 +15,11 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.loader.common;
+package org.apache.shardingsphere.infra.database.core.dict.loader.common;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderEngine;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.SchemaMetaDataLoaderMaterial;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderEngine;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.MetaDataLoaderMaterial;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -108,8 +108,8 @@ class TableMetaDataLoaderTest {
void assertLoadWithExistedTable() throws SQLException {
DatabaseType databaseType = mock(DatabaseType.class,
RETURNS_DEEP_STUBS);
when(databaseType.formatTableNamePattern(TEST_TABLE)).thenReturn(TEST_TABLE);
- Map<String, SchemaMetaData> actual =
SchemaMetaDataLoaderEngine.load(Collections.singletonList(
- new
SchemaMetaDataLoaderMaterial(Collections.singletonList(TEST_TABLE), dataSource,
databaseType, "sharding_db")));
+ Map<String, SchemaMetaData> actual =
MetaDataLoaderEngine.load(Collections.singletonList(
+ new
MetaDataLoaderMaterial(Collections.singletonList(TEST_TABLE), dataSource,
databaseType, "sharding_db")));
TableMetaData tableMetaData =
actual.get("sharding_db").getTables().iterator().next();
Collection<ColumnMetaData> columns = tableMetaData.getColumns();
assertThat(columns.size(), is(2));
@@ -131,8 +131,8 @@ class TableMetaDataLoaderTest {
@Test
void assertLoadWithNotExistedTable() throws SQLException {
- Map<String, SchemaMetaData> actual =
SchemaMetaDataLoaderEngine.load(Collections.singletonList(
- new
SchemaMetaDataLoaderMaterial(Collections.singletonList(TEST_TABLE), dataSource,
mock(DatabaseType.class), "sharding_db")));
+ Map<String, SchemaMetaData> actual =
MetaDataLoaderEngine.load(Collections.singletonList(
+ new
MetaDataLoaderMaterial(Collections.singletonList(TEST_TABLE), dataSource,
mock(DatabaseType.class), "sharding_db")));
assertFalse(actual.isEmpty());
assertTrue(actual.containsKey("sharding_db"));
assertTrue(actual.get("sharding_db").getTables().isEmpty());
diff --git
a/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java
b/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoader.java
similarity index 98%
rename from
infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java
rename to
infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoader.java
index 4c033c7916e..dae0c3410a9 100644
---
a/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoader.java
+++
b/infra/database/type/h2/src/main/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoader.java
@@ -18,7 +18,7 @@
package org.apache.shardingsphere.infra.database.h2;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -38,9 +38,9 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Table meta data loader for H2.
+ * Meta data loader for H2.
*/
-public final class H2SchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class H2MetaDataLoader implements DialectMetaDataLoader {
private static final String TABLE_META_DATA_NO_ORDER = "SELECT
TABLE_CATALOG, TABLE_NAME, COLUMN_NAME, DATA_TYPE, ORDINAL_POSITION,
COALESCE(IS_VISIBLE, FALSE) IS_VISIBLE"
+ " FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG=? AND
TABLE_SCHEMA=?";
diff --git
a/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 91%
rename from
infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
rename to
infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index f4f6eb49ecf..fba41ff0a64 100644
---
a/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.mysql.MySQLSchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.h2.H2MetaDataLoader
diff --git
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoaderTest.java
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoaderTest.java
similarity index 95%
rename from
infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoaderTest.java
rename to
infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoaderTest.java
index 55bae974eb8..3f18ef59067 100644
---
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2SchemaMetaDataLoaderTest.java
+++
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/H2MetaDataLoaderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.database.h2;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -43,7 +43,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class H2SchemaMetaDataLoaderTest {
+class H2MetaDataLoaderTest {
@Test
void assertLoadWithoutTables() throws SQLException {
@@ -144,8 +144,8 @@ class H2SchemaMetaDataLoaderTest {
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "H2"));
+ private DialectMetaDataLoader getDialectTableMetaDataLoader() {
+ Optional<DialectMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "H2"));
assertTrue(result.isPresent());
return result.get();
}
diff --git
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoader.java
similarity index 97%
rename from
infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java
rename to
infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoader.java
index 05d4653ec19..6fcfb74d7c8 100644
---
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoader.java
+++
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoader.java
@@ -19,7 +19,7 @@ package org.apache.shardingsphere.infra.database.mysql;
import org.apache.shardingsphere.infra.database.core.GlobalDataSourceRegistry;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import
org.apache.shardingsphere.infra.database.core.dict.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
@@ -41,9 +41,9 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Table meta data loader for MySQL.
+ * Meta data loader for MySQL.
*/
-public final class MySQLSchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class MySQLMetaDataLoader implements DialectMetaDataLoader {
private static final String ORDER_BY_ORDINAL_POSITION = " ORDER BY
ORDINAL_POSITION";
diff --git
a/infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 92%
rename from
infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
rename to
infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index fc298aa18c9..f87d1c82719 100644
---
a/infra/database/type/h2/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/mysql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.h2.H2SchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.mysql.MySQLMetaDataLoader
diff --git
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoaderTest.java
similarity index 95%
copy from
infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
copy to
infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoaderTest.java
index 4fad0f3a711..a5a4a35581c 100644
---
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLMetaDataLoaderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.database.mysql;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -43,7 +43,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class MySQLSchemaMetaDataLoaderTest {
+class MySQLMetaDataLoaderTest {
@Test
void assertLoadWithoutTables() throws SQLException {
@@ -108,8 +108,8 @@ class MySQLSchemaMetaDataLoaderTest {
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "MySQL"));
+ private DialectMetaDataLoader getDialectTableMetaDataLoader() {
+ Optional<DialectMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "MySQL"));
assertTrue(result.isPresent());
return result.get();
}
diff --git
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
index 4fad0f3a711..c1169073dfa 100644
---
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/MySQLSchemaMetaDataLoaderTest.java
@@ -17,119 +17,70 @@
package org.apache.shardingsphere.infra.database.mysql;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
-import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Types;
import java.util.Collection;
import java.util.Collections;
-import java.util.Iterator;
-import java.util.Optional;
+import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
class MySQLSchemaMetaDataLoaderTest {
- @Test
- void assertLoadWithoutTables() throws SQLException {
- DataSource dataSource = mockDataSource();
- ResultSet resultSet = mockTableMetaDataResultSet();
- when(dataSource.getConnection().prepareStatement("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME, ORDINAL_POSITION,
COLUMN_TYPE "
- + "FROM information_schema.columns WHERE TABLE_SCHEMA=? ORDER
BY ORDINAL_POSITION")
- .executeQuery()).thenReturn(resultSet);
- ResultSet indexResultSet = mockIndexMetaDataResultSet();
- when(dataSource.getConnection().prepareStatement("SELECT TABLE_NAME,
INDEX_NAME "
- + "FROM information_schema.statistics WHERE TABLE_SCHEMA=? and
TABLE_NAME IN ('tbl')").executeQuery()).thenReturn(indexResultSet);
-
assertTableMetaDataMap(getDialectTableMetaDataLoader().load(dataSource,
Collections.emptyList(), "sharding_db"));
- }
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private DataSource dataSource;
- @Test
- void assertLoadWithTables() throws SQLException {
- DataSource dataSource = mockDataSource();
- ResultSet resultSet = mockTableMetaDataResultSet();
- when(dataSource.getConnection().prepareStatement("SELECT TABLE_NAME,
COLUMN_NAME, DATA_TYPE, COLUMN_KEY, EXTRA, COLLATION_NAME, ORDINAL_POSITION,
COLUMN_TYPE "
- + "FROM information_schema.columns WHERE TABLE_SCHEMA=? AND
TABLE_NAME IN ('tbl') ORDER BY ORDINAL_POSITION")
- .executeQuery()).thenReturn(resultSet);
- ResultSet indexResultSet = mockIndexMetaDataResultSet();
- when(dataSource.getConnection().prepareStatement(
- "SELECT TABLE_NAME, INDEX_NAME FROM
information_schema.statistics WHERE TABLE_SCHEMA=? and TABLE_NAME IN ('tbl')")
- .executeQuery()).thenReturn(indexResultSet);
-
assertTableMetaDataMap(getDialectTableMetaDataLoader().load(dataSource,
Collections.singletonList("tbl"), "sharding_db"));
+ @BeforeEach
+ void setUp() throws SQLException {
+ ResultSet tableResultSet = mockTableResultSet();
+ when(dataSource.getConnection().getMetaData().getTables("catalog",
"public", null, new String[]{"TABLE", "VIEW", "SYSTEM TABLE", "SYSTEM
VIEW"})).thenReturn(tableResultSet);
+ when(dataSource.getConnection().getCatalog()).thenReturn("catalog");
+ when(dataSource.getConnection().getSchema()).thenReturn("public");
+ ResultSet schemaResultSet = mockSchemaResultSet();
+
when(dataSource.getConnection().getMetaData().getSchemas()).thenReturn(schemaResultSet);
}
- private DataSource mockDataSource() throws SQLException {
- DataSource result = mock(DataSource.class, RETURNS_DEEP_STUBS);
- ResultSet typeInfoResultSet = mockTypeInfoResultSet();
-
when(result.getConnection().getMetaData().getTypeInfo()).thenReturn(typeInfoResultSet);
- return result;
- }
-
- private ResultSet mockTypeInfoResultSet() throws SQLException {
+ private ResultSet mockTableResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class);
when(result.next()).thenReturn(true, true, true, true, false);
- when(result.getString("TYPE_NAME")).thenReturn("int", "varchar");
- when(result.getInt("DATA_TYPE")).thenReturn(Types.INTEGER,
Types.VARCHAR);
+ when(result.getString("TABLE_NAME")).thenReturn("tbl", "$tbl", "/tbl",
"##tbl");
return result;
}
- private ResultSet mockTableMetaDataResultSet() throws SQLException {
+ private ResultSet mockSchemaResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, true, true, true, true, true,
true, true, true, false);
- when(result.getString("TABLE_NAME")).thenReturn("tbl");
- when(result.getString("COLUMN_NAME")).thenReturn("id", "name", "doc",
"geo", "t_year", "pg", "mpg", "pt", "mpt");
- when(result.getString("DATA_TYPE")).thenReturn("int", "varchar",
"json", "geometry", "year", "polygon", "multipolygon", "point", "multipoint");
- when(result.getString("COLUMN_KEY")).thenReturn("PRI", "", "", "", "",
"", "", "", "");
- when(result.getString("EXTRA")).thenReturn("auto_increment",
"INVISIBLE", "", "", "", "", "", "", "");
- when(result.getString("COLLATION_NAME")).thenReturn("utf8",
"utf8_general_ci");
- when(result.getString("COLUMN_TYPE")).thenReturn("int", "varchar");
- return result;
- }
-
- private ResultSet mockIndexMetaDataResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("INDEX_NAME")).thenReturn("id");
- when(result.getString("TABLE_NAME")).thenReturn("tbl");
+ when(result.next()).thenReturn(true, true, true, true, false);
+ when(result.getString("TABLE_SCHEM")).thenReturn("information_schema",
"public", "schema_1", "schema_2");
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "MySQL"));
- assertTrue(result.isPresent());
- return result.get();
+ @Test
+ void assertLoadSchemaTableNames() throws SQLException {
+ Map<String, Collection<String>> schemaTableNames =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
Collections.singletonList("tbl"));
+
assertThat(SchemaMetaDataLoader.loadSchemaTableNames(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "MySQL"), dataSource),
is(schemaTableNames));
}
- private void assertTableMetaDataMap(final Collection<SchemaMetaData>
schemaMetaDataList) {
- assertThat(schemaMetaDataList.size(), is(1));
- TableMetaData actualTableMetaData =
schemaMetaDataList.iterator().next().getTables().iterator().next();
- assertThat(actualTableMetaData.getColumns().size(), is(9));
- Iterator<ColumnMetaData> columnsIterator =
actualTableMetaData.getColumns().iterator();
- assertThat(columnsIterator.next(), is(new ColumnMetaData("id",
Types.INTEGER, true, true, true, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("name",
Types.VARCHAR, false, false, false, false, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("doc",
Types.LONGVARCHAR, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("geo",
Types.BINARY, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("t_year",
Types.DATE, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("pg",
Types.BINARY, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("mpg",
Types.BINARY, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("pt",
Types.BINARY, false, false, false, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("mpt",
Types.BINARY, false, false, false, true, false)));
- assertThat(actualTableMetaData.getIndexes().size(), is(1));
- Iterator<IndexMetaData> indexesIterator =
actualTableMetaData.getIndexes().iterator();
- assertThat(indexesIterator.next(), is(new IndexMetaData("id")));
+ @Test
+ void assertLoadSchemaNames() throws SQLException {
+
assertThat(SchemaMetaDataLoader.loadSchemaNames(dataSource.getConnection(),
TypedSPILoader.getService(DatabaseType.class, "MySQL")),
is(Collections.singletonList("public")));
}
}
diff --git
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussMetaDataLoader.java
similarity index 96%
rename from
infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java
rename to
infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussMetaDataLoader.java
index 573b383f937..de5bfe14074 100644
---
a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoader.java
+++
b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussMetaDataLoader.java
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.infra.database.opengauss;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import
org.apache.shardingsphere.infra.database.core.dict.common.SchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -43,9 +43,9 @@ import java.util.Map;
import java.util.stream.Collectors;
/**
- * Schema meta data loader for openGauss.
+ * Meta data loader for openGauss.
*/
-public final class OpenGaussSchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class OpenGaussMetaDataLoader implements DialectMetaDataLoader {
private static final String BASIC_TABLE_META_DATA_SQL = "SELECT
table_name, column_name, ordinal_position, data_type, udt_name, column_default,
table_schema"
+ " FROM information_schema.columns WHERE table_schema IN (%s)";
diff --git
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 92%
copy from
infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
copy to
infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index b7a3b843270..008b318f811 100644
---
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.oracle.OracleSchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.opengauss.OpenGaussMetaDataLoader
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/SchemaMetaDataLoaderTest.java
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoaderTest.java
similarity index 71%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/SchemaMetaDataLoaderTest.java
rename to
infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoaderTest.java
index 4595d2dd255..32da9b32026 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/loader/common/SchemaMetaDataLoaderTest.java
+++
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/OpenGaussSchemaMetaDataLoaderTest.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.database.schema.loader.common;
+package org.apache.shardingsphere.infra.database.opengauss;
import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
-import
org.apache.shardingsphere.infra.database.core.dict.common.SchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.BeforeEach;
@@ -46,7 +46,7 @@ import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
-class SchemaMetaDataLoaderTest {
+class OpenGaussSchemaMetaDataLoaderTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private DataSource dataSource;
@@ -76,21 +76,10 @@ class SchemaMetaDataLoaderTest {
}
@Test
- void assertLoadSchemaTableNamesForPostgreSQL() throws SQLException {
-
assertThat(SchemaMetaDataLoader.loadSchemaTableNames(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), dataSource),
is(createSchemaTableNames()));
- }
-
- @Test
- void assertLoadSchemaTableNamesForOpenGauss() throws SQLException {
+ void assertLoadSchemaTableNames() throws SQLException {
assertThat(SchemaMetaDataLoader.loadSchemaTableNames(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "openGauss"), dataSource),
is(createSchemaTableNames()));
}
- @Test
- void assertLoadSchemaTableNamesForMySQL() throws SQLException {
- Map<String, Collection<String>> schemaTableNames =
Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
Collections.singletonList("tbl"));
-
assertThat(SchemaMetaDataLoader.loadSchemaTableNames(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "MySQL"), dataSource),
is(schemaTableNames));
- }
-
private Map<String, Collection<String>> createSchemaTableNames() {
Map<String, Collection<String>> result = new LinkedHashMap<>();
result.put("public", Collections.singletonList("tbl"));
@@ -100,17 +89,7 @@ class SchemaMetaDataLoaderTest {
}
@Test
- void assertLoadSchemaNamesForPostgreSQL() throws SQLException {
-
assertThat(SchemaMetaDataLoader.loadSchemaNames(dataSource.getConnection(),
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")),
is(Arrays.asList("public", "schema_1", "schema_2")));
- }
-
- @Test
- void assertLoadSchemaNamesForOpenGauss() throws SQLException {
+ void assertLoadSchemaNames() throws SQLException {
assertThat(SchemaMetaDataLoader.loadSchemaNames(dataSource.getConnection(),
TypedSPILoader.getService(DatabaseType.class, "openGauss")),
is(Arrays.asList("public", "schema_1", "schema_2")));
}
-
- @Test
- void assertLoadSchemaNamesForMySQL() throws SQLException {
-
assertThat(SchemaMetaDataLoader.loadSchemaNames(dataSource.getConnection(),
TypedSPILoader.getService(DatabaseType.class, "MySQL")),
is(Collections.singletonList("public")));
- }
}
diff --git
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoader.java
similarity index 97%
rename from
infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java
rename to
infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoader.java
index 4116fe71bd3..7ecc7e1dec6 100644
---
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoader.java
+++
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoader.java
@@ -18,12 +18,12 @@
package org.apache.shardingsphere.infra.database.oracle;
import com.google.common.collect.Lists;
-import
org.apache.shardingsphere.infra.database.core.dict.adapter.MetaDataLoaderConnectionAdapter;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.adapter.MetaDataLoaderConnectionAdapter;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
@@ -45,9 +45,9 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Schema meta data loader for Oracle.
+ * Meta data loader for Oracle.
*/
-public final class OracleSchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class OracleMetaDataLoader implements DialectMetaDataLoader {
private static final String TABLE_META_DATA_SQL_NO_ORDER = "SELECT OWNER
AS TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, COLUMN_ID, HIDDEN_COLUMN
%s FROM ALL_TAB_COLS WHERE OWNER = ?";
diff --git
a/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 90%
rename from
infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
rename to
infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index 36d85c73729..5921129b7f0 100644
---
a/infra/database/type/opengauss/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.opengauss.OpenGaussSchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.oracle.OracleMetaDataLoader
diff --git
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoaderTest.java
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoaderTest.java
similarity index 98%
rename from
infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoaderTest.java
rename to
infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoaderTest.java
index 87479c1103b..2ba864fbb85 100644
---
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/OracleMetaDataLoaderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.database.oracle;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -43,7 +43,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class OracleSchemaMetaDataLoaderTest {
+class OracleMetaDataLoaderTest {
private static final String ALL_CONSTRAINTS_SQL_WITHOUT_TABLES = "SELECT
A.OWNER AS TABLE_SCHEMA, A.TABLE_NAME AS TABLE_NAME, B.COLUMN_NAME AS
COLUMN_NAME FROM ALL_CONSTRAINTS A"
+ " INNER JOIN ALL_CONS_COLUMNS B ON A.CONSTRAINT_NAME =
B.CONSTRAINT_NAME WHERE CONSTRAINT_TYPE = 'P' AND A.OWNER = 'TEST'";
@@ -267,8 +267,8 @@ class OracleSchemaMetaDataLoaderTest {
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "Oracle"));
+ private DialectMetaDataLoader getDialectTableMetaDataLoader() {
+ Optional<DialectMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "Oracle"));
assertTrue(result.isPresent());
return result.get();
}
diff --git
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoader.java
similarity index 97%
rename from
infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java
rename to
infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoader.java
index e342eb79abe..44327c82519 100644
---
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoader.java
+++
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoader.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.infra.database.postgresql;
import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
-import
org.apache.shardingsphere.infra.database.core.dict.common.SchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import
org.apache.shardingsphere.infra.database.core.dict.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -44,9 +44,9 @@ import java.util.Set;
import java.util.stream.Collectors;
/**
- * Schema meta data loader for PostgreSQL.
+ * Meta data loader for PostgreSQL.
*/
-public final class PostgreSQLSchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class PostgreSQLMetaDataLoader implements DialectMetaDataLoader {
private static final String BASIC_TABLE_META_DATA_SQL = "SELECT
table_name, column_name, ordinal_position, data_type, udt_name, column_default,
table_schema"
+ " FROM information_schema.columns WHERE table_schema IN (%s)";
diff --git
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 91%
copy from
infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
copy to
infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index b7a3b843270..a355f0da667 100644
---
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.oracle.OracleSchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.postgresql.PostgreSQLMetaDataLoader
diff --git
a/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
deleted file mode 100644
index c1bb3921ddc..00000000000
---
a/infra/database/type/postgresql/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.infra.database.postgresql.PostgreSQLSchemaMetaDataLoader
diff --git
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoaderTest.java
similarity index 96%
copy from
infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
copy to
infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoaderTest.java
index 72f2ca5cd3e..cd84d88d879 100644
---
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLMetaDataLoaderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.database.postgresql;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import
org.apache.shardingsphere.infra.database.core.dict.model.ConstraintMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
@@ -45,7 +45,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class PostgreSQLSchemaMetaDataLoaderTest {
+class PostgreSQLMetaDataLoaderTest {
private static final String BASIC_TABLE_META_DATA_SQL = "SELECT
table_name, column_name, ordinal_position, data_type, udt_name, column_default,
table_schema"
+ " FROM information_schema.columns WHERE table_schema IN
('public')";
@@ -173,8 +173,8 @@ class PostgreSQLSchemaMetaDataLoaderTest {
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
+ private DialectMetaDataLoader getDialectTableMetaDataLoader() {
+ Optional<DialectMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
assertTrue(result.isPresent());
return result.get();
}
diff --git
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
index 72f2ca5cd3e..02906d62582 100644
---
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/PostgreSQLSchemaMetaDataLoaderTest.java
@@ -17,180 +17,79 @@
package org.apache.shardingsphere.infra.database.postgresql;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
-import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
-import
org.apache.shardingsphere.infra.database.core.dict.model.ConstraintMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
-import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
-import
org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPILoader;
+import org.apache.shardingsphere.infra.database.core.DefaultDatabase;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPILoader;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.junit.jupiter.MockitoSettings;
+import org.mockito.quality.Strictness;
import javax.sql.DataSource;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.sql.Types;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.Iterator;
-import java.util.Optional;
+import java.util.LinkedHashMap;
+import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.startsWith;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+@ExtendWith(MockitoExtension.class)
+@MockitoSettings(strictness = Strictness.LENIENT)
class PostgreSQLSchemaMetaDataLoaderTest {
- private static final String BASIC_TABLE_META_DATA_SQL = "SELECT
table_name, column_name, ordinal_position, data_type, udt_name, column_default,
table_schema"
- + " FROM information_schema.columns WHERE table_schema IN
('public')";
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+ private DataSource dataSource;
- private static final String TABLE_META_DATA_SQL_WITHOUT_TABLES =
BASIC_TABLE_META_DATA_SQL + " ORDER BY ordinal_position";
-
- private static final String TABLE_META_DATA_SQL_WITH_TABLES =
BASIC_TABLE_META_DATA_SQL + " AND table_name IN ('tbl') ORDER BY
ordinal_position";
-
- private static final String PRIMARY_KEY_META_DATA_SQL = "SELECT
tc.table_name, kc.column_name, kc.table_schema FROM
information_schema.table_constraints tc"
- + " JOIN information_schema.key_column_usage kc ON kc.table_schema
= tc.table_schema AND kc.table_name = tc.table_name AND kc.constraint_name =
tc.constraint_name"
- + " WHERE tc.constraint_type = 'PRIMARY KEY' AND
kc.ordinal_position IS NOT NULL AND kc.table_schema IN ('public')";
-
- private static final String BASIC_INDEX_META_DATA_SQL = "SELECT tablename,
indexname, schemaname FROM pg_indexes WHERE schemaname IN ('public')";
-
- private static final String BASIC_CONSTRAINT_META_DATA_SQL = "SELECT
tc.table_schema,tc.table_name,tc.constraint_name,pgo.relname refer_table_name
FROM information_schema.table_constraints tc "
- + "JOIN pg_constraint pgc ON tc.constraint_name = pgc.conname AND
contype='f' "
- + "JOIN pg_class pgo ON pgc.confrelid = pgo.oid "
- + "WHERE tc.constraint_type = 'FOREIGN KEY' AND tc.table_schema IN
('public')";
-
- private static final String LOAD_ALL_ROLE_TABLE_GRANTS_SQL = "SELECT
table_name FROM information_schema.role_table_grants";
-
- @Test
- void assertLoadWithoutTables() throws SQLException {
- DataSource dataSource = mockDataSource();
- ResultSet schemaResultSet = mockSchemaMetaDataResultSet();
+ @BeforeEach
+ void setUp() throws SQLException {
+ ResultSet tableResultSet = mockTableResultSet();
+ when(dataSource.getConnection().getMetaData().getTables("catalog",
"public", null, new String[]{"TABLE", "VIEW", "SYSTEM TABLE", "SYSTEM
VIEW"})).thenReturn(tableResultSet);
+ when(dataSource.getConnection().getCatalog()).thenReturn("catalog");
+ when(dataSource.getConnection().getSchema()).thenReturn("public");
+ ResultSet schemaResultSet = mockSchemaResultSet();
when(dataSource.getConnection().getMetaData().getSchemas()).thenReturn(schemaResultSet);
- ResultSet tableResultSet = mockTableMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(TABLE_META_DATA_SQL_WITHOUT_TABLES).executeQuery()).thenReturn(tableResultSet);
- ResultSet primaryKeyResultSet = mockPrimaryKeyMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(PRIMARY_KEY_META_DATA_SQL).executeQuery()).thenReturn(primaryKeyResultSet);
- ResultSet indexResultSet = mockIndexMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(BASIC_INDEX_META_DATA_SQL).executeQuery()).thenReturn(indexResultSet);
- ResultSet constraintResultSet = mockConstraintMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(BASIC_CONSTRAINT_META_DATA_SQL).executeQuery()).thenReturn(constraintResultSet);
- ResultSet roleTableGrantsResultSet = mockRoleTableGrantsResultSet();
-
when(dataSource.getConnection().prepareStatement(startsWith(LOAD_ALL_ROLE_TABLE_GRANTS_SQL)).executeQuery()).thenReturn(roleTableGrantsResultSet);
-
assertTableMetaDataMap(getDialectTableMetaDataLoader().load(dataSource,
Collections.emptyList(), "sharding_db"));
}
- private ResultSet mockSchemaMetaDataResultSet() throws SQLException {
+ private ResultSet mockTableResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("TABLE_SCHEM")).thenReturn("public");
+ when(result.next()).thenReturn(true, true, true, true, false);
+ when(result.getString("TABLE_NAME")).thenReturn("tbl", "$tbl", "/tbl",
"##tbl");
return result;
}
- @Test
- void assertLoadWithTables() throws SQLException {
- DataSource dataSource = mockDataSource();
- ResultSet schemaResultSet = mockSchemaMetaDataResultSet();
-
when(dataSource.getConnection().getMetaData().getSchemas()).thenReturn(schemaResultSet);
- ResultSet tableResultSet = mockTableMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(TABLE_META_DATA_SQL_WITH_TABLES).executeQuery()).thenReturn(tableResultSet);
- ResultSet primaryKeyResultSet = mockPrimaryKeyMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(PRIMARY_KEY_META_DATA_SQL).executeQuery()).thenReturn(primaryKeyResultSet);
- ResultSet indexResultSet = mockIndexMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(BASIC_INDEX_META_DATA_SQL).executeQuery()).thenReturn(indexResultSet);
- ResultSet constraintResultSet = mockConstraintMetaDataResultSet();
-
when(dataSource.getConnection().prepareStatement(BASIC_CONSTRAINT_META_DATA_SQL).executeQuery()).thenReturn(constraintResultSet);
- ResultSet roleTableGrantsResultSet = mockRoleTableGrantsResultSet();
-
when(dataSource.getConnection().prepareStatement(startsWith(LOAD_ALL_ROLE_TABLE_GRANTS_SQL)).executeQuery()).thenReturn(roleTableGrantsResultSet);
-
assertTableMetaDataMap(getDialectTableMetaDataLoader().load(dataSource,
Collections.singletonList("tbl"), "sharding_db"));
- }
-
- private ResultSet mockRoleTableGrantsResultSet() throws SQLException {
+ private ResultSet mockSchemaResultSet() throws SQLException {
ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("table_name")).thenReturn("tbl");
- return result;
- }
-
- private DataSource mockDataSource() throws SQLException {
- DataSource result = mock(DataSource.class, RETURNS_DEEP_STUBS);
- ResultSet typeInfoResultSet = mockTypeInfoResultSet();
-
when(result.getConnection().getMetaData().getTypeInfo()).thenReturn(typeInfoResultSet);
+ when(result.next()).thenReturn(true, true, true, true, false);
+ when(result.getString("TABLE_SCHEM")).thenReturn("information_schema",
"public", "schema_1", "schema_2");
return result;
}
- private ResultSet mockTypeInfoResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, true, false);
- when(result.getString("TYPE_NAME")).thenReturn("int4", "varchar");
- when(result.getInt("DATA_TYPE")).thenReturn(Types.INTEGER,
Types.VARCHAR);
- return result;
- }
-
- private ResultSet mockTableMetaDataResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, true, false);
- when(result.getString("table_name")).thenReturn("tbl");
- when(result.getString("column_name")).thenReturn("id", "name");
- when(result.getInt("ordinal_position")).thenReturn(1, 2);
- when(result.getString("data_type")).thenReturn("integer", "character
varying");
- when(result.getString("udt_name")).thenReturn("int4", "varchar");
-
when(result.getString("column_default")).thenReturn("nextval('id_seq'::regclass)",
"");
- when(result.getString("table_schema")).thenReturn("public", "public");
- return result;
- }
-
- private ResultSet mockPrimaryKeyMetaDataResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("table_name")).thenReturn("tbl");
- when(result.getString("column_name")).thenReturn("id");
- when(result.getString("table_schema")).thenReturn("public");
- return result;
- }
-
- private ResultSet mockIndexMetaDataResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("tablename")).thenReturn("tbl");
- when(result.getString("indexname")).thenReturn("id");
- when(result.getString("schemaname")).thenReturn("public");
- return result;
+ @Test
+ void assertLoadSchemaTableNames() throws SQLException {
+
assertThat(SchemaMetaDataLoader.loadSchemaTableNames(DefaultDatabase.LOGIC_NAME,
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), dataSource),
is(createSchemaTableNames()));
}
- private ResultSet mockConstraintMetaDataResultSet() throws SQLException {
- ResultSet result = mock(ResultSet.class);
- when(result.next()).thenReturn(true, false);
- when(result.getString("table_schema")).thenReturn("public");
- when(result.getString("table_name")).thenReturn("tbl");
- when(result.getString("constraint_name")).thenReturn("tbl_con");
- when(result.getString("refer_table_name")).thenReturn("refer_tbl");
+ private Map<String, Collection<String>> createSchemaTableNames() {
+ Map<String, Collection<String>> result = new LinkedHashMap<>();
+ result.put("public", Collections.singletonList("tbl"));
+ result.put("schema_1", Collections.emptyList());
+ result.put("schema_2", Collections.emptyList());
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"));
- assertTrue(result.isPresent());
- return result.get();
- }
-
- private void assertTableMetaDataMap(final Collection<SchemaMetaData>
schemaMetaDataList) {
- assertThat(schemaMetaDataList.size(), is(1));
- TableMetaData actualTableMetaData =
schemaMetaDataList.iterator().next().getTables().iterator().next();
- assertThat(actualTableMetaData.getColumns().size(), is(2));
- Iterator<ColumnMetaData> columnsIterator =
actualTableMetaData.getColumns().iterator();
- assertThat(columnsIterator.next(), is(new ColumnMetaData("id",
Types.INTEGER, true, true, true, true, false)));
- assertThat(columnsIterator.next(), is(new ColumnMetaData("name",
Types.VARCHAR, false, false, true, true, false)));
- assertThat(actualTableMetaData.getIndexes().size(), is(1));
- Iterator<IndexMetaData> indexesIterator =
actualTableMetaData.getIndexes().iterator();
- assertThat(indexesIterator.next(), is(new IndexMetaData("id")));
- assertThat(actualTableMetaData.getConstraints().size(), is(1));
- Iterator<ConstraintMetaData> constrainsIterator =
actualTableMetaData.getConstraints().iterator();
- assertThat(constrainsIterator.next(), is(new
ConstraintMetaData("tbl_con", "refer_tbl")));
+ @Test
+ void assertLoadSchemaNames() throws SQLException {
+
assertThat(SchemaMetaDataLoader.loadSchemaNames(dataSource.getConnection(),
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL")),
is(Arrays.asList("public", "schema_1", "schema_2")));
}
}
diff --git
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoader.java
similarity index 97%
rename from
infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java
rename to
infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoader.java
index f69d0bd3fe2..8aeb67afc61 100644
---
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoader.java
+++
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoader.java
@@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.database.sqlserver;
import
org.apache.shardingsphere.infra.database.core.metadata.datatype.DataTypeLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.TableMetaData;
@@ -39,9 +39,9 @@ import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
- * Schema meta data loader for SQLServer.
+ * Meta data loader for SQLServer.
*/
-public final class SQLServerSchemaMetaDataLoader implements
DialectSchemaMetaDataLoader {
+public final class SQLServerMetaDataLoader implements DialectMetaDataLoader {
private static final String TABLE_META_DATA_SQL_NO_ORDER = "SELECT
obj.name AS TABLE_NAME, col.name AS COLUMN_NAME, t.name AS DATA_TYPE,"
+ " col.collation_name AS COLLATION_NAME, col.column_id,
is_identity AS IS_IDENTITY, %s"
diff --git
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
similarity index 92%
rename from
infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
rename to
infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
index b7a3b843270..788f40f279f 100644
---
a/infra/database/type/oracle/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++
b/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader
@@ -15,4 +15,4 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.database.oracle.OracleSchemaMetaDataLoader
+org.apache.shardingsphere.infra.database.sqlserver.SQLServerMetaDataLoader
diff --git
a/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
b/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
deleted file mode 100644
index e83b3a0bbd9..00000000000
---
a/infra/database/type/sqlserver/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.infra.database.sqlserver.SQLServerSchemaMetaDataLoader
diff --git
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoaderTest.java
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoaderTest.java
similarity index 96%
rename from
infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoaderTest.java
rename to
infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoaderTest.java
index b86b3214cc0..b6b93507861 100644
---
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerSchemaMetaDataLoaderTest.java
+++
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/SQLServerMetaDataLoaderTest.java
@@ -17,7 +17,7 @@
package org.apache.shardingsphere.infra.database.sqlserver;
-import
org.apache.shardingsphere.infra.database.core.dict.metadata.DialectSchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.DialectMetaDataLoader;
import org.apache.shardingsphere.infra.database.core.dict.model.ColumnMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.IndexMetaData;
import org.apache.shardingsphere.infra.database.core.dict.model.SchemaMetaData;
@@ -43,7 +43,7 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class SQLServerSchemaMetaDataLoaderTest {
+class SQLServerMetaDataLoaderTest {
private static final String
LOAD_COLUMN_META_DATA_WITHOUT_TABLES_HIGH_VERSION = "SELECT obj.name AS
TABLE_NAME, col.name AS COLUMN_NAME, t.name AS DATA_TYPE,"
+ " col.collation_name AS COLLATION_NAME, col.column_id,
is_identity AS IS_IDENTITY, is_hidden AS IS_HIDDEN,"
@@ -180,8 +180,8 @@ class SQLServerSchemaMetaDataLoaderTest {
return result;
}
- private DialectSchemaMetaDataLoader getDialectTableMetaDataLoader() {
- Optional<DialectSchemaMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectSchemaMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "SQLServer"));
+ private DialectMetaDataLoader getDialectTableMetaDataLoader() {
+ Optional<DialectMetaDataLoader> result =
DatabaseTypedSPILoader.findService(DialectMetaDataLoader.class,
TypedSPILoader.getService(DatabaseType.class, "SQLServer"));
assertTrue(result.isPresent());
return result.get();
}
diff --git
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java
index 9c60ae59d66..ae4251b3358 100644
---
a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java
+++
b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java
@@ -21,7 +21,7 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.datanode.DataNode;
-import
org.apache.shardingsphere.infra.database.core.dict.common.SchemaMetaDataLoader;
+import
org.apache.shardingsphere.infra.database.core.dict.loader.common.SchemaMetaDataLoader;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.single.api.constant.SingleTableConstants;
import org.apache.shardingsphere.single.exception.SingleTablesLoadingException;