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();