Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectClauseExtractor.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectItemsExtractor.java +12 −12 Original line number Diff line number Diff line Loading @@ -23,23 +23,23 @@ import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegme import org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.item.SelectItemExtractor; 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.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.SelectItemSegment; /** * Select clause extractor. * Select items extractor. * * @author duhongjun * @author panjuan */ public final class SelectClauseExtractor implements OptionalSQLSegmentExtractor { public final class SelectItemsExtractor implements OptionalSQLSegmentExtractor { private final SelectItemExtractor selectItemExtractor = new SelectItemExtractor(); @Override public Optional<SelectClauseSegment> extract(final ParserRuleContext ancestorNode) { public Optional<SelectItemsSegment> extract(final ParserRuleContext ancestorNode) { ParserRuleContext selectItemsNode = ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_ITEMS); SelectClauseSegment result = new SelectClauseSegment(selectItemsNode.getStart().getStartIndex(), selectItemsNode.getStop().getStopIndex(), hasDistinct(ancestorNode)); SelectItemsSegment result = new SelectItemsSegment(selectItemsNode.getStart().getStartIndex(), selectItemsNode.getStop().getStopIndex(), hasDistinct(ancestorNode)); Optional<ParserRuleContext> unqualifiedShorthandNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.UNQUALIFIED_SHORTHAND); if (unqualifiedShorthandNode.isPresent()) { setUnqualifiedShorthandSelectItemSegment(unqualifiedShorthandNode.get(), result); Loading @@ -48,23 +48,23 @@ public final class SelectClauseExtractor implements OptionalSQLSegmentExtractor return Optional.of(result); } private void setUnqualifiedShorthandSelectItemSegment(final ParserRuleContext unqualifiedShorthandNode, final SelectClauseSegment selectClauseSegment) { private void setUnqualifiedShorthandSelectItemSegment(final ParserRuleContext unqualifiedShorthandNode, final SelectItemsSegment selectItemsSegment) { Optional<? extends SelectItemSegment> unqualifiedShorthandSelectItemSegment = selectItemExtractor.extract(unqualifiedShorthandNode); if (unqualifiedShorthandSelectItemSegment.isPresent()) { selectClauseSegment.getSelectItems().add(unqualifiedShorthandSelectItemSegment.get()); selectItemsSegment.getSelectItems().add(unqualifiedShorthandSelectItemSegment.get()); } } private void setSelectItemSegment(final ParserRuleContext selectClauseNode, final SelectClauseSegment selectClauseSegment) { for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(selectClauseNode, RuleName.SELECT_ITEM)) { private void setSelectItemSegment(final ParserRuleContext ancestorNode, final SelectItemsSegment selectItemsSegment) { for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(ancestorNode, RuleName.SELECT_ITEM)) { Optional<? extends SelectItemSegment> selectItemSegment = selectItemExtractor.extract(each); if (selectItemSegment.isPresent()) { selectClauseSegment.getSelectItems().add(selectItemSegment.get()); selectItemsSegment.getSelectItems().add(selectItemSegment.get()); } } } private boolean hasDistinct(final ParserRuleContext selectClauseNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(selectClauseNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); private boolean hasDistinct(final ParserRuleContext ancestorNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); } } sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SubqueryExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor; 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.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.WhereSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.expr.SubquerySegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.order.GroupBySegment; Loading Loading @@ -56,9 +56,9 @@ public final class SubqueryExtractor implements OptionalSQLSegmentExtractor { parentNode = parentNode.getParent(); } SubquerySegment result = new SubquerySegment(subqueryNode.getStart().getStartIndex(), subqueryNode.getStop().getStopIndex(), subqueryInFrom); Optional<SelectClauseSegment> selectClauseSegment = new SelectClauseExtractor().extract(subqueryNode); if (selectClauseSegment.isPresent()) { result.setSelectClauseSegment(selectClauseSegment.get()); Optional<SelectItemsSegment> selectItemsSegment = new SelectItemsExtractor().extract(subqueryNode); if (selectItemsSegment.isPresent()) { result.setSelectItemsSegment(selectItemsSegment.get()); } Optional<WhereSegment> whereSegment = selectWhereExtractor.extract(subqueryNode); if (whereSegment.isPresent()) { Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SelectClauseFiller.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SelectItemsFiller.java +6 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import lombok.Setter; import org.apache.shardingsphere.core.metadata.table.ShardingTableMetaData; import org.apache.shardingsphere.core.parse.antlr.filler.api.SQLSegmentFiller; import org.apache.shardingsphere.core.parse.antlr.filler.api.ShardingTableMetaDataAwareFiller; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.AggregationDistinctSelectItemSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.AggregationSelectItemSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.ColumnSelectItemSegment; Loading @@ -39,19 +39,19 @@ import java.util.LinkedHashSet; import java.util.Set; /** * Select clause filler. * Select items filler. * * @author duhongjun */ @Setter public final class SelectClauseFiller implements SQLSegmentFiller<SelectClauseSegment>, ShardingTableMetaDataAwareFiller { public final class SelectItemsFiller implements SQLSegmentFiller<SelectItemsSegment>, ShardingTableMetaDataAwareFiller { private ShardingTableMetaData shardingTableMetaData; private SelectItemFiller selectItemFiller; @Override public void fill(final SelectClauseSegment sqlSegment, final SQLStatement sqlStatement) { public void fill(final SelectItemsSegment sqlSegment, final SQLStatement sqlStatement) { selectItemFiller = new SelectItemFiller(shardingTableMetaData); SelectStatement selectStatement = (SelectStatement) sqlStatement; selectStatement.setFirstSelectItemStartIndex(sqlSegment.getFirstSelectItemStartIndex()); Loading @@ -67,8 +67,8 @@ public final class SelectClauseFiller implements SQLSegmentFiller<SelectClauseSe } } private void fillDistinct(final SelectClauseSegment selectClauseSegment, final SelectStatement selectStatement) { Iterator<SelectItemSegment> selectItemSegmentIterator = selectClauseSegment.getSelectItems().iterator(); private void fillDistinct(final SelectItemsSegment selectItemsSegment, final SelectStatement selectStatement) { Iterator<SelectItemSegment> selectItemSegmentIterator = selectItemsSegment.getSelectItems().iterator(); SelectItemSegment firstSelectItemSegment = selectItemSegmentIterator.next(); Set<String> distinctColumnNames = new LinkedHashSet<>(); DistinctSelectItem distinctSelectItem = null; Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SubqueryFiller.java +2 −2 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ public final class SubqueryFiller implements SQLSegmentFiller<SubquerySegment> { SelectStatement subqueryStatement = new SelectStatement(); subqueryStatement.setParentStatement(selectStatement); selectStatement.getSubqueryStatements().add(subqueryStatement); if (sqlSegment.getSelectClauseSegment().isPresent()) { new SelectClauseFiller().fill(sqlSegment.getSelectClauseSegment().get(), subqueryStatement); if (sqlSegment.getSelectItemsSegment().isPresent()) { new SelectItemsFiller().fill(sqlSegment.getSelectItemsSegment().get(), subqueryStatement); } if (sqlSegment.getWhereSegment().isPresent()) { // new WhereFiller().fill(sqlSegment.getWhereSegment().get(), subqueryStatement, sql); Loading sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/sql/segment/dml/SelectClauseSegment.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/sql/segment/dml/SelectItemsSegment.java +2 −2 Original line number Diff line number Diff line Loading @@ -26,14 +26,14 @@ import java.util.Collection; import java.util.LinkedList; /** * Select clause segment. * Select items segment. * * @author duhongjun * @author panjuan */ @RequiredArgsConstructor @Getter public final class SelectClauseSegment implements SQLSegment { public final class SelectItemsSegment implements SQLSegment { private final int firstSelectItemStartIndex; Loading Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectClauseExtractor.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SelectItemsExtractor.java +12 −12 Original line number Diff line number Diff line Loading @@ -23,23 +23,23 @@ import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegme import org.apache.shardingsphere.core.parse.antlr.extractor.impl.dml.select.item.SelectItemExtractor; 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.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.SelectItemSegment; /** * Select clause extractor. * Select items extractor. * * @author duhongjun * @author panjuan */ public final class SelectClauseExtractor implements OptionalSQLSegmentExtractor { public final class SelectItemsExtractor implements OptionalSQLSegmentExtractor { private final SelectItemExtractor selectItemExtractor = new SelectItemExtractor(); @Override public Optional<SelectClauseSegment> extract(final ParserRuleContext ancestorNode) { public Optional<SelectItemsSegment> extract(final ParserRuleContext ancestorNode) { ParserRuleContext selectItemsNode = ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_ITEMS); SelectClauseSegment result = new SelectClauseSegment(selectItemsNode.getStart().getStartIndex(), selectItemsNode.getStop().getStopIndex(), hasDistinct(ancestorNode)); SelectItemsSegment result = new SelectItemsSegment(selectItemsNode.getStart().getStartIndex(), selectItemsNode.getStop().getStopIndex(), hasDistinct(ancestorNode)); Optional<ParserRuleContext> unqualifiedShorthandNode = ExtractorUtils.findFirstChildNode(ancestorNode, RuleName.UNQUALIFIED_SHORTHAND); if (unqualifiedShorthandNode.isPresent()) { setUnqualifiedShorthandSelectItemSegment(unqualifiedShorthandNode.get(), result); Loading @@ -48,23 +48,23 @@ public final class SelectClauseExtractor implements OptionalSQLSegmentExtractor return Optional.of(result); } private void setUnqualifiedShorthandSelectItemSegment(final ParserRuleContext unqualifiedShorthandNode, final SelectClauseSegment selectClauseSegment) { private void setUnqualifiedShorthandSelectItemSegment(final ParserRuleContext unqualifiedShorthandNode, final SelectItemsSegment selectItemsSegment) { Optional<? extends SelectItemSegment> unqualifiedShorthandSelectItemSegment = selectItemExtractor.extract(unqualifiedShorthandNode); if (unqualifiedShorthandSelectItemSegment.isPresent()) { selectClauseSegment.getSelectItems().add(unqualifiedShorthandSelectItemSegment.get()); selectItemsSegment.getSelectItems().add(unqualifiedShorthandSelectItemSegment.get()); } } private void setSelectItemSegment(final ParserRuleContext selectClauseNode, final SelectClauseSegment selectClauseSegment) { for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(selectClauseNode, RuleName.SELECT_ITEM)) { private void setSelectItemSegment(final ParserRuleContext ancestorNode, final SelectItemsSegment selectItemsSegment) { for (ParserRuleContext each : ExtractorUtils.getAllDescendantNodes(ancestorNode, RuleName.SELECT_ITEM)) { Optional<? extends SelectItemSegment> selectItemSegment = selectItemExtractor.extract(each); if (selectItemSegment.isPresent()) { selectClauseSegment.getSelectItems().add(selectItemSegment.get()); selectItemsSegment.getSelectItems().add(selectItemSegment.get()); } } } private boolean hasDistinct(final ParserRuleContext selectClauseNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(selectClauseNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); private boolean hasDistinct(final ParserRuleContext ancestorNode) { return ExtractorUtils.findFirstChildNode(ExtractorUtils.getFirstChildNode(ancestorNode, RuleName.SELECT_SPECIFICATION), RuleName.DISTINCT).isPresent(); } }
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/extractor/impl/dml/select/SubqueryExtractor.java +4 −4 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.apache.shardingsphere.core.parse.antlr.extractor.api.OptionalSQLSegmentExtractor; 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.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.WhereSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.expr.SubquerySegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.order.GroupBySegment; Loading Loading @@ -56,9 +56,9 @@ public final class SubqueryExtractor implements OptionalSQLSegmentExtractor { parentNode = parentNode.getParent(); } SubquerySegment result = new SubquerySegment(subqueryNode.getStart().getStartIndex(), subqueryNode.getStop().getStopIndex(), subqueryInFrom); Optional<SelectClauseSegment> selectClauseSegment = new SelectClauseExtractor().extract(subqueryNode); if (selectClauseSegment.isPresent()) { result.setSelectClauseSegment(selectClauseSegment.get()); Optional<SelectItemsSegment> selectItemsSegment = new SelectItemsExtractor().extract(subqueryNode); if (selectItemsSegment.isPresent()) { result.setSelectItemsSegment(selectItemsSegment.get()); } Optional<WhereSegment> whereSegment = selectWhereExtractor.extract(subqueryNode); if (whereSegment.isPresent()) { Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SelectClauseFiller.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SelectItemsFiller.java +6 −6 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import lombok.Setter; import org.apache.shardingsphere.core.metadata.table.ShardingTableMetaData; import org.apache.shardingsphere.core.parse.antlr.filler.api.SQLSegmentFiller; import org.apache.shardingsphere.core.parse.antlr.filler.api.ShardingTableMetaDataAwareFiller; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectClauseSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.SelectItemsSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.AggregationDistinctSelectItemSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.AggregationSelectItemSegment; import org.apache.shardingsphere.core.parse.antlr.sql.segment.dml.item.ColumnSelectItemSegment; Loading @@ -39,19 +39,19 @@ import java.util.LinkedHashSet; import java.util.Set; /** * Select clause filler. * Select items filler. * * @author duhongjun */ @Setter public final class SelectClauseFiller implements SQLSegmentFiller<SelectClauseSegment>, ShardingTableMetaDataAwareFiller { public final class SelectItemsFiller implements SQLSegmentFiller<SelectItemsSegment>, ShardingTableMetaDataAwareFiller { private ShardingTableMetaData shardingTableMetaData; private SelectItemFiller selectItemFiller; @Override public void fill(final SelectClauseSegment sqlSegment, final SQLStatement sqlStatement) { public void fill(final SelectItemsSegment sqlSegment, final SQLStatement sqlStatement) { selectItemFiller = new SelectItemFiller(shardingTableMetaData); SelectStatement selectStatement = (SelectStatement) sqlStatement; selectStatement.setFirstSelectItemStartIndex(sqlSegment.getFirstSelectItemStartIndex()); Loading @@ -67,8 +67,8 @@ public final class SelectClauseFiller implements SQLSegmentFiller<SelectClauseSe } } private void fillDistinct(final SelectClauseSegment selectClauseSegment, final SelectStatement selectStatement) { Iterator<SelectItemSegment> selectItemSegmentIterator = selectClauseSegment.getSelectItems().iterator(); private void fillDistinct(final SelectItemsSegment selectItemsSegment, final SelectStatement selectStatement) { Iterator<SelectItemSegment> selectItemSegmentIterator = selectItemsSegment.getSelectItems().iterator(); SelectItemSegment firstSelectItemSegment = selectItemSegmentIterator.next(); Set<String> distinctColumnNames = new LinkedHashSet<>(); DistinctSelectItem distinctSelectItem = null; Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/filler/common/dql/SubqueryFiller.java +2 −2 Original line number Diff line number Diff line Loading @@ -35,8 +35,8 @@ public final class SubqueryFiller implements SQLSegmentFiller<SubquerySegment> { SelectStatement subqueryStatement = new SelectStatement(); subqueryStatement.setParentStatement(selectStatement); selectStatement.getSubqueryStatements().add(subqueryStatement); if (sqlSegment.getSelectClauseSegment().isPresent()) { new SelectClauseFiller().fill(sqlSegment.getSelectClauseSegment().get(), subqueryStatement); if (sqlSegment.getSelectItemsSegment().isPresent()) { new SelectItemsFiller().fill(sqlSegment.getSelectItemsSegment().get(), subqueryStatement); } if (sqlSegment.getWhereSegment().isPresent()) { // new WhereFiller().fill(sqlSegment.getWhereSegment().get(), subqueryStatement, sql); Loading
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/sql/segment/dml/SelectClauseSegment.java→sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/antlr/sql/segment/dml/SelectItemsSegment.java +2 −2 Original line number Diff line number Diff line Loading @@ -26,14 +26,14 @@ import java.util.Collection; import java.util.LinkedList; /** * Select clause segment. * Select items segment. * * @author duhongjun * @author panjuan */ @RequiredArgsConstructor @Getter public final class SelectClauseSegment implements SQLSegment { public final class SelectItemsSegment implements SQLSegment { private final int firstSelectItemStartIndex; Loading