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 69adc0107ef Refactor system table option handling to use driver query system catalog option (#35284) 69adc0107ef is described below commit 69adc0107ef6a11c258f1a4429b978ea83d9ef80 Author: Liang Zhang <zhangli...@apache.org> AuthorDate: Mon Apr 28 19:29:34 2025 +0800 Refactor system table option handling to use driver query system catalog option (#35284) --- .../database/schema/util/SystemSchemaUtils.java | 9 ++--- .../database/metadata/DialectDatabaseMetaData.java | 13 +++---- .../option/table/DefaultSystemTableOption.java | 39 -------------------- ... => DialectDriverQuerySystemCatalogOption.java} | 42 +++++++++++++++++----- .../database/OpenGaussDatabaseMetaData.java | 10 +++--- ...> OpenGaussDriverQuerySystemCatalogOption.java} | 37 ++++++++++++++----- .../option/OpenGaussSystemTableOptionTest.java | 14 ++++---- .../enumerable/EnumerableScanExecutor.java | 8 ++--- .../executor/utils/StatisticsAssembleUtils.java | 33 ++++++++--------- 9 files changed, 105 insertions(+), 100 deletions(-) diff --git a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java index ff8baee5c69..7286bea6446 100644 --- a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java +++ b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/util/SystemSchemaUtils.java @@ -20,7 +20,7 @@ package org.apache.shardingsphere.infra.metadata.database.schema.util; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectSystemTableOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import org.apache.shardingsphere.infra.database.core.metadata.database.system.SystemDatabase; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; @@ -29,6 +29,7 @@ import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.Expr import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment; import java.util.Collection; +import java.util.Optional; /** * System schema utility. @@ -77,9 +78,9 @@ public final class SystemSchemaUtils { * @return whether query or not */ public static boolean isDriverQuerySystemCatalog(final DatabaseType databaseType, final Collection<ProjectionSegment> projections) { - DialectSystemTableOption systemTableOption = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSystemTableOption(); - return systemTableOption.isDriverQuerySystemCatalog() + Optional<DialectDriverQuerySystemCatalogOption> driverQuerySystemCatalogOption = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getDriverQuerySystemCatalogOption(); + return driverQuerySystemCatalogOption.isPresent() && 1 == projections.size() && projections.iterator().next() instanceof ExpressionProjectionSegment - && systemTableOption.isSystemCatalogQueryExpressions(((ExpressionProjectionSegment) projections.iterator().next()).getText()); + && driverQuerySystemCatalogOption.get().isSystemCatalogQueryExpressions(((ExpressionProjectionSegment) projections.iterator().next()).getText()); } } diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java index a8159a4c8f7..95b3d0f09ef 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/DialectDatabaseMetaData.java @@ -27,13 +27,14 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.metadata. import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.join.DialectJoinOrderOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DefaultSchemaOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DefaultSystemTableOption; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectSystemTableOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.core.spi.DatabaseTypedSPI; import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI; +import java.util.Optional; + /** * Dialect database meta data. */ @@ -74,12 +75,12 @@ public interface DialectDatabaseMetaData extends DatabaseTypedSPI { } /** - * Get system table option. + * Get driver query system catalog option. * - * @return system table option + * @return driver query system catalog option */ - default DialectSystemTableOption getSystemTableOption() { - return new DefaultSystemTableOption(); + default Optional<DialectDriverQuerySystemCatalogOption> getDriverQuerySystemCatalogOption() { + return Optional.empty(); } /** diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DefaultSystemTableOption.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DefaultSystemTableOption.java deleted file mode 100644 index 6f55f31079c..00000000000 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DefaultSystemTableOption.java +++ /dev/null @@ -1,39 +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.database.core.metadata.database.metadata.option.table; - -/** - * Default system table option. - */ -public final class DefaultSystemTableOption implements DialectSystemTableOption { - - @Override - public boolean isDriverQuerySystemCatalog() { - return false; - } - - @Override - public boolean isSystemCatalogQueryExpressions(final String projectionExpression) { - return false; - } - - @Override - public boolean isSystemTable(final String tableName) { - return false; - } -} diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectSystemTableOption.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectDriverQuerySystemCatalogOption.java similarity index 64% rename from infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectSystemTableOption.java rename to infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectDriverQuerySystemCatalogOption.java index 205d5b4ce83..c8da7772be8 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectSystemTableOption.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/metadata/option/table/DialectDriverQuerySystemCatalogOption.java @@ -18,16 +18,9 @@ package org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table; /** - * Dialect system table option. + * Dialect driver query system catalog option. */ -public interface DialectSystemTableOption { - - /** - * Whether driver query system catalog. - * - * @return query or not - */ - boolean isDriverQuerySystemCatalog(); +public interface DialectDriverQuerySystemCatalogOption { /** * Whether system catalog query expressions. @@ -44,4 +37,35 @@ public interface DialectSystemTableOption { * @return is system table or not */ boolean isSystemTable(String tableName); + + /** + * Whether database data table. + * + * @param tableName table name + * @return is database data table or not + */ + boolean isDatabaseDataTable(String tableName); + + /** + * Whether table data table. + * + * @param tableName table name + * @return is table data table or not + */ + boolean isTableDataTable(String tableName); + + /** + * Whether role data table. + * + * @param tableName table name + * @return is role data table or not + */ + boolean isRoleDataTable(String tableName); + + /** + * Get dat compatibility. + * + * @return dat compatibility + */ + String getDatCompatibility(); } diff --git a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java index 82ab7cec3c5..b2923141415 100644 --- a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java +++ b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/OpenGaussDatabaseMetaData.java @@ -23,12 +23,14 @@ import org.apache.shardingsphere.infra.database.core.metadata.database.metadata. import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.datatype.DialectDataTypeOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.index.DialectIndexOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.schema.DialectSchemaOption; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectSystemTableOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.TableNamePatternType; import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.transaction.DialectTransactionOption; import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussDataTypeOption; import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussSchemaOption; -import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussSystemTableOption; +import org.apache.shardingsphere.infra.database.opengauss.metadata.database.option.OpenGaussDriverQuerySystemCatalogOption; + +import java.util.Optional; /** * Database meta data of openGauss. @@ -56,8 +58,8 @@ public final class OpenGaussDatabaseMetaData implements DialectDatabaseMetaData } @Override - public DialectSystemTableOption getSystemTableOption() { - return new OpenGaussSystemTableOption(); + public Optional<DialectDriverQuerySystemCatalogOption> getDriverQuerySystemCatalogOption() { + return Optional.of(new OpenGaussDriverQuerySystemCatalogOption()); } @Override diff --git a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOption.java b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDriverQuerySystemCatalogOption.java similarity index 61% rename from infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOption.java rename to infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDriverQuerySystemCatalogOption.java index d88c87c15e0..6245d2aa2f7 100644 --- a/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOption.java +++ b/infra/database/type/opengauss/src/main/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussDriverQuerySystemCatalogOption.java @@ -18,25 +18,26 @@ package org.apache.shardingsphere.infra.database.opengauss.metadata.database.option; import com.cedarsoftware.util.CaseInsensitiveSet; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectSystemTableOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import java.util.Arrays; import java.util.Collection; /** - * System table option for openGauss. + * Driver query system catalog option for openGauss. */ -public final class OpenGaussSystemTableOption implements DialectSystemTableOption { +public final class OpenGaussDriverQuerySystemCatalogOption implements DialectDriverQuerySystemCatalogOption { private static final Collection<String> SYSTEM_CATALOG_QUERY_EXPRESSIONS = new CaseInsensitiveSet<>( Arrays.asList("version()", "intervaltonum(gs_password_deadline())", "gs_password_notifytime()")); - private static final Collection<String> SYSTEM_CATALOG_TABLES = new CaseInsensitiveSet<>(Arrays.asList("pg_database", "pg_tables", "pg_roles")); + private static final String DATABASE_DATA_TABLE = "pg_database"; - @Override - public boolean isDriverQuerySystemCatalog() { - return true; - } + private static final String TABLE_DATA_TABLE = "pg_tables"; + + private static final String ROLE_DATA_TABLE = "pg_roles"; + + private static final Collection<String> SYSTEM_CATALOG_TABLES = new CaseInsensitiveSet<>(Arrays.asList(DATABASE_DATA_TABLE, TABLE_DATA_TABLE, ROLE_DATA_TABLE)); @Override public boolean isSystemCatalogQueryExpressions(final String projectionExpression) { @@ -47,4 +48,24 @@ public final class OpenGaussSystemTableOption implements DialectSystemTableOptio public boolean isSystemTable(final String tableName) { return SYSTEM_CATALOG_TABLES.contains(tableName); } + + @Override + public boolean isDatabaseDataTable(final String tableName) { + return DATABASE_DATA_TABLE.equalsIgnoreCase(tableName); + } + + @Override + public boolean isTableDataTable(final String tableName) { + return TABLE_DATA_TABLE.equalsIgnoreCase(tableName); + } + + @Override + public boolean isRoleDataTable(final String tableName) { + return ROLE_DATA_TABLE.equalsIgnoreCase(tableName); + } + + @Override + public String getDatCompatibility() { + return "PG"; + } } diff --git a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOptionTest.java b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOptionTest.java index 7d5ec44cb16..32da68400a4 100644 --- a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOptionTest.java +++ b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/database/option/OpenGaussSystemTableOptionTest.java @@ -26,12 +26,12 @@ class OpenGaussSystemTableOptionTest { @Test public void assertIsSystemCatalogQueryExpressions() { - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("version()")); - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("intervaltonum(gs_password_deadline())")); - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("gs_password_notifytime()")); - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("Version()")); - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("Intervaltonum(gs_password_deadline())")); - assertTrue(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("Gs_password_notifytime()")); - assertFalse(new OpenGaussSystemTableOption().isSystemCatalogQueryExpressions("invalid()")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("version()")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("intervaltonum(gs_password_deadline())")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("gs_password_notifytime()")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("Version()")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("Intervaltonum(gs_password_deadline())")); + assertTrue(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("Gs_password_notifytime()")); + assertFalse(new OpenGaussDriverQuerySystemCatalogOption().isSystemCatalogQueryExpressions("invalid()")); } } diff --git a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java index 542ac90d7a9..acc85065265 100644 --- a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java +++ b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java @@ -25,7 +25,7 @@ import org.apache.calcite.linq4j.Enumerator; import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext; import org.apache.shardingsphere.infra.binder.engine.SQLBindEngine; import org.apache.shardingsphere.infra.connection.kernel.KernelProcessor; -import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectSystemTableOption; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import org.apache.shardingsphere.infra.database.core.metadata.database.system.SystemDatabase; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry; @@ -153,9 +153,9 @@ public final class EnumerableScanExecutor implements ScanExecutor { } private Enumerable<Object> createMemoryEnumerable(final String databaseName, final String schemaName, final ShardingSphereTable table, final DatabaseType databaseType) { - DialectSystemTableOption systemTableOption = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getSystemTableOption(); - if (systemTableOption.isDriverQuerySystemCatalog() && systemTableOption.isSystemTable(table.getName())) { - return createMemoryEnumerator(StatisticsAssembleUtils.assembleTableStatistics(table, federationContext.getMetaData()), table, databaseType); + Optional<DialectDriverQuerySystemCatalogOption> driverQuerySystemCatalogOption = new DatabaseTypeRegistry(databaseType).getDialectDatabaseMetaData().getDriverQuerySystemCatalogOption(); + if (driverQuerySystemCatalogOption.isPresent() && driverQuerySystemCatalogOption.get().isSystemTable(table.getName())) { + return createMemoryEnumerator(StatisticsAssembleUtils.assembleTableStatistics(table, federationContext.getMetaData(), driverQuerySystemCatalogOption.get()), table, databaseType); } Optional<TableStatistics> tableStatistics = Optional.ofNullable(statistics.getDatabaseStatistics(databaseName)) .map(optional -> optional.getSchemaStatistics(schemaName)).map(optional -> optional.getTableStatistics(table.getName())); diff --git a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java index 867e9595b04..e638f61748e 100644 --- a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java +++ b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/utils/StatisticsAssembleUtils.java @@ -20,6 +20,7 @@ package org.apache.shardingsphere.sqlfederation.executor.utils; import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.apache.shardingsphere.authority.rule.AuthorityRule; +import org.apache.shardingsphere.infra.database.core.metadata.database.metadata.option.table.DialectDriverQuerySystemCatalogOption; import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData; import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase; import org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema; @@ -37,45 +38,39 @@ import java.util.Collection; @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class StatisticsAssembleUtils { - private static final String DAT_COMPATIBILITY = "PG"; - - private static final String PG_DATABASE = "pg_database"; - - private static final String PG_TABLES = "pg_tables"; - - private static final String PG_ROLES = "pg_roles"; - /** * Assemble table statistics. * * @param table table * @param metaData meta data + * @param driverQuerySystemCatalogOption driver query system catalog option * @return table statistics */ - public static TableStatistics assembleTableStatistics(final ShardingSphereTable table, final ShardingSphereMetaData metaData) { + public static TableStatistics assembleTableStatistics(final ShardingSphereTable table, final ShardingSphereMetaData metaData, + final DialectDriverQuerySystemCatalogOption driverQuerySystemCatalogOption) { TableStatistics result = new TableStatistics(table.getName()); - if (PG_DATABASE.equalsIgnoreCase(table.getName())) { - assembleOpenGaussDatabaseData(result, metaData.getAllDatabases()); - } else if (PG_TABLES.equalsIgnoreCase(table.getName())) { + if (driverQuerySystemCatalogOption.isDatabaseDataTable(table.getName())) { + assembleDatabaseData(result, metaData.getAllDatabases(), driverQuerySystemCatalogOption.getDatCompatibility()); + } else if (driverQuerySystemCatalogOption.isTableDataTable(table.getName())) { for (ShardingSphereDatabase each : metaData.getAllDatabases()) { - assembleOpenGaussTableData(result, each.getAllSchemas()); + assembleTableData(result, each.getAllSchemas()); } - } else if (PG_ROLES.equalsIgnoreCase(table.getName())) { - assembleOpenGaussRoleData(result, metaData); + } else if (driverQuerySystemCatalogOption.isRoleDataTable(table.getName())) { + assembleRoleData(result, metaData); } return result; } - private static void assembleOpenGaussDatabaseData(final TableStatistics tableStatistics, final Collection<ShardingSphereDatabase> databases) { + private static void assembleDatabaseData(final TableStatistics tableStatistics, final Collection<ShardingSphereDatabase> databases, final String datCompatibility) { for (ShardingSphereDatabase each : databases) { Object[] rows = new Object[15]; rows[0] = each.getName(); - rows[11] = DAT_COMPATIBILITY; + rows[11] = datCompatibility; tableStatistics.getRows().add(new RowStatistics(Arrays.asList(rows))); } } - private static void assembleOpenGaussTableData(final TableStatistics tableStatistics, final Collection<ShardingSphereSchema> schemas) { + private static void assembleTableData(final TableStatistics tableStatistics, final Collection<ShardingSphereSchema> schemas) { for (ShardingSphereSchema schema : schemas) { for (ShardingSphereTable each : schema.getAllTables()) { Object[] rows = new Object[10]; @@ -86,7 +81,7 @@ public final class StatisticsAssembleUtils { } } - private static void assembleOpenGaussRoleData(final TableStatistics tableStatistics, final ShardingSphereMetaData metaData) { + private static void assembleRoleData(final TableStatistics tableStatistics, final ShardingSphereMetaData metaData) { for (Grantee each : metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class).getGrantees()) { Object[] rows = new Object[27]; rows[0] = each.getUsername();