This is an automated email from the ASF dual-hosted git repository.

zhonghongsheng 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 ac036f54346 Split SelectInformationSchemataExecutorTest and 
DefaultDatabaseMetadataExecutorTest (#19747)
ac036f54346 is described below

commit ac036f54346c5e0b750792a235db024817bcbe27
Author: Liang Zhang <[email protected]>
AuthorDate: Mon Aug 1 17:54:10 2022 +0800

    Split SelectInformationSchemataExecutorTest and 
DefaultDatabaseMetadataExecutorTest (#19747)
---
 .../impl/ExistsSubqueryExpressionConverter.java    |  2 +-
 .../impl/AggregationProjectionConverter.java       |  2 +-
 .../executor/AbstractDatabaseMetadataExecutor.java | 15 ++---
 .../DefaultDatabaseMetadataExecutorTest.java}      | 78 +++-------------------
 .../SelectInformationSchemataExecutorTest.java     | 73 +++++++-------------
 5 files changed, 42 insertions(+), 128 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ExistsSubqueryExpressionConverter.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ExistsSubqueryExpressionConverter.java
index d4d5272b0f2..43165667b72 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ExistsSubqueryExpressionConverter.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/expression/impl/ExistsSubqueryExpressionConverter.java
@@ -48,7 +48,7 @@ public final class ExistsSubqueryExpressionConverter 
implements SQLSegmentConver
         if (null == expression) {
             return Optional.empty();
         }
-        SqlBasicCall sqlNode = new SqlBasicCall(SqlStdOperatorTable.EXISTS, 
+        SqlBasicCall sqlNode = new SqlBasicCall(SqlStdOperatorTable.EXISTS,
                 Collections.singletonList(new 
SelectStatementConverter().convertToSQLNode(expression.getSubquery().getSelect())),
 SqlParserPos.ZERO);
         return expression.isNot() ? Optional.of(new 
SqlBasicCall(SqlStdOperatorTable.NOT, Collections.singletonList(sqlNode), 
SqlParserPos.ZERO)) : Optional.of(sqlNode);
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/projection/impl/AggregationProjectionConverter.java
 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/projection/impl/AggregationProjectionConverter.java
index 5430c92f643..fb25bf52f87 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/projection/impl/AggregationProjectionConverter.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-federation/shardingsphere-infra-federation-optimizer/src/main/java/org/apache/shardingsphere/infra/federation/optimizer/converter/segment/projection/impl/AggregationProjectionConverter.java
@@ -78,7 +78,7 @@ public final class AggregationProjectionConverter implements 
SQLSegmentConverter
         }
         if (segment.getAlias().isPresent()) {
             return Optional.of(new SqlBasicCall(SqlStdOperatorTable.AS, 
Arrays.asList(new SqlBasicCall(convertOperator(segment.getType().name()),
-                            
Collections.singletonList(createParametersSqlNode(parameters)), 
SqlParserPos.ZERO, functionQuantifier).withExpanded(false),
+                    
Collections.singletonList(createParametersSqlNode(parameters)), 
SqlParserPos.ZERO, functionQuantifier).withExpanded(false),
                     
SqlIdentifier.star(Collections.singletonList(segment.getAlias().get()), 
SqlParserPos.ZERO, Collections.singletonList(SqlParserPos.ZERO))), 
SqlParserPos.ZERO));
         }
         return Optional.of((SqlBasicCall) new 
SqlBasicCall(convertOperator(segment.getType().name()),
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetadataExecutor.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetadataExecutor.java
index bff598f358d..a475da55db7 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetadataExecutor.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/AbstractDatabaseMetadataExecutor.java
@@ -18,6 +18,7 @@
 package org.apache.shardingsphere.proxy.backend.handler.admin.executor;
 
 import lombok.Getter;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
 import 
org.apache.shardingsphere.infra.executor.sql.execute.result.query.QueryResultMetaData;
@@ -176,16 +177,12 @@ public abstract class AbstractDatabaseMetadataExecutor 
implements DatabaseAdminQ
     /**
      * Default database metadata executor, execute sql directly in the 
database to obtain the result source data.
      */
+    @RequiredArgsConstructor
     @Slf4j
     public static class DefaultDatabaseMetadataExecutor extends 
AbstractDatabaseMetadataExecutor {
         
-        @Getter
         private final String sql;
         
-        public DefaultDatabaseMetadataExecutor(final String sql) {
-            this.sql = sql;
-        }
-        
         @Override
         protected void initDatabaseData(final String databaseName) {
         }
@@ -199,7 +196,7 @@ public abstract class AbstractDatabaseMetadataExecutor 
implements DatabaseAdminQ
         protected List<String> getDatabaseNames(final ConnectionSession 
connectionSession) {
             Optional<String> database = 
ProxyContext.getInstance().getAllDatabaseNames().stream().filter(each -> 
hasAuthority(each, connectionSession.getGrantee()))
                     
.filter(AbstractDatabaseMetadataExecutor::hasDataSource).findFirst();
-            return database.isPresent() ? 
Collections.singletonList(database.get()) : Collections.emptyList();
+            return 
database.map(Collections::singletonList).orElse(Collections.emptyList());
         }
         
         /**
@@ -214,9 +211,9 @@ public abstract class AbstractDatabaseMetadataExecutor 
implements DatabaseAdminQ
             Optional<Entry<String, DataSource>> dataSourceEntry = 
resource.getDataSources().entrySet().stream().findFirst();
             log.info("Actual SQL: {} ::: {}", 
dataSourceEntry.orElseThrow(ResourceNotExistedException::new).getKey(), sql);
             try (
-                    Connection conn = 
dataSourceEntry.get().getValue().getConnection();
-                    PreparedStatement ps = conn.prepareStatement(sql);
-                    ResultSet resultSet = ps.executeQuery()) {
+                    Connection connection = 
dataSourceEntry.get().getValue().getConnection();
+                    PreparedStatement preparedStatement = 
connection.prepareStatement(sql);
+                    ResultSet resultSet = preparedStatement.executeQuery()) {
                 callback.apply(resultSet);
             }
         }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
similarity index 57%
copy from 
shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
copy to 
shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
index d7834283d48..bfed8cca385 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/executor/DefaultDatabaseMetadataExecutorTest.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.proxy.backend.handler.admin.mysql.executor.information;
+package org.apache.shardingsphere.proxy.backend.handler.admin.executor;
 
 import 
org.apache.shardingsphere.authority.provider.database.model.privilege.DatabasePermittedPrivileges;
 import org.apache.shardingsphere.authority.rule.AuthorityRule;
@@ -30,13 +30,10 @@ import 
org.apache.shardingsphere.infra.metadata.user.Grantee;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
-import org.apache.shardingsphere.parser.rule.SQLParserRule;
-import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
 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.session.ConnectionSession;
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
-import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
 import org.apache.shardingsphere.test.mock.MockedDataSource;
 import org.junit.Before;
 import org.junit.Test;
@@ -48,28 +45,22 @@ import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
-public final class SelectInformationSchemataExecutorTest extends 
ProxyContextRestorer {
-    
-    private final SQLParserRule sqlParserRule = new SQLParserRule(new 
DefaultSQLParserRuleConfigurationBuilder().build());
+public final class DefaultDatabaseMetadataExecutorTest extends 
ProxyContextRestorer {
     
     private final Grantee grantee = new Grantee("root", "127.0.0.1");
     
@@ -84,7 +75,7 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     
     private ContextManager mockContextManager() {
         AuthorityRule authorityRule = mock(AuthorityRule.class);
-        when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(new HashSet<>(Arrays.asList("auth_db", 
"empty_db")))));
+        when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(Collections.singleton("auth_db"))));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
                 new ShardingSphereMetaData(new HashMap<>(), new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())),
@@ -94,53 +85,11 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     }
     
     @Test
-    public void assertExecuteWithResource() throws SQLException {
+    public void assertExecuteWithAlias() throws SQLException {
         Map<String, String> expectedResultSetMap = new HashMap<>(2, 1);
-        expectedResultSetMap.put("SCHEMA_NAME", "foo_ds");
-        expectedResultSetMap.put("DEFAULT_COLLATION_NAME", "utf8mb4");
-        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("auth_db",
 createDatabase(expectedResultSetMap));
-        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("no_auth_db",
 createDatabase("no_auth_db"));
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME, 
DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
-        executor.execute(connectionSession);
-        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
-        assertTrue(executor.getMergedResult().next());
-        assertThat(executor.getMergedResult().getValue(1, String.class), 
is("auth_db"));
-        assertThat(executor.getMergedResult().getValue(2, String.class), 
is("utf8mb4"));
-        assertFalse(executor.getMergedResult().next());
-    }
-    
-    @Test
-    public void assertExecuteWithoutResource() throws SQLException {
-        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("empty_db",
 createDatabase("empty_db"));
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, 
DEFAULT_COLLATION_NAME, DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
-        executor.execute(connectionSession);
-        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(4));
-        assertTrue(executor.getMergedResult().next());
-        assertThat(executor.getMergedResult().getValue(1, String.class), 
is("empty_db"));
-        assertThat(executor.getMergedResult().getValue(2, String.class), 
is(""));
-        assertThat(executor.getMergedResult().getValue(3, String.class), 
is(""));
-        assertThat(executor.getMergedResult().getValue(4, String.class), 
is(""));
-        assertFalse(executor.getMergedResult().next());
-    }
-    
-    @Test
-    public void assertExecuteWithoutDatabases() throws SQLException {
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, 
DEFAULT_COLLATION_NAME, DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
-        executor.execute(connectionSession);
-        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(0));
-    }
-    
-    @Test
-    public void assertSelectSchemaAliasExecute() throws SQLException {
-        Map<String, String> expectedResultSetMap = new HashMap<>();
         expectedResultSetMap.put("sn", "foo_ds");
         expectedResultSetMap.put("DEFAULT_CHARACTER_SET_NAME", "utf8mb4");
-        Map<String, ShardingSphereDatabase> databases = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases();
-        databases.put("auth_db", createDatabase(expectedResultSetMap));
-        databases.put("empty_db", createDatabase("empty_db"));
+        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("auth_db",
 createDatabase(expectedResultSetMap));
         String sql = "SELECT SCHEMA_NAME AS sn, DEFAULT_CHARACTER_SET_NAME 
FROM information_schema.SCHEMATA";
         DefaultDatabaseMetadataExecutor executor = new 
DefaultDatabaseMetadataExecutor(sql);
         executor.execute(connectionSession);
@@ -149,9 +98,8 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     }
     
     @Test
-    public void assertDefaultExecute() throws SQLException {
-        Map<String, ShardingSphereDatabase> databases = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases();
-        databases.put("auth_db", 
createDatabase(Collections.singletonMap("support_ndb", "0")));
+    public void assertExecuteWithDefaultValue() throws SQLException {
+        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("auth_db",
 createDatabase(Collections.singletonMap("support_ndb", "0")));
         String sql = "SELECT COUNT(*) AS support_ndb FROM 
information_schema.ENGINES WHERE Engine = 'ndbcluster'";
         DefaultDatabaseMetadataExecutor executor = new 
DefaultDatabaseMetadataExecutor(sql);
         executor.execute(connectionSession);
@@ -161,16 +109,10 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
         }
     }
     
-    private ShardingSphereDatabase createDatabase(final String databaseName, 
final ShardingSphereResource resource) {
-        return new ShardingSphereDatabase(databaseName, new 
MySQLDatabaseType(), resource, mock(ShardingSphereRuleMetaData.class), 
Collections.emptyMap());
-    }
-    
-    private ShardingSphereDatabase createDatabase(final String databaseName) {
-        return createDatabase(databaseName, new 
ShardingSphereResource(Collections.emptyMap()));
-    }
-    
     private ShardingSphereDatabase createDatabase(final Map<String, String> 
expectedResultSetMap) throws SQLException {
-        return createDatabase("auth_db", new 
ShardingSphereResource(Collections.singletonMap("foo_ds", new 
MockedDataSource(mockConnection(expectedResultSetMap)))));
+        return new ShardingSphereDatabase("auth_db", new MySQLDatabaseType(),
+                new ShardingSphereResource(Collections.singletonMap("foo_ds", 
new MockedDataSource(mockConnection(expectedResultSetMap)))),
+                mock(ShardingSphereRuleMetaData.class), 
Collections.emptyMap());
     }
     
     private Connection mockConnection(final Map<String, String> 
expectedResultSetMap) throws SQLException {
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
index d7834283d48..93e8f9e04d5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/admin/mysql/executor/information/SelectInformationSchemataExecutorTest.java
@@ -33,7 +33,6 @@ import 
org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.parser.rule.SQLParserRule;
 import 
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
 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.session.ConnectionSession;
 import org.apache.shardingsphere.proxy.backend.util.ProxyContextRestorer;
 import 
org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
@@ -48,10 +47,8 @@ import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -69,10 +66,12 @@ import static org.mockito.Mockito.when;
 @RunWith(MockitoJUnitRunner.class)
 public final class SelectInformationSchemataExecutorTest extends 
ProxyContextRestorer {
     
-    private final SQLParserRule sqlParserRule = new SQLParserRule(new 
DefaultSQLParserRuleConfigurationBuilder().build());
-    
     private final Grantee grantee = new Grantee("root", "127.0.0.1");
     
+    private final String sql = "SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME 
FROM information_schema.SCHEMATA";
+    
+    private SelectStatement statement;
+    
     @Mock
     private ConnectionSession connectionSession;
     
@@ -80,11 +79,12 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     public void setUp() {
         ProxyContext.init(mockContextManager());
         when(connectionSession.getGrantee()).thenReturn(grantee);
+        statement = (SelectStatement) new SQLParserRule(new 
DefaultSQLParserRuleConfigurationBuilder().build()).getSQLParserEngine("MySQL").parse(sql,
 false);
     }
     
     private ContextManager mockContextManager() {
         AuthorityRule authorityRule = mock(AuthorityRule.class);
-        when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(new HashSet<>(Arrays.asList("auth_db", 
"empty_db")))));
+        when(authorityRule.findPrivileges(grantee)).thenReturn(Optional.of(new 
DatabasePermittedPrivileges(Collections.singleton("auth_db"))));
         ContextManager result = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         MetaDataContexts metaDataContexts = new 
MetaDataContexts(mock(MetaDataPersistService.class),
                 new ShardingSphereMetaData(new HashMap<>(), new 
ShardingSphereRuleMetaData(Collections.singleton(authorityRule)), new 
ConfigurationProperties(new Properties())),
@@ -94,14 +94,21 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     }
     
     @Test
-    public void assertExecuteWithResource() throws SQLException {
+    public void assertExecuteWithUnauthorizedDatabase() throws SQLException {
+        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("no_auth_db",
 createDatabase("no_auth_db"));
+        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor(statement, sql);
+        executor.execute(connectionSession);
+        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(0));
+        assertFalse(executor.getMergedResult().next());
+    }
+    
+    @Test
+    public void assertExecuteWithAuthorizedDatabase() throws SQLException {
         Map<String, String> expectedResultSetMap = new HashMap<>(2, 1);
         expectedResultSetMap.put("SCHEMA_NAME", "foo_ds");
         expectedResultSetMap.put("DEFAULT_COLLATION_NAME", "utf8mb4");
         
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("auth_db",
 createDatabase(expectedResultSetMap));
-        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("no_auth_db",
 createDatabase("no_auth_db"));
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_COLLATION_NAME, 
DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
+        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor(statement, sql);
         executor.execute(connectionSession);
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
         assertTrue(executor.getMergedResult().next());
@@ -111,56 +118,24 @@ public final class SelectInformationSchemataExecutorTest 
extends ProxyContextRes
     }
     
     @Test
-    public void assertExecuteWithoutResource() throws SQLException {
-        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("empty_db",
 createDatabase("empty_db"));
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, 
DEFAULT_COLLATION_NAME, DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
+    public void assertExecuteWithAuthorizedDatabaseAndEmptyResource() throws 
SQLException {
+        
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases().put("auth_db",
 createDatabase("auth_db"));
+        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor(statement, sql);
         executor.execute(connectionSession);
-        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(4));
+        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(2));
         assertTrue(executor.getMergedResult().next());
-        assertThat(executor.getMergedResult().getValue(1, String.class), 
is("empty_db"));
+        assertThat(executor.getMergedResult().getValue(1, String.class), 
is("auth_db"));
         assertThat(executor.getMergedResult().getValue(2, String.class), 
is(""));
-        assertThat(executor.getMergedResult().getValue(3, String.class), 
is(""));
-        assertThat(executor.getMergedResult().getValue(4, String.class), 
is(""));
         assertFalse(executor.getMergedResult().next());
     }
     
     @Test
-    public void assertExecuteWithoutDatabases() throws SQLException {
-        String sql = "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, 
DEFAULT_COLLATION_NAME, DEFAULT_ENCRYPTION FROM information_schema.SCHEMATA";
-        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor((SelectStatement) 
sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false), sql);
+    public void assertExecuteWithoutDatabase() throws SQLException {
+        SelectInformationSchemataExecutor executor = new 
SelectInformationSchemataExecutor(statement, sql);
         executor.execute(connectionSession);
         assertThat(executor.getQueryResultMetaData().getColumnCount(), is(0));
     }
     
-    @Test
-    public void assertSelectSchemaAliasExecute() throws SQLException {
-        Map<String, String> expectedResultSetMap = new HashMap<>();
-        expectedResultSetMap.put("sn", "foo_ds");
-        expectedResultSetMap.put("DEFAULT_CHARACTER_SET_NAME", "utf8mb4");
-        Map<String, ShardingSphereDatabase> databases = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases();
-        databases.put("auth_db", createDatabase(expectedResultSetMap));
-        databases.put("empty_db", createDatabase("empty_db"));
-        String sql = "SELECT SCHEMA_NAME AS sn, DEFAULT_CHARACTER_SET_NAME 
FROM information_schema.SCHEMATA";
-        DefaultDatabaseMetadataExecutor executor = new 
DefaultDatabaseMetadataExecutor(sql);
-        executor.execute(connectionSession);
-        assertThat(executor.getRows().get(0).get("sn"), is("foo_ds"));
-        
assertThat(executor.getRows().get(0).get("DEFAULT_CHARACTER_SET_NAME"), 
is("utf8mb4"));
-    }
-    
-    @Test
-    public void assertDefaultExecute() throws SQLException {
-        Map<String, ShardingSphereDatabase> databases = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases();
-        databases.put("auth_db", 
createDatabase(Collections.singletonMap("support_ndb", "0")));
-        String sql = "SELECT COUNT(*) AS support_ndb FROM 
information_schema.ENGINES WHERE Engine = 'ndbcluster'";
-        DefaultDatabaseMetadataExecutor executor = new 
DefaultDatabaseMetadataExecutor(sql);
-        executor.execute(connectionSession);
-        assertThat(executor.getQueryResultMetaData().getColumnCount(), is(1));
-        while (executor.getMergedResult().next()) {
-            assertThat(executor.getMergedResult().getValue(1, String.class), 
is("0"));
-        }
-    }
-    
     private ShardingSphereDatabase createDatabase(final String databaseName, 
final ShardingSphereResource resource) {
         return new ShardingSphereDatabase(databaseName, new 
MySQLDatabaseType(), resource, mock(ShardingSphereRuleMetaData.class), 
Collections.emptyMap());
     }

Reply via email to