Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
6895e03c
Shardingsphere
项目概览
apache
/
Shardingsphere
通知
56
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Shardingsphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6895e03c
编写于
7月 08, 2019
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
for #2567, move appendDerivedOrderBy from parse's optimize to optimize module
上级
60199f6a
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
15 addition
and
26 deletion
+15
-26
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/engine/sharding/dml/ShardingSelectOptimizeEngine.java
...ize/engine/sharding/dml/ShardingSelectOptimizeEngine.java
+8
-0
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java
...sharding/dml/select/ShardingSelectOptimizedStatement.java
+2
-0
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/optimizer/select/ShardingSelectOptimizer.java
.../core/parse/optimizer/select/ShardingSelectOptimizer.java
+0
-9
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/sql/statement/dml/SelectStatement.java
...gsphere/core/parse/sql/statement/dml/SelectStatement.java
+0
-2
sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/sharding/dml/select_group_by.xml
...-test/src/test/resources/sharding/dml/select_group_by.xml
+0
-9
sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/sharding/dml/select_sub_query.xml
...test/src/test/resources/sharding/dml/select_sub_query.xml
+0
-3
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/generator/OrderByTokenGenerator.java
...e/core/rewrite/token/generator/OrderByTokenGenerator.java
+1
-1
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
...sphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
+4
-2
未找到文件。
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/engine/sharding/dml/ShardingSelectOptimizeEngine.java
浏览文件 @
6895e03c
...
...
@@ -79,6 +79,7 @@ public final class ShardingSelectOptimizeEngine implements OptimizeEngine {
ShardingSelectOptimizedStatement
result
=
new
ShardingSelectOptimizedStatement
(
selectStatement
,
new
ArrayList
<>(
shardingConditionEngine
.
createShardingConditions
(
selectStatement
,
parameters
)),
encryptConditionEngine
.
createEncryptConditions
(
selectStatement
),
appendAverageDerivedColumns
(
items
));
appendDerivedOrderBy
(
result
);
setPagination
(
result
);
return
result
;
}
...
...
@@ -220,6 +221,13 @@ public final class ShardingSelectOptimizeEngine implements OptimizeEngine {
return
!
selectItem
.
getAlias
().
isPresent
()
&&
selectItem
.
getExpression
().
equalsIgnoreCase
(
orderItem
.
getText
());
}
private
void
appendDerivedOrderBy
(
final
ShardingSelectOptimizedStatement
optimizedStatement
)
{
if
(!
optimizedStatement
.
getGroupByItems
().
isEmpty
()
&&
optimizedStatement
.
getOrderByItems
().
isEmpty
())
{
optimizedStatement
.
getOrderByItems
().
addAll
(
optimizedStatement
.
getGroupByItems
());
optimizedStatement
.
setToAppendOrderByItems
(
true
);
}
}
private
void
setPagination
(
final
ShardingSelectOptimizedStatement
optimizedStatement
)
{
if
(
null
!=
selectStatement
.
getOffset
()
||
null
!=
selectStatement
.
getRowCount
())
{
optimizedStatement
.
setPagination
(
new
Pagination
(
selectStatement
.
getOffset
(),
selectStatement
.
getRowCount
(),
parameters
));
...
...
sharding-core/sharding-core-optimize/src/main/java/org/apache/shardingsphere/core/optimize/statement/sharding/dml/select/ShardingSelectOptimizedStatement.java
浏览文件 @
6895e03c
...
...
@@ -61,6 +61,8 @@ public final class ShardingSelectOptimizedStatement extends ShardingWhereOptimiz
private
final
List
<
OrderByItem
>
groupByItems
;
private
boolean
toAppendOrderByItems
;
private
Pagination
pagination
;
public
ShardingSelectOptimizedStatement
(
final
SQLStatement
sqlStatement
,
...
...
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/optimizer/select/ShardingSelectOptimizer.java
浏览文件 @
6895e03c
...
...
@@ -19,7 +19,6 @@ package org.apache.shardingsphere.core.parse.optimizer.select;
import
org.apache.shardingsphere.core.parse.optimizer.SQLStatementOptimizer
;
import
org.apache.shardingsphere.core.parse.sql.statement.SQLStatement
;
import
org.apache.shardingsphere.core.parse.sql.statement.dml.SelectStatement
;
/**
* Select optimizer for sharding.
...
...
@@ -31,13 +30,5 @@ public final class ShardingSelectOptimizer implements SQLStatementOptimizer {
@Override
public
void
optimize
(
final
SQLStatement
sqlStatement
)
{
appendDerivedOrderBy
((
SelectStatement
)
sqlStatement
);
}
private
void
appendDerivedOrderBy
(
final
SelectStatement
selectStatement
)
{
if
(!
selectStatement
.
getGroupByItems
().
isEmpty
()
&&
selectStatement
.
getOrderByItems
().
isEmpty
())
{
selectStatement
.
getOrderByItems
().
addAll
(
selectStatement
.
getGroupByItems
());
selectStatement
.
setToAppendOrderByItems
(
true
);
}
}
}
sharding-core/sharding-core-parse/sharding-core-parse-common/src/main/java/org/apache/shardingsphere/core/parse/sql/statement/dml/SelectStatement.java
浏览文件 @
6895e03c
...
...
@@ -50,8 +50,6 @@ public final class SelectStatement extends DMLStatement {
private
final
List
<
OrderByItemSegment
>
orderByItems
=
new
LinkedList
<>();
private
boolean
toAppendOrderByItems
;
private
boolean
containStar
;
private
boolean
containsSubquery
;
...
...
sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/sharding/dml/select_group_by.xml
浏览文件 @
6895e03c
...
...
@@ -169,9 +169,6 @@
<group-by-columns>
<group-by-column
name=
"user_id"
owner=
"o"
order-direction=
"ASC"
/>
</group-by-columns>
<order-by-columns>
<order-by-column
name=
"user_id"
owner=
"o"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_group_by_with_limit"
parameters=
"5"
>
...
...
@@ -249,9 +246,6 @@
<group-by-columns>
<group-by-column
name=
"date_format(creation_date,'%y-%m-%d')"
order-direction=
"ASC"
/>
</group-by-columns>
<order-by-columns>
<order-by-column
name=
"date_format(creation_date,'%y-%m-%d')"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_group_by_with_keyword_alias"
>
...
...
@@ -269,9 +263,6 @@
<group-by-columns>
<group-by-column
name=
"key"
alias=
"key"
order-direction=
"ASC"
/>
</group-by-columns>
<order-by-columns>
<order-by-column
name=
"key"
alias=
"key"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
<parser-result
sql-case-id=
"select_group_by_with_count_without_column_name"
>
...
...
sharding-core/sharding-core-parse/sharding-core-parse-test/src/test/resources/sharding/dml/select_sub_query.xml
浏览文件 @
6895e03c
...
...
@@ -81,8 +81,5 @@
<group-by-columns>
<group-by-column
name=
"order_id"
order-direction=
"ASC"
/>
</group-by-columns>
<order-by-columns>
<order-by-column
name=
"order_id"
order-direction=
"ASC"
/>
</order-by-columns>
</parser-result>
</parser-result-sets>
sharding-core/sharding-core-rewrite/src/main/java/org/apache/shardingsphere/core/rewrite/token/generator/OrderByTokenGenerator.java
浏览文件 @
6895e03c
...
...
@@ -39,7 +39,7 @@ public final class OrderByTokenGenerator implements OptionalSQLTokenGenerator<Sh
if
(!(
optimizedStatement
instanceof
ShardingSelectOptimizedStatement
))
{
return
Optional
.
absent
();
}
if
(((
S
electStatement
)
optimizedStatement
.
getSQLStatement
()
).
isToAppendOrderByItems
())
{
if
(((
S
hardingSelectOptimizedStatement
)
optimizedStatement
).
isToAppendOrderByItems
())
{
return
Optional
.
of
(
createOrderByToken
((
ShardingSelectOptimizedStatement
)
optimizedStatement
));
}
return
Optional
.
absent
();
...
...
sharding-core/sharding-core-rewrite/src/test/java/org/apache/shardingsphere/core/rewrite/rewriter/ShardingSQLRewriterTest.java
浏览文件 @
6895e03c
...
...
@@ -533,7 +533,6 @@ public final class ShardingSQLRewriterTest {
@Test
public
void
assertRewriteForDerivedOrderBy
()
{
selectStatement
.
setGroupByLastIndex
(
60
);
selectStatement
.
setToAppendOrderByItems
(
true
);
ColumnSegment
columnSegment1
=
new
ColumnSegment
(
0
,
0
,
"id"
);
columnSegment1
.
setOwner
(
new
TableSegment
(
0
,
0
,
"x"
));
ColumnSegment
columnSegment2
=
new
ColumnSegment
(
0
,
0
,
"name"
);
...
...
@@ -543,7 +542,10 @@ public final class ShardingSQLRewriterTest {
selectStatement
.
getGroupByItems
().
add
(
new
ColumnOrderByItemSegment
(
0
,
0
,
columnSegment2
,
OrderDirection
.
DESC
,
OrderDirection
.
ASC
));
selectStatement
.
getOrderByItems
().
add
(
new
ColumnOrderByItemSegment
(
0
,
0
,
columnSegment2
,
OrderDirection
.
DESC
,
OrderDirection
.
ASC
));
selectStatement
.
getSQLSegments
().
add
(
new
TableSegment
(
25
,
31
,
"table_x"
));
routeResult
=
new
SQLRouteResult
(
new
ShardingSelectOptimizedStatement
(
selectStatement
,
Collections
.<
ShardingCondition
>
emptyList
(),
new
AndCondition
(),
selectStatement
.
getItems
()));
ShardingSelectOptimizedStatement
optimizedStatement
=
new
ShardingSelectOptimizedStatement
(
selectStatement
,
Collections
.<
ShardingCondition
>
emptyList
(),
new
AndCondition
(),
selectStatement
.
getItems
());
optimizedStatement
.
setToAppendOrderByItems
(
true
);
routeResult
=
new
SQLRouteResult
(
optimizedStatement
);
routeResult
.
setRoutingResult
(
new
RoutingResult
());
selectStatement
.
setLogicSQL
(
"SELECT x.id, x.name FROM table_x x GROUP BY x.id, x.name DESC"
);
SQLRewriteEngine
rewriteEngine
=
createSQLRewriteEngine
(
Collections
.
emptyList
());
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录