Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
41baee7a
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
41baee7a
编写于
2月 05, 2016
作者:
N
Noah Misch
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Comment on dead code in AtAbort_Portals() and AtSubAbort_Portals().
Reviewed by Tom Lane and Robert Haas.
上级
f4aa3a18
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
16 addition
and
4 deletion
+16
-4
src/backend/utils/mmgr/portalmem.c
src/backend/utils/mmgr/portalmem.c
+16
-4
未找到文件。
src/backend/utils/mmgr/portalmem.c
浏览文件 @
41baee7a
...
...
@@ -765,7 +765,14 @@ AtAbort_Portals(void)
{
Portal
portal
=
hentry
->
portal
;
/* Any portal that was actually running has to be considered broken */
/*
* See similar code in AtSubAbort_Portals(). This would fire if code
* orchestrating multiple top-level transactions within a portal, such
* as VACUUM, caught errors and continued under the same portal with a
* fresh transaction. No part of core PostgreSQL functions that way.
* XXX Such code would wish the portal to remain ACTIVE, as in
* PreCommit_Portals().
*/
if
(
portal
->
status
==
PORTAL_ACTIVE
)
MarkPortalFailed
(
portal
);
...
...
@@ -919,9 +926,10 @@ AtSubAbort_Portals(SubTransactionId mySubid,
portal
->
activeSubid
=
parentSubid
;
/*
* Upper-level portals that failed while running in this
* subtransaction must be forced into FAILED state, for the
* same reasons discussed below.
* A MarkPortalActive() caller ran an upper-level portal in
* this subtransaction and left the portal ACTIVE. This can't
* happen, but force the portal into FAILED state for the same
* reasons discussed below.
*
* We assume we can get away without forcing upper-level READY
* portals to fail, even if they were run and then suspended.
...
...
@@ -961,6 +969,10 @@ AtSubAbort_Portals(SubTransactionId mySubid,
* We have to do this because they might refer to objects created or
* changed in the failed subtransaction, leading to crashes within
* ExecutorEnd when portalcmds.c tries to close down the portal.
* Currently, every MarkPortalActive() caller ensures it updates the
* portal status again before relinquishing control, so ACTIVE can't
* happen here. If it does happen, dispose the portal like existing
* MarkPortalActive() callers would.
*/
if
(
portal
->
status
==
PORTAL_READY
||
portal
->
status
==
PORTAL_ACTIVE
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录