提交 cb17dc3e 编写于 作者: T terrymanu

fix at #646

上级 50e9459f
......@@ -9,6 +9,9 @@
1. [ISSUE #610](https://github.com/shardingjdbc/sharding-jdbc/issues/610) 优化不包含表的DQL
1. [ISSUE #611](https://github.com/shardingjdbc/sharding-jdbc/issues/611) 支持MySQL的DESC语句
### 缺陷修正
1. [ISSUE #646](https://github.com/shardingjdbc/sharding-jdbc/issues/646) 当SELECT ITEMS中的别名与GROUP BY或ORDER BY的真实列名对应时,无需补列
## 2.0.3
### 功能提升
......
......@@ -81,7 +81,7 @@ public class GroupByClauseParser implements SQLClauseParser {
if (sqlExpression instanceof SQLPropertyExpression) {
SQLPropertyExpression sqlPropertyExpression = (SQLPropertyExpression) sqlExpression;
orderItem = new OrderItem(SQLUtil.getExactlyValue(sqlPropertyExpression.getOwner().getName()), SQLUtil.getExactlyValue(sqlPropertyExpression.getName()), orderByType, OrderType.ASC,
selectStatement.getAlias(SQLUtil.getExactlyValue(sqlPropertyExpression.getOwner() + "." + SQLUtil.getExactlyValue(sqlPropertyExpression.getName()))));
selectStatement.getAlias(SQLUtil.getExactlyValue(sqlPropertyExpression.getOwner().getName() + "." + SQLUtil.getExactlyValue(sqlPropertyExpression.getName()))));
} else if (sqlExpression instanceof SQLIdentifierExpression) {
SQLIdentifierExpression sqlIdentifierExpression = (SQLIdentifierExpression) sqlExpression;
orderItem = new OrderItem(
......
......@@ -53,9 +53,9 @@
<data parameter="0" />
</sharding-rule>
</sql>
<sql id="assertSelectItemWithAliasAndMismatchOrderByAndGroupByItems">
<sql id="assertSelectItemWithAliasAndMatchOrderByAndGroupByItems">
<sharding-rule>
<data expected="select_group_by/SelectItemWithAliasAndMismatchOrderByAndGroupByItems.xml" />
<data expected="select_group_by/SelectItemWithAliasAndMatchOrderByAndGroupByItems.xml" />
</sharding-rule>
</sql>
<sql id="assertSelectGroupByWithAliasIsKeyword">
......
<dataset>
<t_order uid="10" />
<t_order uid="11" />
<t_order uid="12" />
<t_order uid="13" />
<t_order uid="14" />
<t_order uid="15" />
<t_order uid="16" />
<t_order uid="17" />
<t_order uid="18" />
<t_order uid="19" />
<t_order uid="20" />
<t_order uid="21" />
<t_order uid="22" />
<t_order uid="23" />
<t_order uid="24" />
<t_order uid="25" />
<t_order uid="26" />
<t_order uid="27" />
<t_order uid="28" />
<t_order uid="29" />
</dataset>
<dataset>
<t_order uid="10" GROUP_BY_DERIVED_0="10" />
<t_order uid="11" GROUP_BY_DERIVED_0="11" />
<t_order uid="12" GROUP_BY_DERIVED_0="12" />
<t_order uid="13" GROUP_BY_DERIVED_0="13" />
<t_order uid="14" GROUP_BY_DERIVED_0="14" />
<t_order uid="15" GROUP_BY_DERIVED_0="15" />
<t_order uid="16" GROUP_BY_DERIVED_0="16" />
<t_order uid="17" GROUP_BY_DERIVED_0="17" />
<t_order uid="18" GROUP_BY_DERIVED_0="18" />
<t_order uid="19" GROUP_BY_DERIVED_0="19" />
<t_order uid="20" GROUP_BY_DERIVED_0="20" />
<t_order uid="21" GROUP_BY_DERIVED_0="21" />
<t_order uid="22" GROUP_BY_DERIVED_0="22" />
<t_order uid="23" GROUP_BY_DERIVED_0="23" />
<t_order uid="24" GROUP_BY_DERIVED_0="24" />
<t_order uid="25" GROUP_BY_DERIVED_0="25" />
<t_order uid="26" GROUP_BY_DERIVED_0="26" />
<t_order uid="27" GROUP_BY_DERIVED_0="27" />
<t_order uid="28" GROUP_BY_DERIVED_0="28" />
<t_order uid="29" GROUP_BY_DERIVED_0="29" />
</dataset>
<dataset>
<t_order uid="10" />
<t_order uid="11" />
<t_order uid="12" />
<t_order uid="13" />
<t_order uid="14" />
<t_order uid="15" />
<t_order uid="16" />
<t_order uid="17" />
<t_order uid="18" />
<t_order uid="19" />
</dataset>
<dataset>
<t_order uid="10" GROUP_BY_DERIVED_0="10" />
<t_order uid="11" GROUP_BY_DERIVED_0="11" />
<t_order uid="12" GROUP_BY_DERIVED_0="12" />
<t_order uid="13" GROUP_BY_DERIVED_0="13" />
<t_order uid="14" GROUP_BY_DERIVED_0="14" />
<t_order uid="15" GROUP_BY_DERIVED_0="15" />
<t_order uid="16" GROUP_BY_DERIVED_0="16" />
<t_order uid="17" GROUP_BY_DERIVED_0="17" />
<t_order uid="18" GROUP_BY_DERIVED_0="18" />
<t_order uid="19" GROUP_BY_DERIVED_0="19" />
</dataset>
<dataset>
<t_order uid="10" />
<t_order uid="11" />
<t_order uid="12" />
<t_order uid="13" />
<t_order uid="14" />
<t_order uid="15" />
<t_order uid="16" />
<t_order uid="17" />
<t_order uid="18" />
<t_order uid="19" />
</dataset>
<dataset>
<t_order uid="10" GROUP_BY_DERIVED_0="10" />
<t_order uid="11" GROUP_BY_DERIVED_0="11" />
<t_order uid="12" GROUP_BY_DERIVED_0="12" />
<t_order uid="13" GROUP_BY_DERIVED_0="13" />
<t_order uid="14" GROUP_BY_DERIVED_0="14" />
<t_order uid="15" GROUP_BY_DERIVED_0="15" />
<t_order uid="16" GROUP_BY_DERIVED_0="16" />
<t_order uid="17" GROUP_BY_DERIVED_0="17" />
<t_order uid="18" GROUP_BY_DERIVED_0="18" />
<t_order uid="19" GROUP_BY_DERIVED_0="19" />
</dataset>
<dataset>
<t_order uid="10" GROUP_BY_DERIVED_0="10" />
<t_order uid="11" GROUP_BY_DERIVED_0="11" />
</dataset>
......@@ -11,6 +11,6 @@
<sql id="assertSelectCountWithGroupByBindingTable" value="SELECT count(*) as items_count, o.user_id FROM t_order o JOIN t_order_item i ON o.user_id = i.user_id AND o.order_id = i.order_id WHERE o.user_id IN (%s, %s) AND o.order_id BETWEEN %s AND %s GROUP BY o.user_id ORDER BY o.user_id" />
<sql id="assertSelectWithGroupByAndLimit" value="SELECT user_id FROM t_order GROUP BY user_id ORDER BY user_id LIMIT %s" type="H2,MySQL,PostgreSQL" />
<sql id="assertSelectWithGroupByAndOrderByAndLimit" value="SELECT user_id, SUM(order_id) FROM t_order GROUP BY user_id ORDER BY SUM(order_id) LIMIT %s" type="H2,MySQL,PostgreSQL" />
<sql id="assertSelectItemWithAliasAndMismatchOrderByAndGroupByItems" value="SELECT o.user_id uid FROM t_order o GROUP BY o.user_id ORDER BY o.user_id" type="H2,MySQL,SQLServer,PostgreSQL" />
<sql id="assertSelectItemWithAliasAndMatchOrderByAndGroupByItems" value="SELECT o.user_id uid FROM t_order o GROUP BY o.user_id ORDER BY o.user_id" type="H2,MySQL,SQLServer,PostgreSQL" />
<sql id="assertSelectGroupByWithAliasIsKeyword" value="SELECT SUM(order_id) AS orders_sum, user_id as `key` FROM t_order GROUP BY `key`" type="MySQL" />
</sqls>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册