This is an automated email from the ASF dual-hosted git repository.
panjuan 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 d5bf9baf8d9 Optimize the type return value of the
ShardingSphereStatisticsCollector implementation class (#26774)
d5bf9baf8d9 is described below
commit d5bf9baf8d9df06be728170ffe04c239c192ef23
Author: jiangML <[email protected]>
AuthorDate: Wed Jul 5 18:10:58 2023 +0800
Optimize the type return value of the ShardingSphereStatisticsCollector
implementation class (#26774)
* Optimize the implementation interface of ShardingSphereStatisticsCollector
* fix test error
* add oid for pg_roles table
---
.../pgcatalog/OpenGaussPgClassTableCollector.java | 22 +++++++++++-----------
.../OpenGaussPgNamespaceTableCollector.java | 22 +++++++++++-----------
.../PostgreSQLPgClassTableCollector.java} | 9 +++++----
.../PostgreSQLPgNamespaceTableCollector.java} | 9 +++++----
...ics.collector.ShardingSphereStatisticsCollector | 6 ++++--
.../schema/opengauss/pg_catalog/pg_class.yaml | 2 +-
.../schema/opengauss/pg_catalog/pg_rules.yaml | 7 +++++++
.../schema/postgresql/pg_catalog/pg_class.yaml | 2 +-
.../schema/postgresql/pg_catalog/pg_roles.yaml | 2 +-
.../ShardingSphereStatisticsScheduleCollector.java | 6 +++++-
.../ShardingSphereDataCollectorFixture.java | 7 ++++---
.../listener/ShardingSphereDataCollectorTest.java | 10 ++++++----
12 files changed, 61 insertions(+), 43 deletions(-)
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgClassTableCollector.java
similarity index 68%
copy from
kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
copy to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgClassTableCollector.java
index 2d7bb4ebe84..822c61fda1d 100644
---
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgClassTableCollector.java
@@ -15,34 +15,34 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.data.pipeline.core.listener;
+package
org.apache.shardingsphere.infra.metadata.statistics.collector.opengauss.pgcatalog;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
-import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
+import
org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
+import
org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog.PostgreSQLPgClassTableCollector;
import java.sql.SQLException;
-import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
/**
- * ShardingSphere data collector fixture.
+ * Table pg_catalog.pg_class data collector for openGauss.
*/
-public final class ShardingSphereDataCollectorFixture implements
ShardingSphereStatisticsCollector {
+public final class OpenGaussPgClassTableCollector implements
ShardingSphereStatisticsCollector {
+
+ private final PostgreSQLPgClassTableCollector delegated = new
PostgreSQLPgClassTableCollector();
@Override
public Optional<ShardingSphereTableData> collect(final String
databaseName, final ShardingSphereTable table,
final Map<String,
ShardingSphereDatabase> shardingSphereDatabases) throws SQLException {
- ShardingSphereTableData shardingSphereTableData = new
ShardingSphereTableData("test_table");
- shardingSphereTableData.getRows().add(new
ShardingSphereRowData(Arrays.asList("1", "2")));
- return Optional.of(shardingSphereTableData);
+ return delegated.collect(databaseName, table, shardingSphereDatabases);
}
@Override
public String getType() {
- return "test_table";
+ return String.join(".", new OpenGaussDatabaseType().getType(),
"pg_catalog", "pg_class");
}
}
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgNamespaceTableCollector.java
similarity index 69%
copy from
kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
copy to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgNamespaceTableCollector.java
index 2d7bb4ebe84..27a95efb071 100644
---
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/opengauss/pgcatalog/OpenGaussPgNamespaceTableCollector.java
@@ -15,34 +15,34 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.data.pipeline.core.listener;
+package
org.apache.shardingsphere.infra.metadata.statistics.collector.opengauss.pgcatalog;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
-import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
+import
org.apache.shardingsphere.infra.database.type.dialect.OpenGaussDatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
+import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
+import
org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog.PostgreSQLPgNamespaceTableCollector;
import java.sql.SQLException;
-import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
/**
- * ShardingSphere data collector fixture.
+ * Table pg_catalog.pg_namespace data collector for openGauss.
*/
-public final class ShardingSphereDataCollectorFixture implements
ShardingSphereStatisticsCollector {
+public final class OpenGaussPgNamespaceTableCollector implements
ShardingSphereStatisticsCollector {
+
+ private final PostgreSQLPgNamespaceTableCollector delegated = new
PostgreSQLPgNamespaceTableCollector();
@Override
public Optional<ShardingSphereTableData> collect(final String
databaseName, final ShardingSphereTable table,
final Map<String,
ShardingSphereDatabase> shardingSphereDatabases) throws SQLException {
- ShardingSphereTableData shardingSphereTableData = new
ShardingSphereTableData("test_table");
- shardingSphereTableData.getRows().add(new
ShardingSphereRowData(Arrays.asList("1", "2")));
- return Optional.of(shardingSphereTableData);
+ return delegated.collect(databaseName, table, shardingSphereDatabases);
}
@Override
public String getType() {
- return "test_table";
+ return String.join(".", new OpenGaussDatabaseType().getType(),
"pg_catalog", "pg_namespace");
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgClassTableCollector.java
similarity index 92%
rename from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
rename to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgClassTableCollector.java
index 22f7b2fc416..7b7acdb34a6 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgClassTableCollector.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgClassTableCollector.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.statistics.collector.tables;
+package
org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog;
+import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
@@ -37,9 +38,9 @@ import java.util.Optional;
import java.util.stream.Collectors;
/**
- * Table pg_class data collector.
+ * Table pg_catalog.pg_class data collector for PostgreSQL.
*/
-public final class PgClassTableCollector implements
ShardingSphereStatisticsCollector {
+public final class PostgreSQLPgClassTableCollector implements
ShardingSphereStatisticsCollector {
private static final String PG_CLASS = "pg_class";
@@ -87,6 +88,6 @@ public final class PgClassTableCollector implements
ShardingSphereStatisticsColl
@Override
public String getType() {
- return PG_CLASS;
+ return String.join(".", new PostgreSQLDatabaseType().getType(),
"pg_catalog", "pg_class");
}
}
diff --git
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgNamespaceTableCollector.java
similarity index 87%
rename from
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
rename to
infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgNamespaceTableCollector.java
index b6d16c2803c..76101b34fc6 100644
---
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/tables/PgNamespaceTableCollector.java
+++
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/statistics/collector/postgresql/pgcatalog/PostgreSQLPgNamespaceTableCollector.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.metadata.statistics.collector.tables;
+package
org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog;
+import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseType;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
@@ -32,9 +33,9 @@ import java.util.Optional;
import java.util.stream.Collectors;
/**
- * Table pg_namespace data collector.
+ * Table pg_catalog.pg_namespace data collector for PostgreSQL.
*/
-public final class PgNamespaceTableCollector implements
ShardingSphereStatisticsCollector {
+public final class PostgreSQLPgNamespaceTableCollector implements
ShardingSphereStatisticsCollector {
private static final String PG_NAMESPACE = "pg_namespace";
@@ -54,6 +55,6 @@ public final class PgNamespaceTableCollector implements
ShardingSphereStatistics
@Override
public String getType() {
- return PG_NAMESPACE;
+ return String.join(".", new PostgreSQLDatabaseType().getType(),
"pg_catalog", "pg_namespace");
}
}
diff --git
a/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector
b/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector
index 8154ad584aa..fe646772f4e 100644
---
a/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector
+++
b/infra/common/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector
@@ -15,5 +15,7 @@
# limitations under the License.
#
-org.apache.shardingsphere.infra.metadata.statistics.collector.tables.PgNamespaceTableCollector
-org.apache.shardingsphere.infra.metadata.statistics.collector.tables.PgClassTableCollector
+org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog.PostgreSQLPgNamespaceTableCollector
+org.apache.shardingsphere.infra.metadata.statistics.collector.postgresql.pgcatalog.PostgreSQLPgClassTableCollector
+org.apache.shardingsphere.infra.metadata.statistics.collector.opengauss.pgcatalog.OpenGaussPgClassTableCollector
+org.apache.shardingsphere.infra.metadata.statistics.collector.opengauss.pgcatalog.OpenGaussPgNamespaceTableCollector
diff --git
a/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_class.yaml
b/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_class.yaml
index e1d096c1673..cbee72c4bc3 100644
--- a/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_class.yaml
+++ b/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_class.yaml
@@ -22,7 +22,7 @@ columns:
dataType: -5
generated: false
name: oid
- primaryKey: false
+ primaryKey: true
unsigned: false
visible: true
relname:
diff --git
a/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_rules.yaml
b/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_rules.yaml
index 2f755f48a3b..a6ef853fd83 100644
--- a/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_rules.yaml
+++ b/infra/common/src/main/resources/schema/opengauss/pg_catalog/pg_rules.yaml
@@ -17,6 +17,13 @@
name: pg_rules
columns:
+ oid:
+ caseSensitive: true
+ dataType: -5
+ generated: false
+ name: oid
+ primaryKey: true
+ visible: false
schemaname:
caseSensitive: true
dataType: 12
diff --git
a/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_class.yaml
b/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_class.yaml
index a649ddc06d9..c955918efdf 100644
--- a/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_class.yaml
+++ b/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_class.yaml
@@ -22,7 +22,7 @@ columns:
dataType: -5
generated: false
name: oid
- primaryKey: false
+ primaryKey: true
visible: true
relname:
caseSensitive: true
diff --git
a/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_roles.yaml
b/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_roles.yaml
index 04a60852300..b471fcc86d9 100644
--- a/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_roles.yaml
+++ b/infra/common/src/main/resources/schema/postgresql/pg_catalog/pg_roles.yaml
@@ -22,7 +22,7 @@ columns:
dataType: -5
generated: false
name: oid
- primaryKey: false
+ primaryKey: true
visible: false
rolname:
caseSensitive: true
diff --git
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereStatisticsScheduleCollector.java
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereStatisticsScheduleCollector.java
index 9a6b99c0344..5e82c10f60e 100644
---
a/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereStatisticsScheduleCollector.java
+++
b/kernel/data-pipeline/core/src/main/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereStatisticsScheduleCollector.java
@@ -67,6 +67,8 @@ public final class ShardingSphereStatisticsScheduleCollector {
@RequiredArgsConstructor
protected static final class ShardingSphereDataCollectorRunnable
implements Runnable {
+ private static final String SHARDING_SPHERE_SYSTEM_DATABASE_SCHEMA =
"shardingsphere";
+
private final ContextManager contextManager;
@Override
@@ -102,7 +104,9 @@ public final class
ShardingSphereStatisticsScheduleCollector {
private void collectForTable(final String databaseName, final String
schemaName, final ShardingSphereTable table,
final Map<String, ShardingSphereDatabase>
databases, final ShardingSphereStatistics statistics) {
- Optional<ShardingSphereStatisticsCollector> dataCollector =
TypedSPILoader.findService(ShardingSphereStatisticsCollector.class,
table.getName());
+ String collectorType =
SHARDING_SPHERE_SYSTEM_DATABASE_SCHEMA.equalsIgnoreCase(schemaName)
+ ? table.getName() : String.join(".",
databases.get(databaseName).getProtocolType().getType(), schemaName,
table.getName());
+ Optional<ShardingSphereStatisticsCollector> dataCollector =
TypedSPILoader.findService(ShardingSphereStatisticsCollector.class,
collectorType);
if (!dataCollector.isPresent()) {
return;
}
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
index 2d7bb4ebe84..c44e8f79b02 100644
---
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
+++
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorFixture.java
@@ -17,11 +17,12 @@
package org.apache.shardingsphere.data.pipeline.core.listener;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereRowData;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
import
org.apache.shardingsphere.infra.metadata.statistics.collector.ShardingSphereStatisticsCollector;
-import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import java.sql.SQLException;
import java.util.Arrays;
@@ -43,6 +44,6 @@ public final class ShardingSphereDataCollectorFixture
implements ShardingSphereS
@Override
public String getType() {
- return "test_table";
+ return String.join(".", new MySQLDatabaseType().getType(),
"logic_schema", "test_table");
}
}
diff --git
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorTest.java
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorTest.java
index 9147027b600..4a03aed74ac 100644
---
a/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorTest.java
+++
b/kernel/data-pipeline/core/src/test/java/org/apache/shardingsphere/data/pipeline/core/listener/ShardingSphereDataCollectorTest.java
@@ -19,15 +19,16 @@ package
org.apache.shardingsphere.data.pipeline.core.listener;
import
org.apache.shardingsphere.data.pipeline.core.listener.ShardingSphereStatisticsScheduleCollector.ShardingSphereDataCollectorRunnable;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-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.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereDatabaseData;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereSchemaData;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
+import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereTableData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.junit.jupiter.api.Test;
@@ -71,6 +72,7 @@ class ShardingSphereDataCollectorTest {
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class);
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(database.getName()).thenReturn("logic_db");
+ when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
when(result.getDatabases()).thenReturn(Collections.singletonMap("logic_db",
database));
when(result.getDatabase("logic_db")).thenReturn(database);
when(result.containsDatabase("logic_db")).thenReturn(true);