Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/WhereExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SubqueryPredicateExtractor.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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()); } Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/ExtractorUtils.java +6 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -94,7 +93,6 @@ public final class ExtractorUtils { } } } } return Optional.absent(); } Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/resources/META-INF/parsing-rule-definition/common/extractor-rule-definition.xml +0 −1 Original line number Diff line number Diff line Loading @@ -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" /> Loading sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/resources/META-INF/parsing-rule-definition/encrypt/mysql/sql-statement-rule-definition.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/WhereExtractor.java +1 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SubqueryPredicateExtractor.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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()); } Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/util/ExtractorUtils.java +6 −8 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -94,7 +93,6 @@ public final class ExtractorUtils { } } } } return Optional.absent(); } Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/resources/META-INF/parsing-rule-definition/common/extractor-rule-definition.xml +0 −1 Original line number Diff line number Diff line Loading @@ -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" /> Loading
sharding-core/sharding-core-parse/sharding-core-parse-mysql/src/main/resources/META-INF/parsing-rule-definition/encrypt/mysql/sql-statement-rule-definition.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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>