diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectCorrector.java b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectCorrector.java index 05e39e902..e11f166fd 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectCorrector.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/corrector/SelectCorrector.java @@ -1,7 +1,10 @@ package com.tencent.supersonic.chat.corrector; import com.tencent.supersonic.chat.api.pojo.SemanticCorrectInfo; +import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper; +import java.util.List; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.CollectionUtils; @Slf4j public class SelectCorrector extends BaseSemanticCorrector { @@ -10,6 +13,14 @@ public class SelectCorrector extends BaseSemanticCorrector { public void correct(SemanticCorrectInfo semanticCorrectInfo) { super.correct(semanticCorrectInfo); String sql = semanticCorrectInfo.getSql(); + List aggregateFields = SqlParserSelectHelper.getAggregateFields(sql); + List selectFields = SqlParserSelectHelper.getSelectFields(sql); + // If the number of aggregated fields is equal to the number of queried fields, do not add fields to select. + if (!CollectionUtils.isEmpty(aggregateFields) + && !CollectionUtils.isEmpty(selectFields) + && aggregateFields.size() == selectFields.size()) { + return; + } addFieldsToSelect(semanticCorrectInfo, sql); } } diff --git a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java index 999c63cc5..893fd9c2f 100644 --- a/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java +++ b/chat/core/src/main/java/com/tencent/supersonic/chat/parser/llm/dsl/LLMDslParser.java @@ -251,7 +251,7 @@ public class LLMDslParser implements SemanticParser { dslCorrection.correct(correctInfo); log.info("sqlCorrection:{} sql:{}", dslCorrection.getClass().getSimpleName(), correctInfo.getSql()); } catch (Exception e) { - log.error("sqlCorrection:{} correct error,correctInfo:{}", dslCorrection, correctInfo, e); + log.error(String.format("correct error,correctInfo:%s", correctInfo), e); } }); return correctInfo;