Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
Shardingsphere
提交
869efcd5
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,发现更多精彩内容 >>
提交
869efcd5
编写于
6月 30, 2017
作者:
T
terrymanu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor StreamingOrderByReducerResultSet
上级
f1caee0c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
15 deletion
+15
-15
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/pipeline/reducer/StreamingOrderByReducerResultSet.java
...er/pipeline/reducer/StreamingOrderByReducerResultSet.java
+15
-15
未找到文件。
sharding-jdbc-core/src/main/java/com/dangdang/ddframe/rdb/sharding/merger/pipeline/reducer/StreamingOrderByReducerResultSet.java
浏览文件 @
869efcd5
...
...
@@ -39,48 +39,48 @@ import java.util.Queue;
@Slf4j
public
final
class
StreamingOrderByReducerResultSet
extends
AbstractDelegateResultSet
{
private
final
Queue
<
ResultSetOrderByWrapper
>
delegateResultSet
Queue
;
private
final
Queue
<
ComparableResultSet
>
priority
Queue
;
private
final
List
<
OrderItem
>
orderItems
;
public
StreamingOrderByReducerResultSet
(
final
ResultSetMergeContext
resultSetMergeContext
)
throws
SQLException
{
super
(
resultSetMergeContext
.
getShardingResultSets
().
getResultSets
());
delegateResultSet
Queue
=
new
PriorityQueue
<>(
getResultSets
().
size
());
priority
Queue
=
new
PriorityQueue
<>(
getResultSets
().
size
());
orderItems
=
resultSetMergeContext
.
getCurrentOrderByKeys
();
}
@Override
protected
boolean
firstNext
()
throws
SQLException
{
for
(
ResultSet
each
:
getResultSets
())
{
ResultSetOrderByWrapper
wrapper
=
new
ResultSetOrderByWrapper
(
each
);
if
(
wrapper
.
next
())
{
delegateResultSetQueue
.
offer
(
wrapper
);
ComparableResultSet
comparableResultSet
=
new
ComparableResultSet
(
each
);
if
(
comparableResultSet
.
next
())
{
priorityQueue
.
offer
(
comparableResultSet
);
}
}
return
do
Next
();
return
has
Next
();
}
@Override
protected
boolean
afterFirstNext
()
throws
SQLException
{
ResultSetOrderByWrapper
firstResultSet
=
delegateResultSet
Queue
.
poll
();
ComparableResultSet
firstResultSet
=
priority
Queue
.
poll
();
setDelegate
(
firstResultSet
.
resultSet
);
if
(
firstResultSet
.
next
())
{
delegateResultSet
Queue
.
offer
(
firstResultSet
);
priority
Queue
.
offer
(
firstResultSet
);
}
return
do
Next
();
return
has
Next
();
}
private
boolean
do
Next
()
{
if
(
delegateResultSet
Queue
.
isEmpty
())
{
private
boolean
has
Next
()
{
if
(
priority
Queue
.
isEmpty
())
{
return
false
;
}
setDelegate
(
delegateResultSet
Queue
.
peek
().
resultSet
);
log
.
trace
(
"Chosen order by value: {}
, current result set hashcode: {}"
,
delegateResultSetQueue
.
peek
().
row
,
getDelegate
().
hashCode
()
);
setDelegate
(
priority
Queue
.
peek
().
resultSet
);
log
.
trace
(
"Chosen order by value: {}
"
,
priorityQueue
.
peek
().
row
);
return
true
;
}
@RequiredArgsConstructor
private
class
ResultSetOrderByWrapper
implements
Comparable
<
ResultSetOrderByWrapper
>
{
private
class
ComparableResultSet
implements
Comparable
<
ComparableResultSet
>
{
private
final
ResultSet
resultSet
;
...
...
@@ -95,7 +95,7 @@ public final class StreamingOrderByReducerResultSet extends AbstractDelegateResu
}
@Override
public
int
compareTo
(
final
ResultSetOrderByWrapper
o
)
{
public
int
compareTo
(
final
ComparableResultSet
o
)
{
return
row
.
compareTo
(
o
.
row
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录