You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by tu...@apache.org on 2023/03/13 07:15:17 UTC
[shardingsphere] branch master updated: Optimize ShardingStatisticsTableCollector for database openGauss (#23691)
This is an automated email from the ASF dual-hosted git repository.
tuichenchuxin 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 ae920d9be5e Optimize ShardingStatisticsTableCollector for database openGauss (#23691)
ae920d9be5e is described below
commit ae920d9be5efdd322e731f0f10dcd1b3d434be92
Author: lushaorong <ww...@163.com>
AuthorDate: Mon Mar 13 15:15:08 2023 +0800
Optimize ShardingStatisticsTableCollector for database openGauss (#23691)
* Optimize ShardingStatisticsTableCollector for database openGauss
Signed-off-by: lushaorong <ww...@163.com>
* Optimize ShardingStatisticsTableCollector for database openGauss
Signed-off-by: lushaorong <ww...@163.com>
---------
Signed-off-by: lushaorong <ww...@163.com>
---
.../data/ShardingStatisticsTableCollector.java | 25 +++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
index ad92b36087a..eb9dcfea990 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/metadata/data/ShardingStatisticsTableCollector.java
@@ -54,6 +54,8 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereDat
private static final String POSTGRESQL_TABLE_DATA_LENGTH = "SELECT PG_RELATION_SIZE(RELID) as DATA_LENGTH FROM PG_STAT_ALL_TABLES T WHERE SCHEMANAME='%s' AND RELNAME = '%s'";
+ private static final String OPENGAUSS_TABLE_ROWS_AND_DATA_LENGTH = "SELECT RELTUPLES AS TABLE_ROWS, PG_TABLE_SIZE('%s') AS DATA_LENGTH FROM PG_CLASS WHERE RELNAME = '%s'";
+
@Override
public Optional<ShardingSphereTableData> collect(final String databaseName, final ShardingSphereTable table,
final Map<String, ShardingSphereDatabase> shardingSphereDatabases) throws SQLException {
@@ -101,7 +103,8 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereDat
} else if (databaseType instanceof PostgreSQLDatabaseType) {
addForPostgreSQL(dataSources, dataNode, row);
} else if (databaseType instanceof OpenGaussDatabaseType) {
- // TODO get OpenGauss rows and data length
+ addForOpenGauss(dataSources, dataNode, row);
+ } else {
row.add(BigDecimal.ZERO);
row.add(BigDecimal.ZERO);
}
@@ -147,6 +150,26 @@ public final class ShardingStatisticsTableCollector implements ShardingSphereDat
row.add(dataLength);
}
+ private void addForOpenGauss(final Map<String, DataSource> dataSources, final DataNode dataNode, final List<Object> row) throws SQLException {
+ DataSource dataSource = dataSources.get(dataNode.getDataSourceName());
+ BigDecimal tableRows = BigDecimal.ZERO;
+ BigDecimal dataLength = BigDecimal.ZERO;
+ try (
+ Connection connection = dataSource.getConnection();
+ Statement statement = connection.createStatement()) {
+ try (
+ ResultSet resultSet = statement
+ .executeQuery(String.format(OPENGAUSS_TABLE_ROWS_AND_DATA_LENGTH, dataNode.getTableName(), dataNode.getTableName()))) {
+ if (resultSet.next()) {
+ tableRows = resultSet.getBigDecimal("TABLE_ROWS");
+ dataLength = resultSet.getBigDecimal("DATA_LENGTH");
+ }
+ }
+ }
+ row.add(tableRows);
+ row.add(dataLength);
+ }
+
@Override
public String getType() {
return SHARDING_TABLE_STATISTICS;