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