Commit dee15151 authored by terrymanu's avatar terrymanu
Browse files

for #2084, add duplicateSpecification

parent 3520f3a1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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"));
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ public enum RuleName {
    
    ASSIGNMENT("Assignment"),
    
    SELECT_SPECIFICATION("SelectSpecification"),
    DUPLICATE_SPECIFICATION("DuplicateSpecification"),
    
    SELECT_ITEMS("SelectItems"),
    
+7 −3
Original line number Diff line number Diff line
@@ -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