From c2385f564bcae3643c681e036319343096382098 Mon Sep 17 00:00:00 2001 From: terrymanu Date: Sun, 14 Jul 2019 01:15:37 +0800 Subject: [PATCH] for #2567, remove SelectItems.containStar --- .../select/ShardingSelectOptimizedStatement.java | 2 +- .../sharding/dml/select/item/SelectItems.java | 13 ++++++++++++- .../dml/select/item/engine/SelectItemsEngine.java | 13 ++++++------- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java index 0f9b6a7a8f4d4..0f4a0d93aa542 100644 --- a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java +++ b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java @@ -109,7 +109,7 @@ private void setIndexForOrderItem(final Map columnLabelIndexMap } private Optional getAlias(final String name) { - if (selectItems.isContainStar()) { + if (selectItems.isUnqualifiedShorthandItem()) { return Optional.absent(); } String rawName = SQLUtil.getExactlyValue(name); diff --git a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/SelectItems.java b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/SelectItems.java index e9715fb956ba6..a93f5523203f7 100644 --- a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/SelectItems.java +++ b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/SelectItems.java @@ -43,7 +43,18 @@ public final class SelectItems { private final int selectListStopIndex; - private boolean containStar; + /** + * Judge is unqualified shorthand item or not. + * + * @return is unqualified shorthand item or not + */ + public boolean isUnqualifiedShorthandItem() { + if (1 != items.size()) { + return false; + } + SelectItem item = items.iterator().next(); + return item instanceof ShorthandSelectItem && !((ShorthandSelectItem) item).getOwner().isPresent(); + } /** * Find alias. diff --git a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/engine/SelectItemsEngine.java b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/engine/SelectItemsEngine.java index 15f57feb9cd8c..5b2dea2ddb46a 100644 --- a/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/engine/SelectItemsEngine.java +++ b/sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/item/engine/SelectItemsEngine.java @@ -65,10 +65,9 @@ public final class SelectItemsEngine { public SelectItems createSelectItems(final SelectStatement selectStatement, final GroupBy groupBy, final OrderBy orderBy) { SelectItemsSegment selectItemsSegment = getSelectItemsSegment(selectStatement); Collection items = getSelectItemList(selectItemsSegment, selectStatement); - items.addAll(getDerivedGroupByColumns(selectStatement, items, groupBy.getItems())); - items.addAll(getDerivedOrderByColumns(selectStatement, items, orderBy.getItems())); SelectItems result = new SelectItems(items, selectItemsSegment.isDistinctRow(), selectItemsSegment.getStopIndex()); - result.setContainStar(isUnqualifiedShorthandItem(items)); + result.getItems().addAll(getDerivedGroupByColumns(selectStatement, items, groupBy)); + result.getItems().addAll(getDerivedOrderByColumns(selectStatement, items, orderBy)); return result; } @@ -89,12 +88,12 @@ private Collection getSelectItemList(final SelectItemsSegment select return result; } - private Collection getDerivedGroupByColumns(final SelectStatement selectStatement, final Collection selectItems, final Collection groupByItems) { - return getDerivedOrderColumns(selectStatement, selectItems, groupByItems, DerivedColumn.GROUP_BY_ALIAS); + private Collection getDerivedGroupByColumns(final SelectStatement selectStatement, final Collection selectItems, final GroupBy groupBy) { + return getDerivedOrderColumns(selectStatement, selectItems, groupBy.getItems(), DerivedColumn.GROUP_BY_ALIAS); } - private Collection getDerivedOrderByColumns(final SelectStatement selectStatement, final Collection selectItems, final Collection orderByItems) { - return getDerivedOrderColumns(selectStatement, selectItems, orderByItems, DerivedColumn.ORDER_BY_ALIAS); + private Collection getDerivedOrderByColumns(final SelectStatement selectStatement, final Collection selectItems, final OrderBy orderBy) { + return getDerivedOrderColumns(selectStatement, selectItems, orderBy.getItems(), DerivedColumn.ORDER_BY_ALIAS); } private Collection getDerivedOrderColumns(final SelectStatement selectStatement,