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

wuweijie 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 65067618490 Add DatabaseAwareRQLExecutor (#29793)
65067618490 is described below

commit 650676184903272eb0faf3c556ce3d7da6b9c83a
Author: Liang Zhang <zhangli...@apache.org>
AuthorDate: Sun Jan 21 00:08:09 2024 +0800

    Add DatabaseAwareRQLExecutor (#29793)
    
    * Add DatabaseAwareRQLExecutor
    
    * Add DatabaseAwareRQLExecutor
    
    * Add DatabaseAwareRQLExecutor
    
    * Add DatabaseAwareRQLExecutor
    
    * Add DatabaseAwareRQLExecutor
    
    * Add DatabaseAwareRQLExecutor
---
 .../query/ShowBroadcastTableRuleExecutorTest.java  | 10 ++++---
 .../handler/query/ShowEncryptRuleExecutorTest.java |  6 ++--
 .../handler/query/ShowMaskRuleExecutorTest.java    | 11 ++++----
 .../ShowReadwriteSplittingRuleExecutorTest.java    | 20 +++++++------
 .../ShowDefaultShadowAlgorithmExecutorTest.java    |  5 ++--
 .../query/ShowShadowAlgorithmsExecutorTest.java    |  5 ++--
 .../distsql/query/ShowShadowRuleExecutorTest.java  |  5 ++--
 .../query/ShowShadowTableRulesExecutorTest.java    |  5 ++--
 .../ShowDefaultShardingStrategyExecutorTest.java   |  8 ++++--
 .../query/ShowShardingAlgorithmExecutorTest.java   | 10 ++++---
 .../query/ShowShardingAuditorsExecutorTest.java    |  5 ++--
 .../ShowShardingKeyGeneratorExecutorTest.java      |  5 ++--
 .../query/ShowShardingTableNodesExecutorTest.java  | 15 ++++++----
 ...ShowShardingTableReferenceRuleExecutorTest.java | 10 ++++---
 .../query/ShowShardingTableRuleExecutorTest.java   |  5 ++--
 ...hardingTableRulesUsedAlgorithmExecutorTest.java |  7 +++--
 ...wShardingTableRulesUsedAuditorExecutorTest.java |  5 ++--
 ...dingTableRulesUsedKeyGeneratorExecutorTest.java |  5 ++--
 .../ShowUnusedShardingAlgorithmsExecutorTest.java  |  5 ++--
 .../ShowUnusedShardingAuditorsExecutorTest.java    |  5 ++--
 ...ShowUnusedShardingKeyGeneratorExecutorTest.java |  5 ++--
 .../distsql/handler/type/rql/RQLExecutor.java      |  4 +--
 .../DatabaseAwareRQLExecutor.java}                 | 33 ++++++----------------
 .../handler/type/rql/count/CountRQLExecutor.java   | 10 +++++--
 .../type/rql/rule/RuleAwareRQLExecutor.java        | 10 +++++--
 ...wDefaultSingleTableStorageUnitExecutorTest.java |  5 ++--
 .../handler/query/ShowSingleTableExecutorTest.java |  8 ++++--
 .../handler/distsql/rql/RQLBackendHandler.java     |  6 +++-
 .../distsql/rql/type/ShowLogicalTableExecutor.java | 10 +++++--
 .../rql/type/ShowRulesUsedStorageUnitExecutor.java | 10 +++++--
 .../distsql/rql/type/ShowStorageUnitExecutor.java  | 10 +++++--
 .../rql/type/ShowLogicalTableExecutorTest.java     |  8 +++---
 .../type/ShowRulesUsedStorageUnitExecutorTest.java | 11 ++++----
 .../rql/type/ShowStorageUnitExecutorTest.java      |  8 ++++--
 34 files changed, 166 insertions(+), 124 deletions(-)

diff --git 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/query/ShowBroadcastTableRuleExecutorTest.java
 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/query/ShowBroadcastTableRuleExecutorTest.java
index 06b3cb2263e..fe8d21b6c0c 100644
--- 
a/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/query/ShowBroadcastTableRuleExecutorTest.java
+++ 
b/features/broadcast/distsql/handler/src/test/java/org/apache/shardingsphere/broadcast/distsql/handler/query/ShowBroadcastTableRuleExecutorTest.java
@@ -42,9 +42,9 @@ class ShowBroadcastTableRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        ShardingSphereDatabase database = mockDatabase();
-        RQLExecutor<ShowBroadcastTableRulesStatement> executor = new 
ShowBroadcastTableRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowBroadcastTableRulesStatement.class));
+        ShowBroadcastTableRuleExecutor executor = new 
ShowBroadcastTableRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowBroadcastTableRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -55,7 +55,9 @@ class ShowBroadcastTableRuleExecutorTest {
     void assertGetRowDataWithoutBroadcastRule() {
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         
when(database.getRuleMetaData().findSingleRule(BroadcastRule.class)).thenReturn(Optional.empty());
-        Collection<LocalDataQueryResultRow> actual = new 
ShowBroadcastTableRuleExecutor().getRows(database, 
mock(ShowBroadcastTableRulesStatement.class));
+        ShowBroadcastTableRuleExecutor executor = new 
ShowBroadcastTableRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowBroadcastTableRulesStatement.class));
         assertTrue(actual.isEmpty());
     }
     
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
index 564376ff8bd..b6130c6d80f 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/query/ShowEncryptRuleExecutorTest.java
@@ -46,9 +46,9 @@ class ShowEncryptRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        ShardingSphereDatabase database = mockDatabase();
-        RQLExecutor<ShowEncryptRulesStatement> executor = new 
ShowEncryptRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowEncryptRulesStatement.class));
+        ShowEncryptRuleExecutor executor = new ShowEncryptRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowEncryptRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRuleExecutorTest.java
 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRuleExecutorTest.java
index 9a55f7bd09e..005f9dd89d4 100644
--- 
a/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRuleExecutorTest.java
+++ 
b/features/mask/distsql/handler/src/test/java/org/apache/shardingsphere/mask/distsql/handler/query/ShowMaskRuleExecutorTest.java
@@ -46,9 +46,9 @@ class ShowMaskRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        ShardingSphereDatabase database = mockDatabase();
-        RQLExecutor<ShowMaskRulesStatement> executor = new 
ShowMaskRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowMaskRulesStatement.class));
+        ShowMaskRuleExecutor executor = new ShowMaskRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowMaskRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -62,8 +62,9 @@ class ShowMaskRuleExecutorTest {
     void assertGetRowDataWithoutMaskRule() {
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         
when(database.getRuleMetaData().findSingleRule(MaskRule.class)).thenReturn(Optional.empty());
-        RQLExecutor<ShowMaskRulesStatement> executor = new 
ShowMaskRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowMaskRulesStatement.class));
+        ShowMaskRuleExecutor executor = new ShowMaskRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowMaskRulesStatement.class));
         assertTrue(actual.isEmpty());
     }
     
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
index 66386cb51c8..30fcd755e5a 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowReadwriteSplittingRuleExecutorTest.java
@@ -51,8 +51,9 @@ class ShowReadwriteSplittingRuleExecutorTest {
     void assertGetEmptyRule() {
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.emptyList()));
-        RQLExecutor<ShowReadwriteSplittingRulesStatement> executor = new 
ShowReadwriteSplittingRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowReadwriteSplittingRulesStatement.class));
+        ShowReadwriteSplittingRuleExecutor executor = new 
ShowReadwriteSplittingRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowReadwriteSplittingRulesStatement.class));
         assertTrue(actual.isEmpty());
     }
     
@@ -63,8 +64,9 @@ class ShowReadwriteSplittingRuleExecutorTest {
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(rule.getExportData()).thenReturn(createExportedData());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowReadwriteSplittingRulesStatement> executor = new 
ShowReadwriteSplittingRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowReadwriteSplittingRulesStatement.class));
+        ShowReadwriteSplittingRuleExecutor executor = new 
ShowReadwriteSplittingRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowReadwriteSplittingRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -83,8 +85,9 @@ class ShowReadwriteSplittingRuleExecutorTest {
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(rule.getExportData()).thenReturn(createExportedData());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowReadwriteSplittingRulesStatement> executor = new 
ShowReadwriteSplittingRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, new 
ShowReadwriteSplittingRulesStatement("readwrite_ds", null));
+        ShowReadwriteSplittingRuleExecutor executor = new 
ShowReadwriteSplittingRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowReadwriteSplittingRulesStatement("readwrite_ds", null));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -117,8 +120,9 @@ class ShowReadwriteSplittingRuleExecutorTest {
         
when(rule.getConfiguration()).thenReturn(createRuleConfigurationWithoutLoadBalancer());
         when(rule.getExportData()).thenReturn(createExportedData());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowReadwriteSplittingRulesStatement> executor = new 
ShowReadwriteSplittingRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowReadwriteSplittingRulesStatement.class));
+        ShowReadwriteSplittingRuleExecutor executor = new 
ShowReadwriteSplittingRuleExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowReadwriteSplittingRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowDefaultShadowAlgorithmExecutorTest.java
 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowDefaultShadowAlgorithmExecutorTest.java
index a16edcc03c0..3f2d770a2ee 100644
--- 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowDefaultShadowAlgorithmExecutorTest.java
+++ 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowDefaultShadowAlgorithmExecutorTest.java
@@ -45,8 +45,9 @@ class ShowDefaultShadowAlgorithmExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowDefaultShadowAlgorithmStatement> executor = new 
ShowDefaultShadowAlgorithmExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowDefaultShadowAlgorithmStatement.class));
+        ShowDefaultShadowAlgorithmExecutor executor = new 
ShowDefaultShadowAlgorithmExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowDefaultShadowAlgorithmStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowAlgorithmsExecutorTest.java
 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowAlgorithmsExecutorTest.java
index 76fee3b192e..86a738d9332 100644
--- 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowAlgorithmsExecutorTest.java
+++ 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowAlgorithmsExecutorTest.java
@@ -45,8 +45,9 @@ class ShowShadowAlgorithmsExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShadowAlgorithmsStatement> executor = new 
ShowShadowAlgorithmsExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), mock(ShowShadowAlgorithmsStatement.class));
+        ShowShadowAlgorithmsExecutor executor = new 
ShowShadowAlgorithmsExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShadowAlgorithmsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowRuleExecutorTest.java
 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowRuleExecutorTest.java
index 43a1f0db3b9..96502b81121 100644
--- 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowRuleExecutorTest.java
+++ 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowRuleExecutorTest.java
@@ -45,8 +45,9 @@ class ShowShadowRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShadowRulesStatement> executor = new 
ShowShadowRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), mock(ShowShadowRulesStatement.class));
+        ShowShadowRuleExecutor executor = new ShowShadowRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShadowRulesStatement.class));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowTableRulesExecutorTest.java
 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowTableRulesExecutorTest.java
index 82f07d87c4c..af8b9be23b5 100644
--- 
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowTableRulesExecutorTest.java
+++ 
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/query/ShowShadowTableRulesExecutorTest.java
@@ -46,8 +46,9 @@ class ShowShadowTableRulesExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShadowTableRulesStatement> executor = new 
ShowShadowTableRulesExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), mock(ShowShadowTableRulesStatement.class));
+        ShowShadowTableRulesExecutor executor = new 
ShowShadowTableRulesExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShadowTableRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowDefaultShardingStrategyExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowDefaultShardingStrategyExecutorTest.java
index ab295757ede..d0905c4da9c 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowDefaultShardingStrategyExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowDefaultShardingStrategyExecutorTest.java
@@ -52,8 +52,9 @@ class ShowDefaultShardingStrategyExecutorTest {
         ShardingRule rule1 = mock(ShardingRule.class);
         when(rule1.getConfiguration()).thenReturn(createRuleConfiguration1());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule1)));
-        RQLExecutor<ShowDefaultShardingStrategyStatement> executor = new 
ShowDefaultShardingStrategyExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowDefaultShardingStrategyStatement.class));
+        ShowDefaultShardingStrategyExecutor executor = new 
ShowDefaultShardingStrategyExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowDefaultShardingStrategyStatement.class));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -74,7 +75,8 @@ class ShowDefaultShardingStrategyExecutorTest {
         when(rule2.getConfiguration()).thenReturn(createRuleConfiguration2());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule2)));
         executor = new ShowDefaultShardingStrategyExecutor();
-        actual = executor.getRows(database, 
mock(ShowDefaultShardingStrategyStatement.class));
+        executor.setDatabase(database);
+        actual = 
executor.getRows(mock(ShowDefaultShardingStrategyStatement.class));
         assertThat(actual.size(), is(2));
         iterator = actual.iterator();
         row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAlgorithmExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAlgorithmExecutorTest.java
index e36a0d5c8db..ad765e84e4c 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAlgorithmExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAlgorithmExecutorTest.java
@@ -45,8 +45,9 @@ class ShowShardingAlgorithmExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShardingAlgorithmsStatement> executor = new 
ShowShardingAlgorithmExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), mock(ShowShardingAlgorithmsStatement.class));
+        ShowShardingAlgorithmExecutor executor = new 
ShowShardingAlgorithmExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingAlgorithmsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -73,8 +74,9 @@ class ShowShardingAlgorithmExecutorTest {
     void assertGetRowDataWithoutShardingRule() {
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.emptyList()));
-        RQLExecutor<ShowShardingAlgorithmsStatement> executor = new 
ShowShardingAlgorithmExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowShardingAlgorithmsStatement.class));
+        ShowShardingAlgorithmExecutor executor = new 
ShowShardingAlgorithmExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingAlgorithmsStatement.class));
         assertTrue(actual.isEmpty());
     }
     
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAuditorsExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAuditorsExecutorTest.java
index 49c6945e4f1..d943a0b87a6 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAuditorsExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingAuditorsExecutorTest.java
@@ -48,8 +48,9 @@ class ShowShardingAuditorsExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowShardingAuditorsStatement> executor = new 
ShowShardingAuditorsExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowShardingAuditorsStatement.class));
+        ShowShardingAuditorsExecutor executor = new 
ShowShardingAuditorsExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingAuditorsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingKeyGeneratorExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingKeyGeneratorExecutorTest.java
index 8e62015d041..8deb489a93f 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingKeyGeneratorExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingKeyGeneratorExecutorTest.java
@@ -49,8 +49,9 @@ class ShowShardingKeyGeneratorExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowShardingKeyGeneratorsStatement> executor = new 
ShowShardingKeyGeneratorExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowShardingKeyGeneratorsStatement.class));
+        ShowShardingKeyGeneratorExecutor executor = new 
ShowShardingKeyGeneratorExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingKeyGeneratorsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableNodesExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableNodesExecutorTest.java
index e65efb267b4..05c645bff4e 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableNodesExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableNodesExecutorTest.java
@@ -72,8 +72,9 @@ class ShowShardingTableNodesExecutorTest {
     }
     
     private void assertOrder(final ShardingSphereDatabase database) {
-        RQLExecutor<ShowShardingTableNodesStatement> executor = new 
ShowShardingTableNodesExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, new ShowShardingTableNodesStatement("t_order", 
null));
+        ShowShardingTableNodesExecutor executor = new 
ShowShardingTableNodesExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowShardingTableNodesStatement("t_order", null));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -82,8 +83,9 @@ class ShowShardingTableNodesExecutorTest {
     }
     
     private void assertOrderItem(final ShardingSphereDatabase database) {
-        RQLExecutor<ShowShardingTableNodesStatement> executor = new 
ShowShardingTableNodesExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, new ShowShardingTableNodesStatement("t_order_item", 
null));
+        ShowShardingTableNodesExecutor executor = new 
ShowShardingTableNodesExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowShardingTableNodesStatement("t_order_item", null));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -92,8 +94,9 @@ class ShowShardingTableNodesExecutorTest {
     }
     
     private void assertAll(final ShardingSphereDatabase database) {
-        RQLExecutor<ShowShardingTableNodesStatement> executor = new 
ShowShardingTableNodesExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, new ShowShardingTableNodesStatement(null, null));
+        ShowShardingTableNodesExecutor executor = new 
ShowShardingTableNodesExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowShardingTableNodesStatement(null, null));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableReferenceRuleExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableReferenceRuleExecutorTest.java
index 158321dd701..a94cb62c40b 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableReferenceRuleExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableReferenceRuleExecutorTest.java
@@ -43,8 +43,9 @@ class ShowShardingTableReferenceRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShardingTableReferenceRulesStatement> executor = new 
ShowShardingTableReferenceRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowShardingTableReferenceRulesStatement.class));
+        ShowShardingTableReferenceRuleExecutor executor = new 
ShowShardingTableReferenceRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingTableReferenceRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -54,8 +55,9 @@ class ShowShardingTableReferenceRuleExecutorTest {
     
     @Test
     void assertGetRowDataWithSpecifiedRuleName() {
-        RQLExecutor<ShowShardingTableReferenceRulesStatement> executor = new 
ShowShardingTableReferenceRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), new 
ShowShardingTableReferenceRulesStatement("foo", null));
+        ShowShardingTableReferenceRuleExecutor executor = new 
ShowShardingTableReferenceRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowShardingTableReferenceRulesStatement("foo", null));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRuleExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRuleExecutorTest.java
index 2a3acf678e9..1de3fd1c61d 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRuleExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRuleExecutorTest.java
@@ -50,8 +50,9 @@ class ShowShardingTableRuleExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowShardingTableRulesStatement> executor = new 
ShowShardingTableRuleExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), mock(ShowShardingTableRulesStatement.class));
+        ShowShardingTableRuleExecutor executor = new 
ShowShardingTableRuleExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowShardingTableRulesStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
index 42e96cd7edb..0f65b111692 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAlgorithmExecutorTest.java
@@ -55,17 +55,18 @@ class ShowShardingTableRulesUsedAlgorithmExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowShardingTableRulesUsedAlgorithmStatement> executor = 
new ShowShardingTableRulesUsedAlgorithmExecutor();
+        ShowShardingTableRulesUsedAlgorithmExecutor executor = new 
ShowShardingTableRulesUsedAlgorithmExecutor();
+        executor.setDatabase(database);
         ShowShardingTableRulesUsedAlgorithmStatement statement = 
mock(ShowShardingTableRulesUsedAlgorithmStatement.class);
         
when(statement.getShardingAlgorithmName()).thenReturn(Optional.of("t_order_inline"));
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, statement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(statement);
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
         assertThat(row.getCell(1), is("table"));
         assertThat(row.getCell(2), is("t_order"));
         
when(statement.getShardingAlgorithmName()).thenReturn(Optional.of("auto_mod"));
-        actual = executor.getRows(database, statement);
+        actual = executor.getRows(statement);
         assertThat(actual.size(), is(1));
         iterator = actual.iterator();
         row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAuditorExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAuditorExecutorTest.java
index e4ee52f2e61..71b6589b6ab 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAuditorExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedAuditorExecutorTest.java
@@ -55,10 +55,11 @@ class ShowShardingTableRulesUsedAuditorExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowShardingTableRulesUsedAuditorStatement> executor = new 
ShowShardingTableRulesUsedAuditorExecutor();
+        ShowShardingTableRulesUsedAuditorExecutor executor = new 
ShowShardingTableRulesUsedAuditorExecutor();
+        executor.setDatabase(database);
         ShowShardingTableRulesUsedAuditorStatement statement = 
mock(ShowShardingTableRulesUsedAuditorStatement.class);
         
when(statement.getAuditorName()).thenReturn(Optional.of("shardingKeyAudit"));
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, statement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(statement);
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedKeyGeneratorExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedKeyGeneratorExecutorTest.java
index ce3538a39e0..bac59b5bc53 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedKeyGeneratorExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowShardingTableRulesUsedKeyGeneratorExecutorTest.java
@@ -55,10 +55,11 @@ class ShowShardingTableRulesUsedKeyGeneratorExecutorTest {
         ShardingRule rule = mock(ShardingRule.class);
         when(rule.getConfiguration()).thenReturn(createRuleConfiguration());
         when(database.getRuleMetaData()).thenReturn(new 
RuleMetaData(Collections.singleton(rule)));
-        RQLExecutor<ShowShardingTableRulesUsedKeyGeneratorStatement> executor 
= new ShowShardingTableRulesUsedKeyGeneratorExecutor();
+        ShowShardingTableRulesUsedKeyGeneratorExecutor executor = new 
ShowShardingTableRulesUsedKeyGeneratorExecutor();
+        executor.setDatabase(database);
         ShowShardingTableRulesUsedKeyGeneratorStatement statement = 
mock(ShowShardingTableRulesUsedKeyGeneratorStatement.class);
         
when(statement.getKeyGeneratorName()).thenReturn(Optional.of("snowflake"));
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, statement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(statement);
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAlgorithmsExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAlgorithmsExecutorTest.java
index 739a81946b3..4287bd213ca 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAlgorithmsExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAlgorithmsExecutorTest.java
@@ -46,8 +46,9 @@ class ShowUnusedShardingAlgorithmsExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowUnusedShardingAlgorithmsStatement> executor = new 
ShowUnusedShardingAlgorithmsExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowUnusedShardingAlgorithmsStatement.class));
+        ShowUnusedShardingAlgorithmsExecutor executor = new 
ShowUnusedShardingAlgorithmsExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowUnusedShardingAlgorithmsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAuditorsExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAuditorsExecutorTest.java
index c69400131cc..d290aac9c3a 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAuditorsExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingAuditorsExecutorTest.java
@@ -47,8 +47,9 @@ class ShowUnusedShardingAuditorsExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowUnusedShardingAuditorsStatement> executor = new 
ShowUnusedShardingAuditorsExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowUnusedShardingAuditorsStatement.class));
+        ShowUnusedShardingAuditorsExecutor executor = new 
ShowUnusedShardingAuditorsExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowUnusedShardingAuditorsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingKeyGeneratorExecutorTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingKeyGeneratorExecutorTest.java
index 0cbb3469157..325f494a62d 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingKeyGeneratorExecutorTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/query/ShowUnusedShardingKeyGeneratorExecutorTest.java
@@ -45,8 +45,9 @@ class ShowUnusedShardingKeyGeneratorExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowUnusedShardingKeyGeneratorsStatement> executor = new 
ShowUnusedShardingKeyGeneratorExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowUnusedShardingKeyGeneratorsStatement.class));
+        ShowUnusedShardingKeyGeneratorExecutor executor = new 
ShowUnusedShardingKeyGeneratorExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowUnusedShardingKeyGeneratorsStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
index 0025275109b..234069442c7 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.distsql.handler.type.rql;
 
 import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
 
@@ -43,11 +42,10 @@ public interface RQLExecutor<T extends RQLStatement> 
extends TypedSPI {
     /**
      * Get query result rows.
      * 
-     * @param database database
      * @param sqlStatement SQL statement
      * @return query result rows
      */
-    Collection<LocalDataQueryResultRow> getRows(ShardingSphereDatabase 
database, T sqlStatement);
+    Collection<LocalDataQueryResultRow> getRows(T sqlStatement);
     
     @Override
     Class<T> getType();
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/aware/DatabaseAwareRQLExecutor.java
similarity index 55%
copy from 
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
copy to 
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/aware/DatabaseAwareRQLExecutor.java
index 0025275109b..3a4d7ec596a 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/RQLExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/aware/DatabaseAwareRQLExecutor.java
@@ -15,40 +15,23 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.distsql.handler.type.rql;
+package org.apache.shardingsphere.distsql.handler.type.rql.aware;
 
+import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
 import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
-import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import org.apache.shardingsphere.infra.spi.annotation.SingletonSPI;
-import org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
-
-import java.util.Collection;
 
 /**
- * RQL executor.
+ * Database aware RQL executor.
  * 
- * @param <T> type of RQL statement
+ * @param <T> type of SQL statement
  */
-@SingletonSPI
-public interface RQLExecutor<T extends RQLStatement> extends TypedSPI {
+public interface DatabaseAwareRQLExecutor<T extends RQLStatement> extends 
RQLExecutor<T> {
     
     /**
-     * Get column names.
-     * 
-     * @return column names
-     */
-    Collection<String> getColumnNames();
-    
-    /**
-     * Get query result rows.
-     * 
+     * Set database.
+     *
      * @param database database
-     * @param sqlStatement SQL statement
-     * @return query result rows
      */
-    Collection<LocalDataQueryResultRow> getRows(ShardingSphereDatabase 
database, T sqlStatement);
-    
-    @Override
-    Class<T> getType();
+    void setDatabase(ShardingSphereDatabase database);
 }
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/count/CountRQLExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/count/CountRQLExecutor.java
index 52663fc3ce2..8b8c8632e85 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/count/CountRQLExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/count/CountRQLExecutor.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.distsql.handler.type.rql.count;
 
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import lombok.Setter;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import org.apache.shardingsphere.distsql.statement.rql.show.CountRuleStatement;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -32,7 +33,10 @@ import java.util.Optional;
 /**
  * Count RQL executor.
  */
-public final class CountRQLExecutor implements RQLExecutor<CountRuleStatement> 
{
+@Setter
+public final class CountRQLExecutor implements 
DatabaseAwareRQLExecutor<CountRuleStatement> {
+    
+    private ShardingSphereDatabase database;
     
     @Override
     public Collection<String> getColumnNames() {
@@ -41,7 +45,7 @@ public final class CountRQLExecutor implements 
RQLExecutor<CountRuleStatement> {
     
     @SuppressWarnings({"unchecked", "rawtypes"})
     @Override
-    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final CountRuleStatement sqlStatement) {
+    public Collection<LocalDataQueryResultRow> getRows(final 
CountRuleStatement sqlStatement) {
         Optional<CountResultRowBuilder> rowBuilder = 
TypedSPILoader.findService(CountResultRowBuilder.class, sqlStatement.getType());
         if (!rowBuilder.isPresent()) {
             return Collections.emptyList();
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/rule/RuleAwareRQLExecutor.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/rule/RuleAwareRQLExecutor.java
index 3eb764f07c4..93285442754 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/rule/RuleAwareRQLExecutor.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/rql/rule/RuleAwareRQLExecutor.java
@@ -18,7 +18,8 @@
 package org.apache.shardingsphere.distsql.handler.type.rql.rule;
 
 import lombok.RequiredArgsConstructor;
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import lombok.Setter;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
@@ -34,12 +35,15 @@ import java.util.Collections;
  * @param <R> type of ShardingSphere rule
  */
 @RequiredArgsConstructor
-public abstract class RuleAwareRQLExecutor<T extends RQLStatement, R extends 
ShardingSphereRule> implements RQLExecutor<T> {
+@Setter
+public abstract class RuleAwareRQLExecutor<T extends RQLStatement, R extends 
ShardingSphereRule> implements DatabaseAwareRQLExecutor<T> {
     
     private final Class<R> ruleClass;
     
+    private ShardingSphereDatabase database;
+    
     @Override
-    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final T sqlStatement) {
+    public Collection<LocalDataQueryResultRow> getRows(final T sqlStatement) {
         return 
database.getRuleMetaData().findSingleRule(ruleClass).map(optional -> 
getRows(database, sqlStatement, optional)).orElse(Collections.emptyList());
     }
     
diff --git 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
index 91e75bc2e5b..eaa798c39b8 100644
--- 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
+++ 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowDefaultSingleTableStorageUnitExecutorTest.java
@@ -39,8 +39,9 @@ class ShowDefaultSingleTableStorageUnitExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowDefaultSingleTableStorageUnitStatement> executor = new 
ShowDefaultSingleTableStorageUnitExecutor();
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mockDatabase(), 
mock(ShowDefaultSingleTableStorageUnitStatement.class));
+        ShowDefaultSingleTableStorageUnitExecutor executor = new 
ShowDefaultSingleTableStorageUnitExecutor();
+        executor.setDatabase(mockDatabase());
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowDefaultSingleTableStorageUnitStatement.class));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> rowData = actual.iterator();
         String defaultSingleTableStorageUnit = (String) 
rowData.next().getCell(1);
diff --git 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
index 22f908d97fe..8ada3f3970d 100644
--- 
a/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
+++ 
b/kernel/single/distsql/handler/src/test/java/org/apache/shardingsphere/single/distsql/handler/query/ShowSingleTableExecutorTest.java
@@ -61,7 +61,9 @@ class ShowSingleTableExecutorTest {
     
     @Test
     void assertGetRowData() {
-        Collection<LocalDataQueryResultRow> actual = new 
ShowSingleTableExecutor().getRows(database, 
mock(ShowSingleTableStatement.class));
+        ShowSingleTableExecutor executor = new ShowSingleTableExecutor();
+        executor.setDatabase(database);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowSingleTableStatement.class));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -74,8 +76,10 @@ class ShowSingleTableExecutorTest {
     
     @Test
     void assertGetSingleTableWithLikeLiteral() {
+        ShowSingleTableExecutor executor = new ShowSingleTableExecutor();
+        executor.setDatabase(database);
         ShowSingleTableStatement statement = new 
ShowSingleTableStatement(null, "%item", null);
-        Collection<LocalDataQueryResultRow> actual = new 
ShowSingleTableExecutor().getRows(database, statement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(statement);
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
index 1071b959281..39d516ae01e 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/RQLBackendHandler.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.rql;
 
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import org.apache.shardingsphere.distsql.statement.rql.RQLStatement;
 import org.apache.shardingsphere.infra.merge.result.MergedResult;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
@@ -60,7 +61,10 @@ public final class RQLBackendHandler implements 
DistSQLBackendHandler {
     public ResponseHeader execute() throws SQLException {
         RQLExecutor executor = TypedSPILoader.getService(RQLExecutor.class, 
sqlStatement.getClass());
         queryHeaders = createQueryHeader(executor.getColumnNames());
-        mergedResult = 
createMergedResult(executor.getRows(ProxyContext.getInstance().getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement,
 connectionSession)), sqlStatement));
+        if (executor instanceof DatabaseAwareRQLExecutor) {
+            ((DatabaseAwareRQLExecutor<?>) 
executor).setDatabase(ProxyContext.getInstance().getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement,
 connectionSession)));
+        }
+        mergedResult = createMergedResult(executor.getRows(sqlStatement));
         return new QueryResponseHeader(queryHeaders);
     }
     
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
index 7390969e252..e6f4de5af3d 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutor.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
 
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import lombok.Setter;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import 
org.apache.shardingsphere.distsql.statement.rql.show.ShowLogicalTablesStatement;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.DialectDatabaseMetaData;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
@@ -33,7 +34,10 @@ import java.util.stream.Collectors;
 /**
  * Show logical table executor.
  */
-public final class ShowLogicalTableExecutor implements 
RQLExecutor<ShowLogicalTablesStatement> {
+@Setter
+public final class ShowLogicalTableExecutor implements 
DatabaseAwareRQLExecutor<ShowLogicalTablesStatement> {
+    
+    private ShardingSphereDatabase database;
     
     @Override
     public Collection<String> getColumnNames() {
@@ -41,7 +45,7 @@ public final class ShowLogicalTableExecutor implements 
RQLExecutor<ShowLogicalTa
     }
     
     @Override
-    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final ShowLogicalTablesStatement sqlStatement) 
{
+    public Collection<LocalDataQueryResultRow> getRows(final 
ShowLogicalTablesStatement sqlStatement) {
         DialectDatabaseMetaData dialectDatabaseMetaData = new 
DatabaseTypeRegistry(database.getProtocolType()).getDialectDatabaseMetaData();
         String schemaName = 
dialectDatabaseMetaData.getDefaultSchema().orElse(database.getName());
         if (null == database.getSchema(schemaName)) {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
index 3d967309d50..237719c8e99 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutor.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
 
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import lombok.Setter;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import 
org.apache.shardingsphere.distsql.statement.rql.show.ShowRulesUsedStorageUnitStatement;
 import org.apache.shardingsphere.encrypt.api.config.EncryptRuleConfiguration;
 import org.apache.shardingsphere.encrypt.rule.EncryptRule;
@@ -45,7 +46,8 @@ import java.util.stream.Collectors;
 /**
  * Show rules used storage unit executor.
  */
-public final class ShowRulesUsedStorageUnitExecutor implements 
RQLExecutor<ShowRulesUsedStorageUnitStatement> {
+@Setter
+public final class ShowRulesUsedStorageUnitExecutor implements 
DatabaseAwareRQLExecutor<ShowRulesUsedStorageUnitStatement> {
     
     private static final String SHARDING = "sharding";
     
@@ -57,13 +59,15 @@ public final class ShowRulesUsedStorageUnitExecutor 
implements RQLExecutor<ShowR
     
     private static final String MASK = "mask";
     
+    private ShardingSphereDatabase database;
+    
     @Override
     public Collection<String> getColumnNames() {
         return Arrays.asList("type", "name");
     }
     
     @Override
-    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final ShowRulesUsedStorageUnitStatement 
sqlStatement) {
+    public Collection<LocalDataQueryResultRow> getRows(final 
ShowRulesUsedStorageUnitStatement sqlStatement) {
         Collection<LocalDataQueryResultRow> result = new LinkedList<>();
         String resourceName = sqlStatement.getStorageUnitName().orElse(null);
         if 
(database.getResourceMetaData().getStorageUnits().containsKey(resourceName)) {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
index 0c2eed6639f..5712d757334 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutor.java
@@ -17,7 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
 
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
+import lombok.Setter;
+import 
org.apache.shardingsphere.distsql.handler.type.rql.aware.DatabaseAwareRQLExecutor;
 import 
org.apache.shardingsphere.distsql.statement.rql.show.ShowStorageUnitsStatement;
 import 
org.apache.shardingsphere.infra.database.core.connector.ConnectionProperties;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
@@ -43,7 +44,10 @@ import java.util.Properties;
 /**
  * Show storage unit executor.
  */
-public final class ShowStorageUnitExecutor implements 
RQLExecutor<ShowStorageUnitsStatement> {
+@Setter
+public final class ShowStorageUnitExecutor implements 
DatabaseAwareRQLExecutor<ShowStorageUnitsStatement> {
+    
+    private ShardingSphereDatabase database;
     
     @Override
     public Collection<String> getColumnNames() {
@@ -52,7 +56,7 @@ public final class ShowStorageUnitExecutor implements 
RQLExecutor<ShowStorageUni
     }
     
     @Override
-    public Collection<LocalDataQueryResultRow> getRows(final 
ShardingSphereDatabase database, final ShowStorageUnitsStatement sqlStatement) {
+    public Collection<LocalDataQueryResultRow> getRows(final 
ShowStorageUnitsStatement sqlStatement) {
         Collection<LocalDataQueryResultRow> result = new LinkedList<>();
         for (Entry<String, StorageUnit> entry : 
getToBeShownStorageUnits(database, sqlStatement).entrySet()) {
             ConnectionProperties connectionProps = 
entry.getValue().getConnectionProperties();
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
index 016cce9ca02..63de66a8ccc 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowLogicalTableExecutorTest.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rql.type;
 
-import org.apache.shardingsphere.distsql.handler.type.rql.RQLExecutor;
 import 
org.apache.shardingsphere.distsql.statement.rql.show.ShowLogicalTablesStatement;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
@@ -45,7 +44,7 @@ import static org.mockito.Mockito.when;
 @MockitoSettings(strictness = Strictness.LENIENT)
 class ShowLogicalTableExecutorTest {
     
-    private final RQLExecutor<ShowLogicalTablesStatement> executor = new 
ShowLogicalTableExecutor();
+    private final ShowLogicalTableExecutor executor = new 
ShowLogicalTableExecutor();
     
     @Mock
     private ShardingSphereDatabase database;
@@ -57,11 +56,12 @@ class ShowLogicalTableExecutorTest {
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         when(database.getSchema("foo_db")).thenReturn(schema);
         when(schema.getAllTableNames()).thenReturn(Arrays.asList("t_order", 
"t_order_item"));
+        executor.setDatabase(database);
     }
     
     @Test
     void assertGetRowData() {
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, mock(ShowLogicalTablesStatement.class));
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowLogicalTablesStatement.class));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         LocalDataQueryResultRow row = iterator.next();
@@ -72,7 +72,7 @@ class ShowLogicalTableExecutorTest {
     
     @Test
     void assertRowDataWithLike() {
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, new ShowLogicalTablesStatement("t_order_%", null));
+        Collection<LocalDataQueryResultRow> actual = executor.getRows(new 
ShowLogicalTablesStatement("t_order_%", null));
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
         assertThat(iterator.next().getCell(1), is("t_order_item"));
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
index a3b5fd7458f..cba3bd0d577 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowRulesUsedStorageUnitExecutorTest.java
@@ -59,10 +59,11 @@ class ShowRulesUsedStorageUnitExecutorTest {
     
     @Test
     void assertGetRowData() {
-        RQLExecutor<ShowRulesUsedStorageUnitStatement> executor = new 
ShowRulesUsedStorageUnitExecutor();
+        ShowRulesUsedStorageUnitExecutor executor = new 
ShowRulesUsedStorageUnitExecutor();
+        executor.setDatabase(mockDatabase());
         ShowRulesUsedStorageUnitStatement sqlStatement = 
mock(ShowRulesUsedStorageUnitStatement.class);
         
when(sqlStatement.getStorageUnitName()).thenReturn(Optional.of("foo_ds"));
-        Collection<LocalDataQueryResultRow> rowData = 
executor.getRows(mockDatabase(), sqlStatement);
+        Collection<LocalDataQueryResultRow> rowData = 
executor.getRows(sqlStatement);
         assertThat(rowData.size(), is(7));
         Iterator<LocalDataQueryResultRow> actual = rowData.iterator();
         LocalDataQueryResultRow row = actual.next();
@@ -143,11 +144,11 @@ class ShowRulesUsedStorageUnitExecutorTest {
     
     @Test
     void assertGetEmptyRowData() {
-        ShardingSphereDatabase database = mockEmptyDatabase();
-        RQLExecutor<ShowRulesUsedStorageUnitStatement> executor = new 
ShowRulesUsedStorageUnitExecutor();
+        ShowRulesUsedStorageUnitExecutor executor = new 
ShowRulesUsedStorageUnitExecutor();
+        executor.setDatabase(mockEmptyDatabase());
         ShowRulesUsedStorageUnitStatement sqlStatement = 
mock(ShowRulesUsedStorageUnitStatement.class);
         
when(sqlStatement.getStorageUnitName()).thenReturn(Optional.of("empty_ds"));
-        Collection<LocalDataQueryResultRow> rowData = 
executor.getRows(database, sqlStatement);
+        Collection<LocalDataQueryResultRow> rowData = 
executor.getRows(sqlStatement);
         assertTrue(rowData.isEmpty());
     }
     
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
index 42f5ec30ec6..5f5c6654ba3 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rql/type/ShowStorageUnitExecutorTest.java
@@ -109,12 +109,13 @@ class ShowStorageUnitExecutorTest {
     @Test
     void assertAllStorageUnit() {
         ShowStorageUnitExecutor executor = new ShowStorageUnitExecutor();
+        executor.setDatabase(database);
         ShowStorageUnitsStatement showStorageUnitsStatement = new 
ShowStorageUnitsStatement(mock(DatabaseSegment.class), null);
         Map<Integer, String> nameMap = new HashMap<>(3, 1F);
         nameMap.put(0, "ds_2");
         nameMap.put(1, "ds_1");
         nameMap.put(2, "ds_0");
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, showStorageUnitsStatement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(showStorageUnitsStatement);
         Iterator<LocalDataQueryResultRow> rowData = actual.iterator();
         assertThat(actual.size(), is(3));
         int index = 0;
@@ -138,9 +139,10 @@ class ShowStorageUnitExecutorTest {
     
     @Test
     void assertUnusedStorageUnit() {
-        RQLExecutor<ShowStorageUnitsStatement> executor = new 
ShowStorageUnitExecutor();
+        ShowStorageUnitExecutor executor = new ShowStorageUnitExecutor();
+        executor.setDatabase(database);
         ShowStorageUnitsStatement showStorageUnitsStatement = new 
ShowStorageUnitsStatement(mock(DatabaseSegment.class), 0);
-        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(database, showStorageUnitsStatement);
+        Collection<LocalDataQueryResultRow> actual = 
executor.getRows(showStorageUnitsStatement);
         assertThat(actual.size(), is(1));
         Iterator<LocalDataQueryResultRow> rowData = actual.iterator();
         LocalDataQueryResultRow data = rowData.next();

Reply via email to