Commit 132d515a authored by terrymanu's avatar terrymanu
Browse files

for #2084, delete SelectWhereExtractor

parent 3af08572
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ public final class WhereExtractor implements OptionalSQLSegmentExtractor {
    @Override
    public Optional<WhereSegment> extract(final ParserRuleContext ancestorNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) {
        WhereSegment result = new WhereSegment(parameterMarkerIndexes.size());
        Optional<ParserRuleContext> whereNode = ExtractorUtils.findFirstChildNodeNoneRecursive(ancestorNode, RuleName.WHERE_CLAUSE);
        Optional<ParserRuleContext> whereNode = ExtractorUtils.findFirstChildNodeBreadthFirst(ancestorNode, RuleName.WHERE_CLAUSE);
        if (whereNode.isPresent()) {
            setPropertiesForRevert(result, whereNode.get(), parameterMarkerIndexes);
            Optional<OrPredicateSegment> orConditionSegment = extractOrConditionSegment(whereNode.get(), parameterMarkerIndexes);
+3 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select;
import com.google.common.base.Optional;
import org.antlr.v4.runtime.ParserRuleContext;
import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.WhereExtractor;
import org.apache.shardingsphere.core.parse.antlr.extractor.util.ExtractorUtils;
import org.apache.shardingsphere.core.parse.antlr.extractor.util.RuleName;
import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.WhereSegment;
@@ -35,14 +36,14 @@ import java.util.Map;
 */
public final class SubqueryPredicateExtractor implements OptionalSQLSegmentExtractor {
    
    private final SelectWhereExtractor selectWhereExtractor = new SelectWhereExtractor();
    private final WhereExtractor whereExtractor = new WhereExtractor();
    
    @Override
    public Optional<SubqueryPredicateSegment> extract(final ParserRuleContext ancestorNode, final Map<ParserRuleContext, Integer> parameterMarkerIndexes) {
        Collection<ParserRuleContext> subqueryNodes = ExtractorUtils.getAllDescendantNodes(ancestorNode, RuleName.SUBQUERY);
        SubqueryPredicateSegment result = new SubqueryPredicateSegment();
        for (ParserRuleContext each : subqueryNodes) {
            Optional<WhereSegment> whereSegment = selectWhereExtractor.extract(each, parameterMarkerIndexes);
            Optional<WhereSegment> whereSegment = whereExtractor.extract(each, parameterMarkerIndexes);
            if (whereSegment.isPresent()) {
                result.getOrPredicates().add(whereSegment.get().getOrPredicate());
            }
+6 −8
Original line number Diff line number Diff line
@@ -84,9 +84,8 @@ public final class ExtractorUtils {
        parserRuleContexts.add(node);
        ParserRuleContext parserRuleContext;
        while (null != (parserRuleContext = parserRuleContexts.poll())) {
            if (parserRuleContext instanceof ParserRuleContext) {
                if (isMatchedNode((ParserRuleContext) parserRuleContext, ruleName)) {
                    return Optional.of((ParserRuleContext) parserRuleContext);
            if (isMatchedNode(parserRuleContext, ruleName)) {
                return Optional.of(parserRuleContext);
            }
            for (int i = 0; i < parserRuleContext.getChildCount(); i++) {
                if (parserRuleContext.getChild(i) instanceof ParserRuleContext) {
@@ -94,7 +93,6 @@ public final class ExtractorUtils {
                }
            }
        }
        }
        return Optional.absent();
    }
    
+0 −1
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@
    <extractor-rule id="tableReferences" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.TableReferencesExtractor" />
    <extractor-rule id="where" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.WhereExtractor" />
    <extractor-rule id="selectItems" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.SelectItemsExtractor" />
    <extractor-rule id="selectWhere" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.SelectWhereExtractor" />
    <extractor-rule id="groupBy" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.GroupByExtractor" />
    <extractor-rule id="orderBy" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.OrderByExtractor" />
    <extractor-rule id="limit" extractor-class="org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.LimitExtractor" />
+1 −1
Original line number Diff line number Diff line
@@ -20,5 +20,5 @@
    <sql-statement-rule context="insert" sql-statement-class="org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.InsertStatement" extractor-rule-refs="tables, insertColumns, insertValues, setAssignments" />
    <sql-statement-rule context="update" sql-statement-class="org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.UpdateStatement" extractor-rule-refs="tableReferences, setAssignments, where" />
    <sql-statement-rule context="delete" sql-statement-class="org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.DeleteStatement" extractor-rule-refs="tables, where" />
    <sql-statement-rule context="select" sql-statement-class="org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.SelectStatement" extractor-rule-refs="tables, selectWhere, subqueryPredicate"/>
    <sql-statement-rule context="select" sql-statement-class="org.apache.shardingsphere.core.parse.antlr.sql.statement.dml.SelectStatement" extractor-rule-refs="tables, where, subqueryPredicate"/>
</sql-statement-rule-definition>
Loading