You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2025/10/12 11:25:16 UTC
(shardingsphere) branch master updated: Rename DatabaseMetaDataExecutor (#36856)
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 8dd031fcee5 Rename DatabaseMetaDataExecutor (#36856)
8dd031fcee5 is described below
commit 8dd031fcee5bc155a00e88a082a257b230874c52
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Oct 12 19:25:09 2025 +0800
Rename DatabaseMetaDataExecutor (#36856)
* Rename DatabaseMetaDataExecutor
* Rename DatabaseMetaDataExecutor
* Rename DatabaseMetaDataExecutor
---
...Executor.java => DatabaseMetaDataExecutor.java} | 133 ++++++++-------------
...Test.java => DatabaseMetaDataExecutorTest.java} | 30 ++---
.../select/SelectInformationSchemataExecutor.java | 59 +++++----
.../MySQLInformationSchemaExecutorFactory.java | 5 +-
.../schema/MySQLMySQLSchemaExecutorFactory.java | 5 +-
.../MySQLPerformanceSchemaExecutorFactory.java | 5 +-
.../schema/MySQLSysSchemaExecutorFactory.java | 5 +-
.../admin/MySQLAdminExecutorCreatorTest.java | 16 +--
.../OpenGaussSystemTableQueryExecutorCreator.java | 5 +-
.../admin/OpenGaussAdminExecutorCreatorTest.java | 4 +-
...enGaussSystemTableQueryExecutorCreatorTest.java | 4 +-
.../admin/PostgreSQLAdminExecutorCreator.java | 5 +-
12 files changed, 115 insertions(+), 161 deletions(-)
diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutor.java
similarity index 51%
rename from proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
rename to proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutor.java
index 89942685ce3..5e1d9b9b1e3 100644
--- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetaDataExecutor.java
+++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutor.java
@@ -34,7 +34,6 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import java.sql.Connection;
@@ -55,17 +54,19 @@ import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
- * The abstract class of database meta data, used to define the template.
+ * Database meta data executor.
*/
@RequiredArgsConstructor
@Getter
-public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQueryExecutor {
+public class DatabaseMetaDataExecutor implements DatabaseAdminQueryExecutor {
private QueryResultMetaData queryResultMetaData;
private MergedResult mergedResult;
- private final ContextManager contextManager;
+ private final String sql;
+
+ private final List<Object> parameters;
private final List<Map<String, Object>> rows = new LinkedList<>();
@@ -73,45 +74,77 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
@Override
public final void execute(final ConnectionSession connectionSession, final ShardingSphereMetaData metaData) throws SQLException {
- Collection<String> databaseNames = getDatabaseNames(connectionSession);
- for (String databaseName : databaseNames) {
- processMetaData(databaseName, resultSet -> handleResultSet(databaseName, resultSet));
+ Collection<ShardingSphereDatabase> databases = getDatabases(connectionSession, metaData);
+ for (ShardingSphereDatabase each : databases) {
+ processMetaData(each, resultSet -> handleResultSet(each, resultSet));
}
postProcess();
queryResultMetaData = createQueryResultMetaData();
mergedResult = createMergedResult();
}
+ protected Collection<ShardingSphereDatabase> getDatabases(final ConnectionSession connectionSession, final ShardingSphereMetaData metaData) {
+ String databaseName = connectionSession.getCurrentDatabaseName();
+ ShardingSphereDatabase database = metaData.getDatabase(databaseName);
+ if (null != database && isAuthorized(database.getName(), metaData, connectionSession.getConnectionContext().getGrantee()) && database.containsDataSource()) {
+ return Collections.singleton(database);
+ }
+ Collection<ShardingSphereDatabase> databases = metaData.getAllDatabases().stream()
+ .filter(each -> isAuthorized(each.getName(), metaData, connectionSession.getConnectionContext().getGrantee()))
+ .filter(ShardingSphereDatabase::containsDataSource).collect(Collectors.toList());
+ return databases.isEmpty() ? Collections.emptyList() : Collections.singleton(databases.iterator().next());
+ }
+
+ private boolean isAuthorized(final String databaseName, final ShardingSphereMetaData metaData, final Grantee grantee) {
+ return new AuthorityChecker(metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class), grantee).isAuthorized(databaseName);
+ }
+
@SneakyThrows(SQLException.class)
- private void handleResultSet(final String databaseName, final ResultSet resultSet) {
- ResultSetMetaData metaData = resultSet.getMetaData();
+ private void handleResultSet(final ShardingSphereDatabase database, final ResultSet resultSet) {
+ ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
- int columnCount = metaData.getColumnCount();
+ int columnCount = resultSetMetaData.getColumnCount();
Map<String, Object> rowMap = new LinkedHashMap<>(columnCount, 1F);
Map<String, String> aliasMap = new LinkedHashMap<>(columnCount, 1F);
for (int i = 1; i < columnCount + 1; i++) {
- aliasMap.put(metaData.getColumnName(i), metaData.getColumnLabel(i));
- rowMap.put(metaData.getColumnLabel(i), resultSet.getString(i));
+ aliasMap.put(resultSetMetaData.getColumnName(i), resultSetMetaData.getColumnLabel(i));
+ rowMap.put(resultSetMetaData.getColumnLabel(i), resultSet.getString(i));
}
- preProcess(databaseName, rowMap, aliasMap);
+ preProcess(database, rowMap, aliasMap);
if (!rowMap.isEmpty()) {
rows.add(rowMap);
}
}
if (rows.isEmpty()) {
- for (int i = 1; i < metaData.getColumnCount() + 1; i++) {
- labels.add(metaData.getColumnLabel(i));
+ for (int i = 1; i < resultSetMetaData.getColumnCount() + 1; i++) {
+ labels.add(resultSetMetaData.getColumnLabel(i));
}
}
}
- protected abstract Collection<String> getDatabaseNames(ConnectionSession connectionSession);
-
- protected abstract void preProcess(String databaseName, Map<String, Object> rows, Map<String, String> alias) throws SQLException;
+ protected void preProcess(final ShardingSphereDatabase database, final Map<String, Object> rows, final Map<String, String> alias) throws SQLException {
+ }
- protected abstract void postProcess();
+ protected void postProcess() {
+ }
- protected abstract void processMetaData(String databaseName, Consumer<ResultSet> callback) throws SQLException;
+ protected void processMetaData(final ShardingSphereDatabase database, final Consumer<ResultSet> callback) throws SQLException {
+ ResourceMetaData resourceMetaData = database.getResourceMetaData();
+ Optional<StorageUnit> storageUnit = resourceMetaData.getStorageUnits().values().stream().findFirst();
+ if (!storageUnit.isPresent()) {
+ return;
+ }
+ try (
+ Connection connection = storageUnit.get().getDataSource().getConnection();
+ PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+ for (int i = 0; i < parameters.size(); i++) {
+ preparedStatement.setObject(i + 1, parameters.get(i));
+ }
+ try (ResultSet resultSet = preparedStatement.executeQuery()) {
+ callback.accept(resultSet);
+ }
+ }
+ }
private MergedResult createMergedResult() {
List<MemoryQueryResultDataRow> resultDataRows = rows.stream().map(each -> new MemoryQueryResultDataRow(new LinkedList<>(each.values()))).collect(Collectors.toList());
@@ -127,64 +160,4 @@ public abstract class AbstractDatabaseMetaDataExecutor implements DatabaseAdminQ
.stream().map(each -> new RawQueryResultColumnMetaData("", each, each, Types.VARCHAR, "VARCHAR", 20, 0)).collect(Collectors.toList());
return new RawQueryResultMetaData(columns);
}
-
- /**
- * Default database meta data executor, execute sql directly in the database to obtain the result source data.
- */
- public static class DefaultDatabaseMetaDataExecutor extends AbstractDatabaseMetaDataExecutor {
-
- private final String sql;
-
- private final List<Object> parameters;
-
- public DefaultDatabaseMetaDataExecutor(final ContextManager contextManager, final String sql, final List<Object> parameters) {
- super(contextManager);
- this.sql = sql;
- this.parameters = parameters;
- }
-
- @Override
- protected Collection<String> getDatabaseNames(final ConnectionSession connectionSession) {
- ShardingSphereDatabase database = getContextManager().getMetaDataContexts().getMetaData().getDatabase(connectionSession.getCurrentDatabaseName());
- if (null != database && isAuthorized(database.getName(), connectionSession.getConnectionContext().getGrantee())
- && getContextManager().getDatabase(database.getName()).containsDataSource()) {
- return Collections.singleton(database.getName());
- }
- Collection<String> databaseNames = getContextManager().getAllDatabaseNames().stream()
- .filter(each -> isAuthorized(each, connectionSession.getConnectionContext().getGrantee()))
- .filter(each -> getContextManager().getDatabase(each).containsDataSource()).collect(Collectors.toList());
- return databaseNames.isEmpty() ? Collections.emptyList() : Collections.singletonList(databaseNames.iterator().next());
- }
-
- private boolean isAuthorized(final String databaseName, final Grantee grantee) {
- return new AuthorityChecker(getContextManager().getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class), grantee).isAuthorized(databaseName);
- }
-
- @Override
- protected void processMetaData(final String databaseName, final Consumer<ResultSet> callback) throws SQLException {
- ResourceMetaData resourceMetaData = getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData();
- Optional<StorageUnit> storageUnit = resourceMetaData.getStorageUnits().values().stream().findFirst();
- if (!storageUnit.isPresent()) {
- return;
- }
- try (
- Connection connection = storageUnit.get().getDataSource().getConnection();
- PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
- for (int i = 0; i < parameters.size(); i++) {
- preparedStatement.setObject(i + 1, parameters.get(i));
- }
- try (ResultSet resultSet = preparedStatement.executeQuery()) {
- callback.accept(resultSet);
- }
- }
- }
-
- @Override
- protected void preProcess(final String databaseName, final Map<String, Object> rows, final Map<String, String> alias) throws SQLException {
- }
-
- @Override
- protected void postProcess() {
- }
- }
}
diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutorTest.java
similarity index 79%
rename from proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
rename to proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutorTest.java
index 64c67b3cf16..8936bd35aae 100644
--- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetaDataExecutorTest.java
+++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DatabaseMetaDataExecutorTest.java
@@ -26,13 +26,8 @@ import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.metadata.database.schema.util.SystemSchemaUtils;
-import org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
-import org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsFactory;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.test.infra.fixture.jdbc.MockedDataSource;
import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
@@ -63,7 +58,7 @@ import static org.mockito.Mockito.when;
@ExtendWith(AutoMockExtension.class)
@StaticMockSettings(SystemSchemaUtils.class)
-class DefaultDatabaseMetaDataExecutorTest {
+class DatabaseMetaDataExecutorTest {
private final DatabaseType databaseType = TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
@@ -74,6 +69,7 @@ class DefaultDatabaseMetaDataExecutorTest {
@BeforeEach
void setUp() {
+ when(connectionSession.getCurrentDatabaseName()).thenReturn("auth_db");
when(connectionSession.getConnectionContext().getGrantee()).thenReturn(grantee);
}
@@ -84,8 +80,8 @@ class DefaultDatabaseMetaDataExecutorTest {
expectedResultSetMap.put("DEFAULT_CHARACTER_SET_NAME", "utf8mb4");
String sql = "SELECT SCHEMA_NAME AS sn, DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA";
ShardingSphereDatabase database = createDatabase(expectedResultSetMap);
- DefaultDatabaseMetaDataExecutor executor = new DefaultDatabaseMetaDataExecutor(mockContextManager(database), sql, Collections.emptyList());
- executor.execute(connectionSession, mock());
+ DatabaseMetaDataExecutor executor = new DatabaseMetaDataExecutor(sql, Collections.emptyList());
+ executor.execute(connectionSession, mockMetaData(database));
assertThat(executor.getRows().get(0).get("sn"), is("foo_ds"));
assertThat(executor.getRows().get(0).get("DEFAULT_CHARACTER_SET_NAME"), is("utf8mb4"));
}
@@ -94,8 +90,8 @@ class DefaultDatabaseMetaDataExecutorTest {
void assertExecuteWithDefaultValue() throws SQLException {
String sql = "SELECT COUNT(*) AS support_ndb FROM information_schema.ENGINES WHERE Engine = 'ndbcluster'";
ShardingSphereDatabase database = createDatabase(Collections.singletonMap("support_ndb", "0"));
- DefaultDatabaseMetaDataExecutor executor = new DefaultDatabaseMetaDataExecutor(mockContextManager(database), sql, Collections.emptyList());
- executor.execute(connectionSession, mock());
+ DatabaseMetaDataExecutor executor = new DatabaseMetaDataExecutor(sql, Collections.emptyList());
+ executor.execute(connectionSession, mockMetaData(database));
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
while (executor.getMergedResult().next()) {
assertThat(executor.getMergedResult().getValue(1, String.class), is("0"));
@@ -106,8 +102,8 @@ class DefaultDatabaseMetaDataExecutorTest {
void assertExecuteWithPreparedStatement() throws SQLException {
String sql = "SELECT COUNT(*) AS support_ndb FROM information_schema.ENGINES WHERE Engine = ?";
ShardingSphereDatabase database = createDatabase(Collections.singletonMap("support_ndb", "0"));
- DefaultDatabaseMetaDataExecutor executor = new DefaultDatabaseMetaDataExecutor(mockContextManager(database), sql, Collections.singletonList("ndbcluster"));
- executor.execute(connectionSession, mock());
+ DatabaseMetaDataExecutor executor = new DatabaseMetaDataExecutor(sql, Collections.singletonList("ndbcluster"));
+ executor.execute(connectionSession, mockMetaData(database));
assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
while (executor.getMergedResult().next()) {
assertThat(executor.getMergedResult().getValue(1, String.class), is("0"));
@@ -139,16 +135,10 @@ class DefaultDatabaseMetaDataExecutorTest {
return result;
}
- private ContextManager mockContextManager(final ShardingSphereDatabase database) {
+ private ShardingSphereMetaData mockMetaData(final ShardingSphereDatabase database) {
AuthorityRule authorityRule = mock(AuthorityRule.class);
when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new DatabasePermittedPrivileges(Collections.singleton("auth_db"))));
- ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
- ShardingSphereMetaData metaData = new ShardingSphereMetaData(
+ return new ShardingSphereMetaData(
Collections.singleton(database), mock(ResourceMetaData.class), new RuleMetaData(Collections.singleton(authorityRule)), new ConfigurationProperties(new Properties()));
- MetaDataContexts metaDataContexts = new MetaDataContexts(metaData, ShardingSphereStatisticsFactory.create(metaData, new ShardingSphereStatistics()));
- when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
- when(result.getDatabase("auth_db")).thenReturn(database);
- when(result.getAllDatabaseNames()).thenReturn(Collections.singleton("auth_db"));
- return result;
}
}
diff --git a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/select/SelectInformationSchemataExecutor.java b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/select/SelectInformationSchemataExecutor.java
index 324311e1f92..87486a0fdac 100644
--- a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/select/SelectInformationSchemataExecutor.java
+++ b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/executor/select/SelectInformationSchemataExecutor.java
@@ -19,11 +19,11 @@ package org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.sel
import org.apache.shardingsphere.authority.checker.AuthorityChecker;
import org.apache.shardingsphere.authority.rule.AuthorityRule;
+import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
-import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ColumnProjectionSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionSegment;
@@ -44,9 +44,9 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
- * Schemata query executor, used to query the schemata table.
+ * Select information schemata executor.
*/
-public final class SelectInformationSchemataExecutor extends DefaultDatabaseMetaDataExecutor {
+public final class SelectInformationSchemataExecutor extends DatabaseMetaDataExecutor {
public static final String SCHEMA_NAME = "SCHEMA_NAME";
@@ -69,32 +69,16 @@ public final class SelectInformationSchemataExecutor extends DefaultDatabaseMeta
private boolean queryDatabase;
public SelectInformationSchemataExecutor(final SelectStatement sqlStatement, final String sql, final List<Object> parameters) {
- super(ProxyContext.getInstance().getContextManager(), sql, parameters);
+ super(sql, parameters);
this.sqlStatement = sqlStatement;
}
@Override
- protected void postProcess() {
- removeDuplicatedRow();
- }
-
- private void removeDuplicatedRow() {
- if (queryDatabase) {
- Collection<Map<String, Object>> reservedRow = getRows().stream()
- .collect(Collectors.groupingBy(each -> Optional.ofNullable(each.get(schemaNameAlias)), Collectors.toCollection(LinkedList::new)))
- .values().stream().map(LinkedList::getFirst).collect(Collectors.toList());
- reservedRow.forEach(each -> getRows().removeIf(row -> !getRows().contains(each)));
- }
- }
-
- @Override
- protected Collection<String> getDatabaseNames(final ConnectionSession connectionSession) {
- ContextManager contextManager = ProxyContext.getInstance().getContextManager();
- AuthorityChecker authorityChecker = new AuthorityChecker(
- contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getSingleRule(AuthorityRule.class), connectionSession.getConnectionContext().getGrantee());
- Collection<String> databaseNames = contextManager.getAllDatabaseNames().stream().filter(authorityChecker::isAuthorized).collect(Collectors.toList());
- SCHEMA_WITHOUT_DATA_SOURCE.addAll(databaseNames.stream().filter(each -> !contextManager.getDatabase(each).containsDataSource()).collect(Collectors.toSet()));
- Collection<String> result = databaseNames.stream().filter(each -> contextManager.getDatabase(each).containsDataSource()).collect(Collectors.toList());
+ protected Collection<ShardingSphereDatabase> getDatabases(final ConnectionSession connectionSession, final ShardingSphereMetaData metaData) {
+ AuthorityChecker authorityChecker = new AuthorityChecker(metaData.getGlobalRuleMetaData().getSingleRule(AuthorityRule.class), connectionSession.getConnectionContext().getGrantee());
+ Collection<ShardingSphereDatabase> databases = metaData.getAllDatabases().stream().filter(each -> authorityChecker.isAuthorized(each.getName())).collect(Collectors.toList());
+ SCHEMA_WITHOUT_DATA_SOURCE.addAll(databases.stream().filter(each -> !each.containsDataSource()).map(ShardingSphereDatabase::getName).collect(Collectors.toSet()));
+ Collection<ShardingSphereDatabase> result = databases.stream().filter(ShardingSphereDatabase::containsDataSource).collect(Collectors.toList());
if (!SCHEMA_WITHOUT_DATA_SOURCE.isEmpty()) {
fillSchemasWithoutDataSource();
}
@@ -143,14 +127,13 @@ public final class SelectInformationSchemataExecutor extends DefaultDatabaseMeta
}
@Override
- protected void preProcess(final String databaseName, final Map<String, Object> rows, final Map<String, String> alias) throws SQLException {
- ResourceMetaData resourceMetaData = ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData();
- Collection<String> catalogs = getCatalogs(resourceMetaData);
+ protected void preProcess(final ShardingSphereDatabase database, final Map<String, Object> rows, final Map<String, String> alias) throws SQLException {
+ Collection<String> catalogs = getCatalogs(database.getResourceMetaData());
schemaNameAlias = alias.getOrDefault(SCHEMA_NAME, alias.getOrDefault(schemaNameAlias, schemaNameAlias));
String rowValue = rows.getOrDefault(schemaNameAlias, "").toString();
queryDatabase = !rowValue.isEmpty();
if (catalogs.contains(rowValue)) {
- rows.replace(schemaNameAlias, databaseName);
+ rows.replace(schemaNameAlias, database.getName());
} else {
rows.clear();
}
@@ -165,4 +148,18 @@ public final class SelectInformationSchemataExecutor extends DefaultDatabaseMeta
return Collections.singleton(connection.getCatalog());
}
}
+
+ @Override
+ protected void postProcess() {
+ removeDuplicatedRow();
+ }
+
+ private void removeDuplicatedRow() {
+ if (queryDatabase) {
+ Collection<Map<String, Object>> reservedRow = getRows().stream()
+ .collect(Collectors.groupingBy(each -> Optional.ofNullable(each.get(schemaNameAlias)), Collectors.toCollection(LinkedList::new)))
+ .values().stream().map(LinkedList::getFirst).collect(Collectors.toList());
+ reservedRow.forEach(each -> getRows().removeIf(row -> !getRows().contains(each)));
+ }
+ }
}
diff --git a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLInformationSchemaExecutorFactory.java b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLInformationSchemaExecutorFactory.java
index 831c21a5f85..74394194631 100644
--- a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLInformationSchemaExecutorFactory.java
+++ b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLInformationSchemaExecutorFactory.java
@@ -21,9 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.SelectInformationSchemataExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
@@ -57,7 +56,7 @@ public final class MySQLInformationSchemaExecutorFactory {
return Optional.of(new SelectInformationSchemataExecutor(sqlStatement, sql, parameters));
}
if (SystemSchemaManager.isSystemTable("mysql", "information_schema", tableName)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
return Optional.empty();
}
diff --git a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLMySQLSchemaExecutorFactory.java b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLMySQLSchemaExecutorFactory.java
index c742ffab245..2db30b33f48 100644
--- a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLMySQLSchemaExecutorFactory.java
+++ b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLMySQLSchemaExecutorFactory.java
@@ -21,9 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
@@ -51,7 +50,7 @@ public final class MySQLMySQLSchemaExecutorFactory {
}
String tableName = ((SimpleTableSegment) sqlStatement.getFrom().get()).getTableName().getIdentifier().getValue();
if (SystemSchemaManager.isSystemTable("mysql", "mysql", tableName)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
return Optional.empty();
}
diff --git a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLPerformanceSchemaExecutorFactory.java b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLPerformanceSchemaExecutorFactory.java
index 2427ab11f7f..15182cfbe33 100644
--- a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLPerformanceSchemaExecutorFactory.java
+++ b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLPerformanceSchemaExecutorFactory.java
@@ -21,9 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
@@ -51,7 +50,7 @@ public final class MySQLPerformanceSchemaExecutorFactory {
}
String tableName = ((SimpleTableSegment) sqlStatement.getFrom().get()).getTableName().getIdentifier().getValue();
if (SystemSchemaManager.isSystemTable("mysql", "performance_schema", tableName)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
return Optional.empty();
}
diff --git a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLSysSchemaExecutorFactory.java b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLSysSchemaExecutorFactory.java
index 380280acf0d..ca7f3561c8b 100644
--- a/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLSysSchemaExecutorFactory.java
+++ b/proxy/backend/dialect/mysql/src/main/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/factory/schema/MySQLSysSchemaExecutorFactory.java
@@ -21,9 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
@@ -51,7 +50,7 @@ public final class MySQLSysSchemaExecutorFactory {
}
String tableName = ((SimpleTableSegment) sqlStatement.getFrom().get()).getTableName().getIdentifier().getValue();
if (SystemSchemaManager.isSystemTable("mysql", "sys", tableName)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
return Optional.empty();
}
diff --git a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index a08030f7685..a7917e5cc26 100644
--- a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++ b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -32,24 +32,24 @@ import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLSetVariableAdminExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.MySQLSystemVariableQueryExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.NoResourceShowExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowConnectionIdExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowCreateDatabaseExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowCurrentDatabaseExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowCurrentUserExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowDatabasesExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowFunctionStatusExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcedureStatusExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowProcessListExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.ShowTablesExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowVersionExecutor;
-import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.UnicastResourceShowExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.UseDatabaseExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.NoResourceShowExecutor;
import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.SelectInformationSchemataExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowConnectionIdExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowCurrentDatabaseExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowCurrentUserExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.ShowVersionExecutor;
+import org.apache.shardingsphere.proxy.backend.mysql.handler.admin.executor.select.UnicastResourceShowExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dal.VariableSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ExpressionProjectionSegment;
import org.apache.shardingsphere.sql.parser.statement.core.segment.dml.item.ProjectionsSegment;
@@ -325,7 +325,7 @@ class MySQLAdminExecutorCreatorTest {
when(sqlStatementContext.getSqlStatement()).thenReturn(selectStatement);
Optional<DatabaseAdminExecutor> actual = new MySQLAdminExecutorCreator().create(sqlStatementContext, "SELECT ENGINE from ENGINES", "information_schema", Collections.emptyList());
assertTrue(actual.isPresent());
- assertThat(actual.get(), isA(DefaultDatabaseMetaDataExecutor.class));
+ assertThat(actual.get(), isA(DatabaseMetaDataExecutor.class));
}
@Test
diff --git a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
index 3322eecaccf..09f257545a7 100644
--- a/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
+++ b/proxy/backend/dialect/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreator.java
@@ -30,9 +30,8 @@ import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectS
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
import org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectDatCompatibilityExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentBoundInfo;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
@@ -82,7 +81,7 @@ public final class OpenGaussSystemTableQueryExecutorCreator {
return Optional.empty();
}
if (isSelectSystemTable(selectedSchemaTables)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
return Optional.empty();
}
diff --git a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
index 008e688015b..4a027fb2999 100644
--- a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
+++ b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreatorTest.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.infra.binder.context.segment.table.TablesContex
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectDatCompatibilityExecutor;
import org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectPasswordDeadlineExecutor;
@@ -85,7 +85,7 @@ class OpenGaussAdminExecutorCreatorTest {
SelectStatementContext selectStatementContext = mockSelectStatementContext("pg_catalog", "pg_type", null);
Optional<DatabaseAdminExecutor> actual = new OpenGaussAdminExecutorCreator().create(selectStatementContext, sql, "postgres", Collections.emptyList());
assertTrue(actual.isPresent());
- assertThat(actual.get(), isA(DefaultDatabaseMetaDataExecutor.class));
+ assertThat(actual.get(), isA(DatabaseMetaDataExecutor.class));
}
@Test
diff --git a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
index 8c5c016d3db..6377a2f87fc 100644
--- a/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
+++ b/proxy/backend/dialect/opengauss/src/test/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussSystemTableQueryExecutorCreatorTest.java
@@ -21,7 +21,7 @@ import org.apache.shardingsphere.infra.binder.context.segment.select.projection.
import org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import org.apache.shardingsphere.proxy.backend.opengauss.handler.admin.executor.OpenGaussSelectDatCompatibilityExecutor;
import org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.ColumnSegmentBoundInfo;
@@ -62,7 +62,7 @@ class OpenGaussSystemTableQueryExecutorCreatorTest {
assertTrue(creator.accept());
Optional<DatabaseAdminExecutor> actual = creator.create();
assertTrue(actual.isPresent());
- assertThat(actual.get(), isA(DefaultDatabaseMetaDataExecutor.class));
+ assertThat(actual.get(), isA(DatabaseMetaDataExecutor.class));
}
private SQLStatementContext mockSelectStatementContext(final String schemaName, final String tableName, final String columnName) {
diff --git a/proxy/backend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreator.java b/proxy/backend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreator.java
index 6e85e8e2702..ecf7b7af248 100644
--- a/proxy/backend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreator.java
+++ b/proxy/backend/dialect/postgresql/src/main/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreator.java
@@ -25,10 +25,9 @@ import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementCont
import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager;
import org.apache.shardingsphere.infra.metadata.statistics.collector.DialectDatabaseStatisticsCollector;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import org.apache.shardingsphere.proxy.backend.handler.admin.executor.AbstractDatabaseMetaDataExecutor.DefaultDatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutor;
import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseAdminExecutorCreator;
+import org.apache.shardingsphere.proxy.backend.handler.admin.executor.DatabaseMetaDataExecutor;
import org.apache.shardingsphere.proxy.backend.postgresql.handler.admin.executor.PostgreSQLResetVariableAdminExecutor;
import org.apache.shardingsphere.proxy.backend.postgresql.handler.admin.executor.PostgreSQLSetVariableAdminExecutor;
import org.apache.shardingsphere.proxy.backend.postgresql.handler.admin.executor.PostgreSQLShowVariableExecutor;
@@ -71,7 +70,7 @@ public final class PostgreSQLAdminExecutorCreator implements DatabaseAdminExecut
return Optional.empty();
}
if (isSelectSystemTable(selectedSchemaTables)) {
- return Optional.of(new DefaultDatabaseMetaDataExecutor(ProxyContext.getInstance().getContextManager(), sql, parameters));
+ return Optional.of(new DatabaseMetaDataExecutor(sql, parameters));
}
}
if (sqlStatement instanceof SetStatement) {