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 f7531132ba5 Refactor ShardingSphereStatisticsBuilder (#34376)
f7531132ba5 is described below
commit f7531132ba50424349d212bd13fc2758bc26a773
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jan 16 23:46:37 2025 +0800
Refactor ShardingSphereStatisticsBuilder (#34376)
* Refactor ShardingSphereStatisticsBuilder
* Refactor ShardingSphereStatisticsBuilder
* Refactor ShardingSphereStatisticsBuilder
---
...Builder.java => DialectStatisticsAppender.java} | 10 ++---
...csBuilder.java => MySQLStatisticsAppender.java} | 10 ++---
...lder.java => PostgreSQLStatisticsAppender.java} | 13 +++----
...a.statistics.builder.DialectStatisticsAppender} | 4 +-
.../MySQLShardingSphereStatisticsBuilderTest.java | 45 ----------------------
....java => PostgreSQLStatisticsAppenderTest.java} | 8 ++--
.../mode/metadata/MetaDataContextManager.java | 2 +-
.../metadata/ShardingSphereStatisticsFactory.java | 14 ++++---
8 files changed, 30 insertions(+), 76 deletions(-)
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
similarity index 81%
rename from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsBuilder.java
rename to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
index 16cfbd4f6eb..b67029b39d0 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/ShardingSphereStatisticsBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/DialectStatisticsAppender.java
@@ -23,16 +23,16 @@ import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabas
import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
/**
- * ShardingSphere statistics builder.
+ * Dialect statistics appender.
*/
@SingletonSPI
-public interface ShardingSphereStatisticsBuilder extends DatabaseTypedSPI {
+public interface DialectStatisticsAppender extends DatabaseTypedSPI {
/**
- * Build ShardingSphere data.
+ * Append database data.
*
+ * @param databaseData to be appended database data
* @param database database
- * @return built ShardingSphere data
*/
- ShardingSphereDatabaseData build(ShardingSphereDatabase database);
+ void append(ShardingSphereDatabaseData databaseData,
ShardingSphereDatabase database);
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLStatisticsAppender.java
similarity index 73%
rename from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
rename to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLStatisticsAppender.java
index 825227ce027..04aaf1081a3 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLStatisticsAppender.java
@@ -19,17 +19,15 @@ package
org.apache.shardingsphere.infra.metadata.statistics.builder.dialect;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereDefaultStatisticsBuilder;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender;
/**
- * ShardingSphere statistics builder for MySQL.
+ * Statistics appender for MySQL.
*/
-public final class MySQLShardingSphereStatisticsBuilder implements
ShardingSphereStatisticsBuilder {
+public final class MySQLStatisticsAppender implements
DialectStatisticsAppender {
@Override
- public ShardingSphereDatabaseData build(final ShardingSphereDatabase
database) {
- return new ShardingSphereDefaultStatisticsBuilder().build(database);
+ public void append(final ShardingSphereDatabaseData databaseData, final
ShardingSphereDatabase database) {
}
@Override
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
similarity index 82%
rename from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
rename to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
index 1b419146873..333015baa82 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilder.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppender.java
@@ -23,8 +23,7 @@ import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSp
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereDefaultStatisticsBuilder;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender;
import java.util.Arrays;
import java.util.Collection;
@@ -33,9 +32,9 @@ import java.util.Map;
import java.util.Map.Entry;
/**
- * ShardingSphere statistics builder for PostgreSQL.
+ * Statistics appender for PostgreSQL.
*/
-public final class PostgreSQLShardingSphereStatisticsBuilder implements
ShardingSphereStatisticsBuilder {
+public final class PostgreSQLStatisticsAppender implements
DialectStatisticsAppender {
private static final Map<String, Collection<String>>
INIT_DATA_SCHEMA_TABLES = new LinkedHashMap<>();
@@ -44,16 +43,14 @@ public final class
PostgreSQLShardingSphereStatisticsBuilder implements Sharding
}
@Override
- public ShardingSphereDatabaseData build(final ShardingSphereDatabase
database) {
- ShardingSphereDatabaseData result = new
ShardingSphereDefaultStatisticsBuilder().build(database);
+ public void append(final ShardingSphereDatabaseData databaseData, final
ShardingSphereDatabase database) {
for (Entry<String, Collection<String>> entry :
INIT_DATA_SCHEMA_TABLES.entrySet()) {
ShardingSphereSchemaData schemaData = new
ShardingSphereSchemaData();
if (null != database.getSchema(entry.getKey())) {
initTables(database.getSchema(entry.getKey()),
entry.getValue(), schemaData);
- result.putSchema(entry.getKey(), schemaData);
+ databaseData.putSchema(entry.getKey(), schemaData);
}
}
- return result;
}
private void initTables(final ShardingSphereSchema schema, final
Collection<String> tables, final ShardingSphereSchemaData schemaData) {
diff --git
a/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder
b/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender
similarity index 91%
rename from
infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder
rename to
infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender
index 32aa5824f82..4a1ec578b81 100644
---
a/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder
+++
b/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender
@@ -15,5 +15,5 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.MySQLShardingSphereStatisticsBuilder
-org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.PostgreSQLShardingSphereStatisticsBuilder
+org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.MySQLStatisticsAppender
+org.apache.shardingsphere.infra.metadata.statistics.builder.dialect.PostgreSQLStatisticsAppender
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilderTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilderTest.java
deleted file mode 100644
index 71eb24da30b..00000000000
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/MySQLShardingSphereStatisticsBuilderTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.infra.metadata.statistics.builder.dialect;
-
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
-import org.junit.jupiter.api.Test;
-
-class MySQLShardingSphereStatisticsBuilderTest {
-
- @Test
- void assertBuild() {
- ShardingSphereDatabase database = mockDatabase();
- ShardingSphereDatabaseData databaseData = new
MySQLShardingSphereStatisticsBuilder().build(database);
- assertTrue(databaseData.getSchemaData().containsKey("shardingsphere"));
-
assertTrue(databaseData.getSchemaData().get("shardingsphere").getTableData().containsKey("cluster_information"));
-
assertTrue(databaseData.getSchemaData().get("shardingsphere").getTableData().containsKey("sharding_table_statistics"));
- }
-
- private ShardingSphereDatabase mockDatabase() {
- ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
- when(database.containsSchema("shardingsphere")).thenReturn(true);
- return database;
- }
-}
diff --git
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
similarity index 87%
rename from
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
rename to
infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
index 67bccef0de1..bd8d677d515 100644
---
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLShardingSphereStatisticsBuilderTest.java
+++
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/statistics/builder/dialect/PostgreSQLStatisticsAppenderTest.java
@@ -21,6 +21,7 @@ import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereDefaultStatisticsBuilder;
import org.junit.jupiter.api.Test;
import java.util.Collections;
@@ -30,12 +31,13 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-class PostgreSQLShardingSphereStatisticsBuilderTest {
+class PostgreSQLStatisticsAppenderTest {
@Test
- void assertBuild() {
+ void assertAppend() {
ShardingSphereDatabase database = mockDatabase();
- ShardingSphereDatabaseData databaseData = new
PostgreSQLShardingSphereStatisticsBuilder().build(database);
+ ShardingSphereDatabaseData databaseData = new
ShardingSphereDefaultStatisticsBuilder().build(database);
+ new PostgreSQLStatisticsAppender().append(databaseData, database);
assertTrue(databaseData.getSchemaData().containsKey("pg_catalog"));
assertTrue(databaseData.getSchemaData().get("pg_catalog").getTableData().containsKey("pg_class"));
}
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
index 21ebc96d79a..431b2ad3a1c 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextManager.java
@@ -44,7 +44,7 @@ import java.util.Collection;
import java.util.Map;
/**
- * Meta data context manager..
+ * Meta data context manager.
*/
@Getter
@Slf4j
diff --git
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/ShardingSphereStatisticsFactory.java
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/ShardingSphereStatisticsFactory.java
index a5a6dc188cd..6ab5f32b393 100644
---
a/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/ShardingSphereStatisticsFactory.java
+++
b/mode/core/src/main/java/org/apache/shardingsphere/mode/metadata/ShardingSphereStatisticsFactory.java
@@ -27,7 +27,8 @@ import
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsBuilder;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereDefaultStatisticsBuilder;
+import
org.apache.shardingsphere.infra.metadata.statistics.builder.DialectStatisticsAppender;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -52,20 +53,21 @@ public final class ShardingSphereStatisticsFactory {
if (metaData.getAllDatabases().isEmpty()) {
return new ShardingSphereStatistics();
}
- Optional<ShardingSphereStatisticsBuilder> statisticsBuilder =
DatabaseTypedSPILoader.findService(ShardingSphereStatisticsBuilder.class,
getDatabaseType(metaData));
- if (!statisticsBuilder.isPresent()) {
+ Optional<DialectStatisticsAppender> dialectStatisticsAppender =
DatabaseTypedSPILoader.findService(DialectStatisticsAppender.class,
getDatabaseType(metaData));
+ if (!dialectStatisticsAppender.isPresent()) {
return new ShardingSphereStatistics();
}
ShardingSphereStatistics loadedStatistics =
persistService.getShardingSphereDataPersistService().load(metaData).orElse(new
ShardingSphereStatistics());
Collection<ShardingSphereDatabase> unloadedDatabases =
metaData.getAllDatabases().stream().filter(each ->
!loadedStatistics.containsDatabase(each.getName())).collect(Collectors.toList());
- return create(statisticsBuilder.get(), unloadedDatabases,
loadedStatistics);
+ return create(dialectStatisticsAppender.get(), unloadedDatabases,
loadedStatistics);
}
- private static ShardingSphereStatistics create(final
ShardingSphereStatisticsBuilder statisticsBuilder,
+ private static ShardingSphereStatistics create(final
DialectStatisticsAppender statisticsBuilder,
final
Collection<ShardingSphereDatabase> unloadedDatabases, final
ShardingSphereStatistics loadedStatistics) {
ShardingSphereStatistics result = new ShardingSphereStatistics();
for (ShardingSphereDatabase each : unloadedDatabases) {
- ShardingSphereDatabaseData databaseData =
statisticsBuilder.build(each);
+ ShardingSphereDatabaseData databaseData = new
ShardingSphereDefaultStatisticsBuilder().build(each);
+ statisticsBuilder.append(databaseData, each);
if (!databaseData.getSchemaData().isEmpty()) {
result.putDatabase(each.getName(), databaseData);
}