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

duanzhengqiang 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 6ee626bf3f0 Add judgment for aggregation distinct token generator 
(#31805)
6ee626bf3f0 is described below

commit 6ee626bf3f0b1506918e3f213c658b9c5ea531d4
Author: ZhangCheng <[email protected]>
AuthorDate: Mon Jun 24 09:30:23 2024 +0800

    Add judgment for aggregation distinct token generator (#31805)
---
 .../token/generator/impl/AggregationDistinctTokenGenerator.java   | 2 +-
 .../token/generator/AggregationDistinctTokenGeneratorTest.java    | 8 ++++++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/AggregationDistinctTokenGenerator.java
 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/AggregationDistinctTokenGenerator.java
index a6470e030b1..75640a556b6 100644
--- 
a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/AggregationDistinctTokenGenerator.java
+++ 
b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/AggregationDistinctTokenGenerator.java
@@ -37,7 +37,7 @@ public final class AggregationDistinctTokenGenerator 
implements CollectionSQLTok
     
     @Override
     public boolean isGenerateSQLToken(final SQLStatementContext 
sqlStatementContext) {
-        return sqlStatementContext instanceof SelectStatementContext;
+        return sqlStatementContext instanceof SelectStatementContext && 
!((SelectStatementContext) 
sqlStatementContext).getProjectionsContext().getAggregationDistinctProjections().isEmpty();
     }
     
     @Override
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/AggregationDistinctTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/AggregationDistinctTokenGeneratorTest.java
index faf863501ee..fa3f6195608 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/AggregationDistinctTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/AggregationDistinctTokenGeneratorTest.java
@@ -43,8 +43,12 @@ class AggregationDistinctTokenGeneratorTest {
     @Test
     void assertIsGenerateSQLToken() {
         AggregationDistinctTokenGenerator aggregationDistinctTokenGenerator = 
new AggregationDistinctTokenGenerator();
-        SelectStatementContext selectStatementContext = 
mock(SelectStatementContext.class);
-        
assertTrue(aggregationDistinctTokenGenerator.isGenerateSQLToken(selectStatementContext));
+        SelectStatementContext selectStatementContext = 
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(selectStatementContext.getProjectionsContext().getAggregationDistinctProjections()).thenReturn(Collections.emptyList());
+        
assertFalse(aggregationDistinctTokenGenerator.isGenerateSQLToken(selectStatementContext));
+        SelectStatementContext selectStatementWithProjectionContext = 
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
+        
when(selectStatementWithProjectionContext.getProjectionsContext().getAggregationDistinctProjections()).thenReturn(Collections.singletonList(mock(AggregationDistinctProjection.class)));
+        
assertTrue(aggregationDistinctTokenGenerator.isGenerateSQLToken(selectStatementWithProjectionContext));
         InsertStatementContext insertStatementContext = 
mock(InsertStatementContext.class);
         
assertFalse(aggregationDistinctTokenGenerator.isGenerateSQLToken(insertStatementContext));
     }

Reply via email to