Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectItemsExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ public final class SelectItemsExtractor implements OptionalSQLSegmentExtractor { } private boolean hasDistinct(final ParserRuleContext ancestorNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); Optional<ParserRuleContext> duplicateSpecificationNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.DUPLICATE_SPECIFICATION); return duplicateSpecificationNode.isPresent() && (duplicateSpecificationNode.get().getText().equalsIgnoreCase("DISTINCT") || duplicateSpecificationNode.get().getText().equalsIgnoreCase("DISTINCTROW")); } } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/RuleName.java +1 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public enum RuleName { ASSIGNMENT("Assignment"), SELECT_SPECIFICATION("SelectSpecification"), DUPLICATE_SPECIFICATION("DuplicateSpecification"), SELECT_ITEMS("SelectItems"), Loading sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4 +7 −3 Original line number Diff line number Diff line Loading @@ -101,11 +101,15 @@ unionClause_ ; selectClause : SELECT selectSpecification selectItems fromClause? whereClause? groupByClause? havingClause? windowClause_? orderByClause? limitClause? : SELECT selectSpecification_* selectItems fromClause? whereClause? groupByClause? havingClause? windowClause_? orderByClause? limitClause? ; selectSpecification : (ALL | distinct | DISTINCTROW)? HIGH_PRIORITY? STRAIGHT_JOIN? SQL_SMALL_RESULT? SQL_BIG_RESULT? SQL_BUFFER_RESULT? (SQL_CACHE | SQL_NO_CACHE)? SQL_CALC_FOUND_ROWS? selectSpecification_ : duplicateSpecification | HIGH_PRIORITY | STRAIGHT_JOIN | SQL_SMALL_RESULT | SQL_BIG_RESULT | SQL_BUFFER_RESULT | (SQL_CACHE | SQL_NO_CACHE) | SQL_CALC_FOUND_ROWS ; duplicateSpecification : ALL | DISTINCT | DISTINCTROW ; selectItems Loading Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectItemsExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ public final class SelectItemsExtractor implements OptionalSQLSegmentExtractor { } private boolean hasDistinct(final ParserRuleContext ancestorNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); Optional<ParserRuleContext> duplicateSpecificationNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.DUPLICATE_SPECIFICATION); return duplicateSpecificationNode.isPresent() && (duplicateSpecificationNode.get().getText().equalsIgnoreCase("DISTINCT") || duplicateSpecificationNode.get().getText().equalsIgnoreCase("DISTINCTROW")); } }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/RuleName.java +1 −1 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public enum RuleName { ASSIGNMENT("Assignment"), SELECT_SPECIFICATION("SelectSpecification"), DUPLICATE_SPECIFICATION("DuplicateSpecification"), SELECT_ITEMS("SelectItems"), Loading
sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/antlr4/imports/mysql/DMLStatement.g4 +7 −3 Original line number Diff line number Diff line Loading @@ -101,11 +101,15 @@ unionClause_ ; selectClause : SELECT selectSpecification selectItems fromClause? whereClause? groupByClause? havingClause? windowClause_? orderByClause? limitClause? : SELECT selectSpecification_* selectItems fromClause? whereClause? groupByClause? havingClause? windowClause_? orderByClause? limitClause? ; selectSpecification : (ALL | distinct | DISTINCTROW)? HIGH_PRIORITY? STRAIGHT_JOIN? SQL_SMALL_RESULT? SQL_BIG_RESULT? SQL_BUFFER_RESULT? (SQL_CACHE | SQL_NO_CACHE)? SQL_CALC_FOUND_ROWS? selectSpecification_ : duplicateSpecification | HIGH_PRIORITY | STRAIGHT_JOIN | SQL_SMALL_RESULT | SQL_BIG_RESULT | SQL_BUFFER_RESULT | (SQL_CACHE | SQL_NO_CACHE) | SQL_CALC_FOUND_ROWS ; duplicateSpecification : ALL | DISTINCT | DISTINCTROW ; selectItems Loading