Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
dedefffc
提交
dedefffc
authored
6 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix possible NPE in ordered window aggregates with filter
上级
3ed3da43
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
19 行增加
和
10 行删除
+19
-10
changelog.html
h2/src/docsrc/html/changelog.html
+2
-0
DataAnalysisOperation.java
...ain/org/h2/expression/analysis/DataAnalysisOperation.java
+5
-1
array-agg.sql
...est/org/h2/test/scripts/functions/aggregate/array-agg.sql
+12
-9
没有找到文件。
h2/src/docsrc/html/changelog.html
浏览文件 @
dedefffc
...
...
@@ -21,6 +21,8 @@ Change Log
<h2>
Next Version (unreleased)
</h2>
<ul>
<li>
PR #1660: Optimize window aggregates with AND UNBOUNDED FOLLOWING and no exclusions
</li>
<li>
PR #1656: Optimize window aggregates with ORDER BY + UNBOUNDED PRECEDING + no exclusions
</li>
<li>
Issue #1654: OOM in TestMemoryUsage, in big mode
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/expression/analysis/DataAnalysisOperation.java
浏览文件 @
dedefffc
...
...
@@ -345,7 +345,11 @@ public abstract class DataAnalysisOperation extends Expression {
data
=
partition
.
getData
();
}
if
(
forOrderBy
||
!
isAggregate
())
{
return
getOrderedResult
(
session
,
groupData
,
partition
,
data
);
Value
result
=
getOrderedResult
(
session
,
groupData
,
partition
,
data
);
if
(
result
==
null
)
{
return
getAggregatedValue
(
session
,
null
);
}
return
result
;
}
// Window aggregate without ORDER BY clause in window specification
Value
result
=
partition
.
getResult
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/scripts/functions/aggregate/array-agg.sql
浏览文件 @
dedefffc
...
...
@@ -107,15 +107,18 @@ SELECT ARRAY_AGG(ID ORDER BY ID) OVER (PARTITION BY NAME), NAME FROM TEST;
>
[
4
,
5
,
6
]
c
>
rows
:
6
SELECT
ARRAY_AGG
(
ID
ORDER
BY
ID
)
FILTER
(
WHERE
ID
<
3
OR
ID
>
4
)
OVER
(
PARTITION
BY
NAME
),
NAME
FROM
TEST
ORDER
BY
NAME
;
>
ARRAY_AGG
(
ID
ORDER
BY
ID
)
FILTER
(
WHERE
((
ID
<
3
)
OR
(
ID
>
4
)))
OVER
(
PARTITION
BY
NAME
)
NAME
>
---------------------------------------------------------------------------------------- ----
>
[
1
,
2
]
a
>
[
1
,
2
]
a
>
null
b
>
[
5
,
6
]
c
>
[
5
,
6
]
c
>
[
5
,
6
]
c
SELECT
ARRAY_AGG
(
ID
ORDER
BY
ID
)
FILTER
(
WHERE
ID
<
3
OR
ID
>
4
)
OVER
(
PARTITION
BY
NAME
)
A
,
ARRAY_AGG
(
ID
ORDER
BY
ID
)
FILTER
(
WHERE
ID
<
3
OR
ID
>
4
)
OVER
(
PARTITION
BY
NAME
ORDER
BY
ID
)
AO
,
ID
,
NAME
FROM
TEST
ORDER
BY
ID
;
>
A
AO
ID
NAME
>
------ ------ -- ----
>
[
1
,
2
]
[
1
]
1
a
>
[
1
,
2
]
[
1
,
2
]
2
a
>
null
null
3
b
>
[
5
,
6
]
null
4
c
>
[
5
,
6
]
[
5
]
5
c
>
[
5
,
6
]
[
5
,
6
]
6
c
>
rows
(
ordered
):
6
SELECT
ARRAY_AGG
(
SUM
(
ID
))
OVER
()
FROM
TEST
;
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论