This is an automated email from the ASF dual-hosted git repository.
menghaoranss 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 5702a14ade7 Simplify table name handling and normalize loading logic
(#39202)
5702a14ade7 is described below
commit 5702a14ade73a3b5eeb34872af672ef5a9e1f264
Author: Haoran Meng <[email protected]>
AuthorDate: Tue Jul 21 15:21:07 2026 +0800
Simplify table name handling and normalize loading logic (#39202)
---
.../core/metadata/data/loader/MetaDataLoader.java | 2 +-
.../data/loader/MetaDataLoaderMaterial.java | 18 ----------------
.../data/loader/type/TableMetaDataLoader.java | 25 ++++++++++++++++++----
.../metadata/data/loader/MetaDataLoaderTest.java | 9 --------
.../data/loader/type/TableMetaDataLoaderTest.java | 10 ++++++++-
.../data/loader/FirebirdBlobColumnLoader.java | 4 +---
.../data/loader/FirebirdMetaDataLoader.java | 2 +-
.../FirebirdNonFixedLengthColumnSizeLoader.java | 4 +---
.../data/loader/FirebirdBlobColumnLoaderTest.java | 12 +++++------
.../data/loader/FirebirdMetaDataLoaderTest.java | 17 ++++++---------
...FirebirdNonFixedLengthColumnSizeLoaderTest.java | 12 +++++------
.../metadata/data/loader/HiveMetaDataLoader.java | 2 +-
.../data/loader/HiveMetaDataLoaderTest.java | 7 ++----
.../schema/builder/GenericSchemaBuilder.java | 7 +++---
.../database/schema/util/SchemaMetaDataUtils.java | 16 +++++---------
.../schema/util/SchemaMetaDataUtilsTest.java | 12 +++++------
16 files changed, 70 insertions(+), 89 deletions(-)
diff --git
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoader.java
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoader.java
index fe62e92816e..6f65d063821 100644
---
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoader.java
+++
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoader.java
@@ -95,7 +95,7 @@ public final class MetaDataLoader {
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(),
material.getTableIdentifierPolicy()).ifPresent(tableMetaData::add);
+ TableMetaDataLoader.loadNormalized(material.getDataSource(), each,
material.getStorageType()).ifPresent(tableMetaData::add);
}
return Collections.singleton(new
SchemaMetaData(material.getDefaultSchemaName(), tableMetaData));
}
diff --git
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderMaterial.java
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderMaterial.java
index 3f03dbcb37e..7d4de051dc0 100644
---
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderMaterial.java
+++
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderMaterial.java
@@ -17,12 +17,8 @@
package org.apache.shardingsphere.database.connector.core.metadata.data.loader;
-import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicy;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierNormalizeEngine;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierScope;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import javax.sql.DataSource;
@@ -45,18 +41,4 @@ public final class MetaDataLoaderMaterial {
private final String defaultSchemaName;
- @Getter(AccessLevel.NONE)
- private volatile IdentifierCasePolicy tableIdentifierPolicy;
-
- /**
- * Get table identifier case policy.
- *
- * @return table identifier case policy
- */
- public synchronized IdentifierCasePolicy getTableIdentifierPolicy() {
- if (null == tableIdentifierPolicy) {
- tableIdentifierPolicy =
IdentifierNormalizeEngine.resolvePolicy(storageType, dataSource,
IdentifierScope.TABLE);
- }
- return tableIdentifierPolicy;
- }
}
diff --git
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoader.java
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoader.java
index 872ee837070..70df9f44555 100644
---
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoader.java
+++
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoader.java
@@ -64,11 +64,28 @@ public final class TableMetaDataLoader {
*/
public static Optional<TableMetaData> load(final DataSource dataSource,
final String tableNamePattern, final DatabaseType databaseType,
final IdentifierCasePolicy
tableIdentifierPolicy) throws SQLException {
+ return loadTableMetaData(dataSource, tableNamePattern,
IdentifierNormalizeEngine.normalize(tableIdentifierPolicy, tableNamePattern),
databaseType);
+ }
+
+ /**
+ * Load table meta data with normalized table name pattern.
+ *
+ * @param dataSource data source
+ * @param tableNamePattern normalized table name pattern
+ * @param databaseType database type
+ * @return table meta data
+ * @throws SQLException SQL exception
+ */
+ public static Optional<TableMetaData> loadNormalized(final DataSource
dataSource, final String tableNamePattern, final DatabaseType databaseType)
throws SQLException {
+ return loadTableMetaData(dataSource, tableNamePattern,
tableNamePattern, databaseType);
+ }
+
+ private static Optional<TableMetaData> loadTableMetaData(final DataSource
dataSource, final String tableName,
+ final String
tableNamePattern, final DatabaseType databaseType) throws SQLException {
try (MetaDataLoaderConnection connection = new
MetaDataLoaderConnection(databaseType, dataSource.getConnection())) {
- String formattedTableNamePattern =
IdentifierNormalizeEngine.normalize(tableIdentifierPolicy, tableNamePattern);
- return isTableExist(connection, formattedTableNamePattern)
- ? Optional.of(new TableMetaData(tableNamePattern,
ColumnMetaDataLoader.load(
- connection, formattedTableNamePattern,
databaseType), IndexMetaDataLoader.load(connection, formattedTableNamePattern),
Collections.emptyList()))
+ return isTableExist(connection, tableNamePattern)
+ ? Optional.of(new TableMetaData(tableName,
ColumnMetaDataLoader.load(
+ connection, tableNamePattern, databaseType),
IndexMetaDataLoader.load(connection, tableNamePattern),
Collections.emptyList()))
: Optional.empty();
}
}
diff --git
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderTest.java
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderTest.java
index 93ba7c6acd6..f0e60a19844 100644
---
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderTest.java
+++
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/MetaDataLoaderTest.java
@@ -20,7 +20,6 @@ package
org.apache.shardingsphere.database.connector.core.metadata.data.loader;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.SchemaMetaData;
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.TableMetaData;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicy;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -42,7 +41,6 @@ import java.util.concurrent.TimeUnit;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.isA;
-import static org.hamcrest.Matchers.sameInstance;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -98,13 +96,6 @@ class MetaDataLoaderTest {
assertTrue(actual.get("foo_db").getTables().isEmpty());
}
- @Test
- void assertGetTableIdentifierPolicyCachesResolvedPolicy() {
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.emptyList(), "foo_ds",
mock(DataSource.class), databaseType, "foo_db");
- IdentifierCasePolicy actual = material.getTableIdentifierPolicy();
- assertThat(material.getTableIdentifierPolicy(), sameInstance(actual));
- }
-
@Test
void assertLoadWhenInterrupted() throws Exception {
MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.emptyList(), "foo_ds",
mock(DataSource.class, RETURNS_DEEP_STUBS), databaseType, "foo_db");
diff --git
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoaderTest.java
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoaderTest.java
index a61d239e896..123cce0807b 100644
---
a/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoaderTest.java
+++
b/database/connector/core/src/test/java/org/apache/shardingsphere/database/connector/core/metadata/data/loader/type/TableMetaDataLoaderTest.java
@@ -43,6 +43,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
+import java.util.Optional;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -58,7 +59,7 @@ class TableMetaDataLoaderTest {
private static final String TEST_CATALOG = "catalog";
- private static final String TEST_TABLE = "table";
+ private static final String TEST_TABLE = "Normalized_Table";
private static final String NOT_EXISTED_TABLE = "not_existed_table";
@@ -125,6 +126,13 @@ class TableMetaDataLoaderTest {
assertThat(indexesIterator.next().getName(), is("my_index"));
}
+ @Test
+ void assertLoadNormalizedTableName() throws SQLException {
+ Optional<TableMetaData> actual =
TableMetaDataLoader.loadNormalized(dataSource, TEST_TABLE, databaseType);
+ assertTrue(actual.isPresent());
+ assertThat(actual.get().getName(), is(TEST_TABLE));
+ }
+
private void assertColumnMetaData(final ColumnMetaData actual, final
String name, final int dataType, final boolean primaryKey, final boolean
caseSensitive) {
assertThat(actual.getName(), is(name));
assertThat(actual.getDataType(), is(dataType));
diff --git
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoader.java
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoader.java
index da091a3f3d0..54a45ff3ea3 100644
---
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoader.java
+++
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoader.java
@@ -20,7 +20,6 @@ package
org.apache.shardingsphere.database.connector.firebird.metadata.data.load
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.MetaDataLoaderConnection;
import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.MetaDataLoaderMaterial;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierNormalizeEngine;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -54,8 +53,7 @@ final class FirebirdBlobColumnLoader {
MetaDataLoaderConnection connection = new
MetaDataLoaderConnection(
material.getStorageType(),
material.getDataSource().getConnection())) {
for (String each : material.getActualTableNames()) {
- String formattedTableName =
IdentifierNormalizeEngine.normalize(material.getTableIdentifierPolicy(), each);
- Map<String, Integer> blobColumns =
loadTableBlobColumns(connection, formattedTableName);
+ Map<String, Integer> blobColumns =
loadTableBlobColumns(connection, each);
result.put(each, blobColumns);
}
}
diff --git
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoader.java
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoader.java
index 9ac3b39d549..bf4104c18c8 100644
---
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoader.java
+++
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoader.java
@@ -40,7 +40,7 @@ public final class FirebirdMetaDataLoader implements
DialectMetaDataLoader {
public Collection<SchemaMetaData> load(final MetaDataLoaderMaterial
material) throws SQLException {
Collection<TableMetaData> tableMetaData = new LinkedList<>();
for (String each : material.getActualTableNames()) {
- TableMetaDataLoader.load(material.getDataSource(), each,
material.getStorageType(),
material.getTableIdentifierPolicy()).ifPresent(tableMetaData::add);
+ TableMetaDataLoader.loadNormalized(material.getDataSource(), each,
material.getStorageType()).ifPresent(tableMetaData::add);
}
loadBlobColumns(material);
loadNonFixedLengthColumnSizes(material);
diff --git
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoader.java
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoader.java
index 2acc8a4c671..65445ec498f 100644
---
a/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoader.java
+++
b/database/connector/dialect/firebird/src/main/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoader.java
@@ -20,7 +20,6 @@ package
org.apache.shardingsphere.database.connector.firebird.metadata.data.load
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.MetaDataLoaderConnection;
import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.MetaDataLoaderMaterial;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierNormalizeEngine;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -46,8 +45,7 @@ final class FirebirdNonFixedLengthColumnSizeLoader {
Map<String, Map<String, Integer>> result = new
HashMap<>(material.getActualTableNames().size(), 1F);
try (MetaDataLoaderConnection connection = new
MetaDataLoaderConnection(material.getStorageType(),
material.getDataSource().getConnection())) {
for (String each : material.getActualTableNames()) {
- String formattedTableName =
IdentifierNormalizeEngine.normalize(material.getTableIdentifierPolicy(), each);
- Map<String, Integer> columnSizes =
loadTableColumnSizes(connection, formattedTableName);
+ Map<String, Integer> columnSizes =
loadTableColumnSizes(connection, each);
result.put(each, columnSizes);
}
}
diff --git
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoaderTest.java
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoaderTest.java
index 6db5cdab100..3d46f03db0f 100644
---
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoaderTest.java
+++
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdBlobColumnLoaderTest.java
@@ -71,10 +71,10 @@ class FirebirdBlobColumnLoaderTest {
when(preparedStatement.executeQuery()).thenReturn(resultSet);
when(connection.prepareStatement(anyString())).thenReturn(preparedStatement);
when(dataSource.getConnection()).thenReturn(connection);
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("foo_tbl"), "foo_ds", dataSource,
databaseType, "schema");
+ MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("FOO_TBL"), "foo_ds", dataSource,
databaseType, "schema");
Map<String, Map<String, Integer>> actual = new
FirebirdBlobColumnLoader(material).load();
- assertThat(actual, hasKey("foo_tbl"));
- Map<String, Integer> actualTableColumns = actual.get("foo_tbl");
+ assertThat(actual, hasKey("FOO_TBL"));
+ Map<String, Integer> actualTableColumns = actual.get("FOO_TBL");
assertThat(actualTableColumns.size(), is(1));
assertThat(actualTableColumns.get("BLOB_COL"), is(expectedSubType));
verify(preparedStatement).setString(1, "FOO_TBL");
@@ -87,10 +87,10 @@ class FirebirdBlobColumnLoaderTest {
when(preparedStatement.executeQuery()).thenReturn(resultSet);
when(connection.prepareStatement(anyString())).thenReturn(preparedStatement);
when(dataSource.getConnection()).thenReturn(connection);
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("foo_tbl"), "foo_ds", dataSource,
databaseType, "schema");
+ MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("FOO_TBL"), "foo_ds", dataSource,
databaseType, "schema");
Map<String, Map<String, Integer>> actual = new
FirebirdBlobColumnLoader(material).load();
- assertThat(actual, hasKey("foo_tbl"));
- assertTrue(actual.get("foo_tbl").isEmpty());
+ assertThat(actual, hasKey("FOO_TBL"));
+ assertTrue(actual.get("FOO_TBL").isEmpty());
verify(preparedStatement).setString(1, "FOO_TBL");
}
diff --git
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoaderTest.java
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoaderTest.java
index 01e3b61876b..9784c54b662 100644
---
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoaderTest.java
+++
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdMetaDataLoaderTest.java
@@ -22,7 +22,6 @@ import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.Me
import
org.apache.shardingsphere.database.connector.core.metadata.data.loader.type.TableMetaDataLoader;
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.SchemaMetaData;
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.TableMetaData;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicy;
import
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import
org.apache.shardingsphere.database.connector.firebird.metadata.data.FirebirdBlobInfoRegistry;
@@ -43,8 +42,6 @@ import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasSize;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.mockStatic;
@@ -60,12 +57,12 @@ class FirebirdMetaDataLoaderTest {
@Test
void assertLoadRefreshesSizeRegistry() throws SQLException {
DataSource dataSource = mock(DataSource.class);
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("test_table"), "logic_ds",
dataSource, databaseType, "schema");
- TableMetaData tableMetaData = new TableMetaData("test_table",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("TEST_TABLE"), "logic_ds",
dataSource, databaseType, "schema");
+ TableMetaData tableMetaData = new TableMetaData("TEST_TABLE",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
Map<String, Integer> tableSizes = Collections.singletonMap("COLUMN",
16);
- Map<String, Map<String, Integer>> allSizes =
Collections.singletonMap("test_table", tableSizes);
+ Map<String, Map<String, Integer>> allSizes =
Collections.singletonMap("TEST_TABLE", tableSizes);
Map<String, Integer> tableBlobColumns =
Collections.singletonMap("BLOB_COL", 1);
- Map<String, Map<String, Integer>> allBlobColumns =
Collections.singletonMap("test_table", tableBlobColumns);
+ Map<String, Map<String, Integer>> allBlobColumns =
Collections.singletonMap("TEST_TABLE", tableBlobColumns);
try (
MockedStatic<TableMetaDataLoader> tableLoaderMocked =
mockStatic(TableMetaDataLoader.class);
MockedStatic<FirebirdNonFixedLengthColumnSizeRegistry>
sizeRegistryMocked = mockStatic(FirebirdNonFixedLengthColumnSizeRegistry.class);
@@ -74,14 +71,14 @@ class FirebirdMetaDataLoaderTest {
mockConstruction(FirebirdNonFixedLengthColumnSizeLoader.class, (mock, context)
-> when(mock.load()).thenReturn(allSizes));
MockedConstruction<FirebirdBlobColumnLoader>
blobColumnLoaderMocked =
mockConstruction(FirebirdBlobColumnLoader.class,
(mock, context) -> when(mock.load()).thenReturn(allBlobColumns))) {
- tableLoaderMocked.when(() ->
TableMetaDataLoader.load(eq(dataSource), eq("test_table"), eq(databaseType),
any(IdentifierCasePolicy.class))).thenReturn(Optional.of(tableMetaData));
+ tableLoaderMocked.when(() ->
TableMetaDataLoader.loadNormalized(dataSource, "TEST_TABLE",
databaseType)).thenReturn(Optional.of(tableMetaData));
Collection<SchemaMetaData> actual =
dialectMetaDataLoader.load(material);
assertThat(actual, hasSize(1));
SchemaMetaData schema = actual.iterator().next();
assertThat(schema.getName(), is("schema"));
assertThat(schema.getTables(), contains(tableMetaData));
- sizeRegistryMocked.verify(() ->
FirebirdNonFixedLengthColumnSizeRegistry.refreshTable("schema", "test_table",
tableSizes));
- blobRegistryMocked.verify(() ->
FirebirdBlobInfoRegistry.refreshTable("schema", "test_table",
tableBlobColumns));
+ sizeRegistryMocked.verify(() ->
FirebirdNonFixedLengthColumnSizeRegistry.refreshTable("schema", "TEST_TABLE",
tableSizes));
+ blobRegistryMocked.verify(() ->
FirebirdBlobInfoRegistry.refreshTable("schema", "TEST_TABLE",
tableBlobColumns));
verify(columnSizeLoaderMocked.constructed().get(0)).load();
verify(blobColumnLoaderMocked.constructed().get(0)).load();
}
diff --git
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoaderTest.java
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoaderTest.java
index 3b472ab8dc1..c6477acb03e 100644
---
a/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoaderTest.java
+++
b/database/connector/dialect/firebird/src/test/java/org/apache/shardingsphere/database/connector/firebird/metadata/data/loader/FirebirdNonFixedLengthColumnSizeLoaderTest.java
@@ -70,10 +70,10 @@ class FirebirdNonFixedLengthColumnSizeLoaderTest {
when(columnsResultSet.getInt("DATA_TYPE")).thenReturn(dataType);
when(columnsResultSet.getString("COLUMN_NAME")).thenReturn(columnName);
when(columnsResultSet.getInt("COLUMN_SIZE")).thenReturn(columnSize);
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("foo_tbl"), "logic_ds",
dataSource, databaseType, "schema");
+ MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("FOO_TBL"), "logic_ds",
dataSource, databaseType, "schema");
Map<String, Map<String, Integer>> actual = new
FirebirdNonFixedLengthColumnSizeLoader(material).load();
- assertThat(actual, hasKey("foo_tbl"));
- assertThat(actual.get("foo_tbl"), is(expected));
+ assertThat(actual, hasKey("FOO_TBL"));
+ assertThat(actual.get("FOO_TBL"), is(expected));
}
@ParameterizedTest(name = "{0}")
@@ -95,10 +95,10 @@ class FirebirdNonFixedLengthColumnSizeLoaderTest {
if (stubWasNull) {
when(columnsResultSet.wasNull()).thenReturn(wasNull);
}
- MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("foo_tbl"), "logic_ds",
dataSource, databaseType, "schema");
+ MetaDataLoaderMaterial material = new
MetaDataLoaderMaterial(Collections.singleton("FOO_TBL"), "logic_ds",
dataSource, databaseType, "schema");
Map<String, Map<String, Integer>> actual = new
FirebirdNonFixedLengthColumnSizeLoader(material).load();
- assertThat(actual, hasKey("foo_tbl"));
- assertTrue(actual.get("foo_tbl").isEmpty());
+ assertThat(actual, hasKey("FOO_TBL"));
+ assertTrue(actual.get("FOO_TBL").isEmpty());
}
@Test
diff --git
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
index b5386fc3992..faccb2ef238 100644
---
a/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
+++
b/database/connector/dialect/hive/src/main/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoader.java
@@ -60,7 +60,7 @@ public final class HiveMetaDataLoader implements
DialectMetaDataLoader {
return Collections.singleton(new
SchemaMetaData(material.getDefaultSchemaName(), tableMetaData));
}
for (String each : material.getActualTableNames()) {
- TableMetaDataLoader.load(material.getDataSource(), each,
material.getStorageType(),
material.getTableIdentifierPolicy()).ifPresent(tableMetaData::add);
+ TableMetaDataLoader.loadNormalized(material.getDataSource(), each,
material.getStorageType()).ifPresent(tableMetaData::add);
}
return Collections.singleton(new
SchemaMetaData(material.getDefaultSchemaName(), tableMetaData));
}
diff --git
a/database/connector/dialect/hive/src/test/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoaderTest.java
b/database/connector/dialect/hive/src/test/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoaderTest.java
index f2fefbf1d36..c1968b84fa0 100644
---
a/database/connector/dialect/hive/src/test/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoaderTest.java
+++
b/database/connector/dialect/hive/src/test/java/org/apache/shardingsphere/database/connector/hive/metadata/data/loader/HiveMetaDataLoaderTest.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.database.connector.core.metadata.data.model.Col
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.SchemaMetaData;
import
org.apache.shardingsphere.database.connector.core.metadata.data.model.TableMetaData;
import
org.apache.shardingsphere.database.connector.core.metadata.database.datatype.DataTypeRegistry;
-import
org.apache.shardingsphere.database.connector.core.metadata.identifier.IdentifierCasePolicy;
import
org.apache.shardingsphere.database.connector.core.spi.DatabaseTypedSPILoader;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -56,8 +55,6 @@ import static org.hamcrest.Matchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -119,8 +116,8 @@ class HiveMetaDataLoaderTest {
void assertLoadWithoutInformationSchemaFallbackToDefaultLoader() throws
SQLException {
DataSource dataSource =
mockDataSource(mockInformationSchemaConnection(false));
TableMetaData tableMetaData = new TableMetaData("present_table",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
- when(TableMetaDataLoader.load(eq(dataSource), eq("missing_table"),
eq(databaseType),
any(IdentifierCasePolicy.class))).thenReturn(Optional.empty());
- when(TableMetaDataLoader.load(eq(dataSource), eq("present_table"),
eq(databaseType),
any(IdentifierCasePolicy.class))).thenReturn(Optional.of(tableMetaData));
+ when(TableMetaDataLoader.loadNormalized(dataSource, "missing_table",
databaseType)).thenReturn(Optional.empty());
+ when(TableMetaDataLoader.loadNormalized(dataSource, "present_table",
databaseType)).thenReturn(Optional.of(tableMetaData));
Collection<SchemaMetaData> fallbackSchemas = loader.load(new
MetaDataLoaderMaterial(Arrays.asList("missing_table", "present_table"), "ds_2",
dataSource, databaseType, "fallback_schema"));
TableMetaData defaultLoadedTable =
fallbackSchemas.iterator().next().getTables().iterator().next();
assertThat(defaultLoadedTable.getName(), is("present_table"));
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 0a723853d7d..55558c99a81 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
@@ -70,7 +70,7 @@ public final class GenericSchemaBuilder {
*/
public static Map<String, ShardingSphereSchema> build(final
Collection<String> tableNames, final DatabaseType protocolType, final
GenericSchemaBuilderMaterial material) throws SQLException {
boolean isSameProtocolAndStorageTypes =
isSameProtocolAndStorageTypes(protocolType, material.getStorageUnits());
- Map<String, SchemaMetaData> result = loadSchemas(tableNames, material,
isSameProtocolAndStorageTypes);
+ Map<String, SchemaMetaData> result = loadSchemas(tableNames, material);
if (!isSameProtocolAndStorageTypes) {
result = translate(result, protocolType, material);
}
@@ -85,9 +85,8 @@ public final class GenericSchemaBuilder {
return result;
}
- private static Map<String, SchemaMetaData> loadSchemas(final
Collection<String> tableNames, final GenericSchemaBuilderMaterial material,
- final boolean
isSameProtocolAndStorageTypes) throws SQLException {
- Collection<MetaDataLoaderMaterial> materials =
SchemaMetaDataUtils.getMetaDataLoaderMaterials(tableNames, material,
isSameProtocolAndStorageTypes);
+ private static Map<String, SchemaMetaData> loadSchemas(final
Collection<String> tableNames, final GenericSchemaBuilderMaterial material)
throws SQLException {
+ Collection<MetaDataLoaderMaterial> materials =
SchemaMetaDataUtils.getMetaDataLoaderMaterials(tableNames, material);
return materials.isEmpty() ? Collections.emptyMap() :
MetaDataLoader.load(materials);
}
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 36156e41224..e23ed99629e 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
@@ -57,11 +57,9 @@ public final class SchemaMetaDataUtils {
*
* @param tableNames table name collection
* @param material material
- * @param isSameProtocolAndStorageTypes whether protocol and storage types
are the same
* @return meta data loader materials
*/
- public static Collection<MetaDataLoaderMaterial>
getMetaDataLoaderMaterials(final Collection<String> tableNames, final
GenericSchemaBuilderMaterial material,
-
final boolean isSameProtocolAndStorageTypes) {
+ public static Collection<MetaDataLoaderMaterial>
getMetaDataLoaderMaterials(final Collection<String> tableNames, final
GenericSchemaBuilderMaterial material) {
Map<String, Collection<String>> dataSourceTableGroups = new
LinkedHashMap<>();
Collection<DatabaseType>
unsupportedThreeTierStorageStructureDatabaseTypes =
getUnsupportedThreeTierStorageStructureDatabaseTypes(material.getStorageUnits().values());
DataNodes dataNodes = new DataNodes(material.getRules());
@@ -79,26 +77,22 @@ public final class SchemaMetaDataUtils {
for (Entry<String, Collection<String>> entry :
dataSourceTableGroups.entrySet()) {
DatabaseType storageType =
material.getStorageUnits().get(entry.getKey()).getStorageType();
String defaultSchemaName = new
DatabaseTypeRegistry(storageType).getDefaultSchemaName(material.getDefaultSchemaName());
- result.addAll(buildMaterials(material, entry.getKey(),
entry.getValue(), storageType, defaultSchemaName, loadTableMetadataBatchSize,
isSameProtocolAndStorageTypes));
+ result.addAll(buildMaterials(material, entry.getKey(),
entry.getValue(), storageType, defaultSchemaName, loadTableMetadataBatchSize));
}
return result;
}
private static Collection<MetaDataLoaderMaterial> buildMaterials(final
GenericSchemaBuilderMaterial material, final String dataSourceName, final
Collection<String> actualTableNames,
- final
DatabaseType storageType, final String defaultSchemaName, final int
loadTableMetadataBatchSize,
- final
boolean isSameProtocolAndStorageTypes) {
+ final
DatabaseType storageType, final String defaultSchemaName, final int
loadTableMetadataBatchSize) {
Collection<MetaDataLoaderMaterial> result = new LinkedList<>();
DataSource dataSource = getDataSource(material, dataSourceName);
for (List<String> each : Lists.partition(new
ArrayList<>(actualTableNames), loadTableMetadataBatchSize)) {
- result.add(new MetaDataLoaderMaterial(normalize(each,
material.getIdentifierContext(), isSameProtocolAndStorageTypes),
dataSourceName, dataSource, storageType, defaultSchemaName));
+ result.add(new MetaDataLoaderMaterial(normalize(each,
material.getIdentifierContext()), dataSourceName, dataSource, storageType,
defaultSchemaName));
}
return result;
}
- private static Collection<String> normalize(final Collection<String>
tableNames, final DatabaseIdentifierContext identifierContext, final boolean
isSameProtocolAndStorageTypes) {
- if (isSameProtocolAndStorageTypes) {
- return tableNames;
- }
+ private static Collection<String> normalize(final Collection<String>
tableNames, final DatabaseIdentifierContext identifierContext) {
return tableNames.stream().map(each ->
identifierContext.normalizeStorage(IdentifierScope.TABLE, new
IdentifierValue(each))).collect(Collectors.toList());
}
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 cd7c3b63014..8f99c4848de 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
@@ -84,7 +84,7 @@ class SchemaMetaDataUtilsTest {
final List<List<String>>
expectedActualTableNames, final List<String> expectedDefaultSchemaNames) {
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(storageUnits,
Collections.singleton(mockDataNodeRule(dataNodes)), props, defaultSchemaName,
DatabaseIdentifierContextFactory.createDefault());
- List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, true));
+ List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.size(), is(expectedStorageUnitNames.size()));
for (int i = 0; i < actual.size(); i++) {
assertThat(actual.get(i).getStorageUnitName(),
is(expectedStorageUnitNames.get(i)));
@@ -102,7 +102,7 @@ class SchemaMetaDataUtilsTest {
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(storageUnits,
Collections.singleton(mockDataNodeRule(Collections.singleton(new
DataNode("ds.foo_db", "foo_db", "foo_tbl")))),
createProperties(Boolean.FALSE, null), "foo_db",
DatabaseIdentifierContextFactory.createDefault());
- List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, true));
+ List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.size(), is(1));
assertThat(actual.get(0).getStorageUnitName(), is("ds.foo_db"));
assertThat(actual.get(0).getDataSource(), is(dataSource));
@@ -120,7 +120,7 @@ class SchemaMetaDataUtilsTest {
Collections.singleton(mockDataNodeRule(Collections.singleton(new
DataNode("ds.foo_db", "foo_db", "foo_tbl")))),
createProperties(Boolean.FALSE, null), "foo_db",
DatabaseIdentifierContextFactory.createDefault());
UnsupportedActualDataNodeStructureException actual =
assertThrows(UnsupportedActualDataNodeStructureException.class,
- () ->
SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, true));
+ () ->
SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.getMessage(), is("Can not support 3-tier structure
for actual data node 'ds.foo_db.foo_tbl' with JDBC 'jdbc:mock'."));
}
@@ -131,7 +131,7 @@ class SchemaMetaDataUtilsTest {
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(storageUnits, Collections.singleton(
mockDataNodeRule(Arrays.asList(new DataNode("ds_0.foo_tbl_0"),
new DataNode("ds_0.foo_tbl_1"), new DataNode("ds_0.foo_tbl_2")))),
createProperties(Boolean.TRUE, 2), "foo_db",
DatabaseIdentifierContextFactory.createDefault());
- List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, true));
+ List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.size(), is(2));
assertThat(actual.get(0).getStorageUnitName(), is("ds_0"));
assertThat(new ArrayList<>(actual.get(0).getActualTableNames()),
is(Arrays.asList("foo_tbl_0", "foo_tbl_1")));
@@ -147,7 +147,7 @@ class SchemaMetaDataUtilsTest {
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(storageUnits,
Collections.singleton(mockDataNodeRule(Collections.singleton(new
DataNode("ds_0.t_user")))), props, "foo_db",
DatabaseIdentifierContextFactory.create(MYSQL_DATABASE_TYPE,
new ResourceMetaData(Collections.emptyMap(), storageUnits), props));
- List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, false));
+ List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.size(), is(1));
assertThat(new ArrayList<>(actual.get(0).getActualTableNames()),
is(Collections.singletonList("T_USER")));
}
@@ -161,7 +161,7 @@ class SchemaMetaDataUtilsTest {
GenericSchemaBuilderMaterial material = new
GenericSchemaBuilderMaterial(storageUnits, Collections.singleton(
mockDataNodeRule(Arrays.asList(new
DataNode("ds_mysql.t_order"), new DataNode("ds_oracle.t_user")))), props,
"foo_db",
DatabaseIdentifierContextFactory.create(MYSQL_DATABASE_TYPE,
new ResourceMetaData(Collections.emptyMap(), storageUnits), props));
- List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material, false));
+ List<MetaDataLoaderMaterial> actual = new
ArrayList<>(SchemaMetaDataUtils.getMetaDataLoaderMaterials(Collections.singleton("foo_tbl"),
material));
assertThat(actual.size(), is(2));
assertThat(actual.get(0).getStorageUnitName(), is("ds_mysql"));
assertThat(new ArrayList<>(actual.get(0).getActualTableNames()),
is(Collections.singletonList("t_order")));