Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/SQLSegmentsExtractorEngine.java +3 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.google.common.base.Preconditions; import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.extractor.api.CollectionSQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.api.PlaceholderIndexesAware; import org.apache.shardingsphere.core.parse.antlr.extractor.api.SQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.util.ExtractorUtils; import org.apache.shardingsphere.core.parse.antlr.extractor.util.RuleName; Loading Loading @@ -50,17 +49,15 @@ public final class SQLSegmentsExtractorEngine { public Collection<SQLSegment> extract(final SQLAST ast) { Collection<SQLSegment> result = new LinkedList<>(); Preconditions.checkState(ast.getSQLStatementRule().isPresent()); Map<ParserRuleContext, Integer> placeholderIndexes = getPlaceholderIndexes(ast.getParserRuleContext()); for (SQLSegmentExtractor each : ast.getSQLStatementRule().get().getExtractors()) { if (each instanceof PlaceholderIndexesAware) { ((PlaceholderIndexesAware) each).setPlaceholderIndexes(getPlaceholderIndexes(ast.getParserRuleContext())); } if (each instanceof OptionalSQLSegmentExtractor) { Optional<? extends SQLSegment> sqlSegment = ((OptionalSQLSegmentExtractor) each).extract(ast.getParserRuleContext()); Optional<? extends SQLSegment> sqlSegment = ((OptionalSQLSegmentExtractor) each).extract(ast.getParserRuleContext(), placeholderIndexes); if (sqlSegment.isPresent()) { result.add(sqlSegment.get()); } } else if (each instanceof CollectionSQLSegmentExtractor) { result.addAll(((CollectionSQLSegmentExtractor) each).extract(ast.getParserRuleContext())); result.addAll(((CollectionSQLSegmentExtractor) each).extract(ast.getParserRuleContext(), placeholderIndexes)); } } return result; Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/CollectionSQLSegmentExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.sql.segment.SQLSegment; import java.util.Collection; import java.util.Map; /** * Collection SQL segment extractor. Loading @@ -33,7 +34,8 @@ public interface CollectionSQLSegmentExtractor extends SQLSegmentExtractor { * Extract SQL segments from SQL AST. * * @param ancestorNode ancestor node of AST * @param placeholderIndexes placeholder indexes * @return SQL segments */ Collection<? extends SQLSegment> extract(ParserRuleContext ancestorNode); Collection<? extends SQLSegment> extract(ParserRuleContext ancestorNode, Map<ParserRuleContext, Integer> placeholderIndexes); } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/OptionalSQLSegmentExtractor.java +4 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import com.google.common.base.Optional; import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.sql.segment.SQLSegment; import java.util.Map; /** * Optional SQL segment extractor. * Loading @@ -32,7 +34,8 @@ public interface OptionalSQLSegmentExtractor extends SQLSegmentExtractor { * Extract SQL segment from SQL AST. * * @param ancestorNode ancestor node of AST * @param placeholderIndexes placeholder indexes * @return SQL segment */ Optional<? extends SQLSegment> extract(ParserRuleContext ancestorNode); Optional<? extends SQLSegment> extract(ParserRuleContext ancestorNode, Map<ParserRuleContext, Integer> placeholderIndexes); } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/PlaceholderIndexesAware.javadeleted 100644 → 0 +0 −37 Original line number Diff line number Diff line /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.shardingsphere.core.parse.antlr.extractor.api; import org.antlr.v4.runtime.ParserRuleContext; import java.util.Map; /** * Placeholder indexes aware. * * @author zhangliang */ public interface PlaceholderIndexesAware { /** * Set placeholder indexes. * * @param placeholderIndexes placeholder indexes */ void setPlaceholderIndexes(Map<ParserRuleContext, Integer> placeholderIndexes); } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/common/column/ColumnExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ 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.column.ColumnSegment; import java.util.Map; /** * Column extractor. * Loading @@ -34,7 +36,7 @@ import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.column.ColumnS public final class ColumnExtractor implements OptionalSQLSegmentExtractor { @Override public Optional<ColumnSegment> extract(final ParserRuleContext ancestorNode) { public Optional<ColumnSegment> extract(final ParserRuleContext ancestorNode, final Map<ParserRuleContext, Integer> placeholderIndexes) { Optional<ParserRuleContext> columnNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.COLUMN_NAME); return columnNode.isPresent() ? Optional.of(getColumnSegment(columnNode.get())) : Optional.<ColumnSegment>absent(); } Loading Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/SQLSegmentsExtractorEngine.java +3 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import com.google.common.base.Preconditions; import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.extractor.api.CollectionSQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.api.PlaceholderIndexesAware; import org.apache.shardingsphere.core.parse.antlr.extractor.api.SQLSegmentExtractor; import org.apache.shardingsphere.core.parse.antlr.extractor.util.ExtractorUtils; import org.apache.shardingsphere.core.parse.antlr.extractor.util.RuleName; Loading Loading @@ -50,17 +49,15 @@ public final class SQLSegmentsExtractorEngine { public Collection<SQLSegment> extract(final SQLAST ast) { Collection<SQLSegment> result = new LinkedList<>(); Preconditions.checkState(ast.getSQLStatementRule().isPresent()); Map<ParserRuleContext, Integer> placeholderIndexes = getPlaceholderIndexes(ast.getParserRuleContext()); for (SQLSegmentExtractor each : ast.getSQLStatementRule().get().getExtractors()) { if (each instanceof PlaceholderIndexesAware) { ((PlaceholderIndexesAware) each).setPlaceholderIndexes(getPlaceholderIndexes(ast.getParserRuleContext())); } if (each instanceof OptionalSQLSegmentExtractor) { Optional<? extends SQLSegment> sqlSegment = ((OptionalSQLSegmentExtractor) each).extract(ast.getParserRuleContext()); Optional<? extends SQLSegment> sqlSegment = ((OptionalSQLSegmentExtractor) each).extract(ast.getParserRuleContext(), placeholderIndexes); if (sqlSegment.isPresent()) { result.add(sqlSegment.get()); } } else if (each instanceof CollectionSQLSegmentExtractor) { result.addAll(((CollectionSQLSegmentExtractor) each).extract(ast.getParserRuleContext())); result.addAll(((CollectionSQLSegmentExtractor) each).extract(ast.getParserRuleContext(), placeholderIndexes)); } } return result; Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/CollectionSQLSegmentExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.sql.segment.SQLSegment; import java.util.Collection; import java.util.Map; /** * Collection SQL segment extractor. Loading @@ -33,7 +34,8 @@ public interface CollectionSQLSegmentExtractor extends SQLSegmentExtractor { * Extract SQL segments from SQL AST. * * @param ancestorNode ancestor node of AST * @param placeholderIndexes placeholder indexes * @return SQL segments */ Collection<? extends SQLSegment> extract(ParserRuleContext ancestorNode); Collection<? extends SQLSegment> extract(ParserRuleContext ancestorNode, Map<ParserRuleContext, Integer> placeholderIndexes); }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/OptionalSQLSegmentExtractor.java +4 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import com.google.common.base.Optional; import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.sql.segment.SQLSegment; import java.util.Map; /** * Optional SQL segment extractor. * Loading @@ -32,7 +34,8 @@ public interface OptionalSQLSegmentExtractor extends SQLSegmentExtractor { * Extract SQL segment from SQL AST. * * @param ancestorNode ancestor node of AST * @param placeholderIndexes placeholder indexes * @return SQL segment */ Optional<? extends SQLSegment> extract(ParserRuleContext ancestorNode); Optional<? extends SQLSegment> extract(ParserRuleContext ancestorNode, Map<ParserRuleContext, Integer> placeholderIndexes); }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/api/PlaceholderIndexesAware.javadeleted 100644 → 0 +0 −37 Original line number Diff line number Diff line /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.shardingsphere.core.parse.antlr.extractor.api; import org.antlr.v4.runtime.ParserRuleContext; import java.util.Map; /** * Placeholder indexes aware. * * @author zhangliang */ public interface PlaceholderIndexesAware { /** * Set placeholder indexes. * * @param placeholderIndexes placeholder indexes */ void setPlaceholderIndexes(Map<ParserRuleContext, Integer> placeholderIndexes); }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/common/column/ColumnExtractor.java +3 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ 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.column.ColumnSegment; import java.util.Map; /** * Column extractor. * Loading @@ -34,7 +36,7 @@ import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.column.ColumnS public final class ColumnExtractor implements OptionalSQLSegmentExtractor { @Override public Optional<ColumnSegment> extract(final ParserRuleContext ancestorNode) { public Optional<ColumnSegment> extract(final ParserRuleContext ancestorNode, final Map<ParserRuleContext, Integer> placeholderIndexes) { Optional<ParserRuleContext> columnNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.COLUMN_NAME); return columnNode.isPresent() ? Optional.of(getColumnSegment(columnNode.get())) : Optional.<ColumnSegment>absent(); } Loading