Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
9789c99d
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,发现更多精彩内容 >>
提交
9789c99d
编写于
2月 21, 2012
作者:
T
Tom Lane
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Cosmetic cleanup for commit
a760893d
.
Mostly, fixing overlooked comments.
上级
c2a2f751
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
15 deletion
+31
-15
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtpage.c
+21
-7
src/backend/access/nbtree/nbtree.c
src/backend/access/nbtree/nbtree.c
+6
-5
src/backend/access/nbtree/nbtxlog.c
src/backend/access/nbtree/nbtxlog.c
+2
-2
src/include/access/nbtree.h
src/include/access/nbtree.h
+2
-1
未找到文件。
src/backend/access/nbtree/nbtpage.c
浏览文件 @
9789c99d
...
...
@@ -715,7 +715,7 @@ _bt_page_recyclable(Page page)
}
/*
* Delete item(s) from a btree page.
* Delete item(s) from a btree page
during VACUUM
.
*
* This must only be used for deleting leaf items. Deleting an item on a
* non-leaf page has to be done as part of an atomic action that includes
...
...
@@ -736,7 +736,8 @@ _bt_page_recyclable(Page page)
*/
void
_bt_delitems_vacuum
(
Relation
rel
,
Buffer
buf
,
OffsetNumber
*
itemnos
,
int
nitems
,
BlockNumber
lastBlockVacuumed
)
OffsetNumber
*
itemnos
,
int
nitems
,
BlockNumber
lastBlockVacuumed
)
{
Page
page
=
BufferGetPage
(
buf
);
BTPageOpaque
opaque
;
...
...
@@ -771,7 +772,6 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
{
XLogRecPtr
recptr
;
XLogRecData
rdata
[
2
];
xl_btree_vacuum
xlrec_vacuum
;
xlrec_vacuum
.
node
=
rel
->
rd_node
;
...
...
@@ -811,13 +811,27 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
END_CRIT_SECTION
();
}
/*
* Delete item(s) from a btree page during single-page cleanup.
*
* As above, must only be used on leaf pages.
*
* This routine assumes that the caller has pinned and locked the buffer.
* Also, the given itemnos *must* appear in increasing order in the array.
*
* This is nearly the same as _bt_delitems_vacuum as far as what it does to
* the page, but the WAL logging considerations are quite different. See
* comments for _bt_delitems_vacuum.
*/
void
_bt_delitems_delete
(
Relation
rel
,
Buffer
buf
,
OffsetNumber
*
itemnos
,
int
nitems
,
Relation
heapRel
)
OffsetNumber
*
itemnos
,
int
nitems
,
Relation
heapRel
)
{
Page
page
=
BufferGetPage
(
buf
);
BTPageOpaque
opaque
;
/* Shouldn't be called unless there's something to do */
Assert
(
nitems
>
0
);
/* No ereport(ERROR) until changes are logged */
...
...
@@ -849,7 +863,6 @@ _bt_delitems_delete(Relation rel, Buffer buf,
{
XLogRecPtr
recptr
;
XLogRecData
rdata
[
3
];
xl_btree_delete
xlrec_delete
;
xlrec_delete
.
node
=
rel
->
rd_node
;
...
...
@@ -863,8 +876,9 @@ _bt_delitems_delete(Relation rel, Buffer buf,
rdata
[
0
].
next
=
&
(
rdata
[
1
]);
/*
* We need the target-offsets array whether or not we store the to
* allow us to find the latestRemovedXid on a standby server.
* We need the target-offsets array whether or not we store the whole
* buffer, to allow us to find the latestRemovedXid on a standby
* server.
*/
rdata
[
1
].
data
=
(
char
*
)
itemnos
;
rdata
[
1
].
len
=
nitems
*
sizeof
(
OffsetNumber
);
...
...
src/backend/access/nbtree/nbtree.c
浏览文件 @
9789c99d
...
...
@@ -1004,14 +1004,15 @@ restart:
}
/*
* Apply any needed deletes. We issue just one _bt_delitems
() call
* per page, so as to minimize WAL traffic.
* Apply any needed deletes. We issue just one _bt_delitems
_vacuum()
*
call
per page, so as to minimize WAL traffic.
*/
if
(
ndeletable
>
0
)
{
BlockNumber
lastBlockVacuumed
=
BufferGetBlockNumber
(
buf
);
_bt_delitems_vacuum
(
rel
,
buf
,
deletable
,
ndeletable
,
vstate
->
lastBlockVacuumed
);
_bt_delitems_vacuum
(
rel
,
buf
,
deletable
,
ndeletable
,
vstate
->
lastBlockVacuumed
);
/*
* Keep track of the block number of the lastBlockVacuumed, so we
...
...
@@ -1031,8 +1032,8 @@ restart:
/*
* If the page has been split during this vacuum cycle, it seems
* worth expending a write to clear btpo_cycleid even if we don't
* have any deletions to do. (If we do, _bt_delitems
takes care
* of this.) This ensures we won't process the page again.
* have any deletions to do. (If we do, _bt_delitems
_vacuum takes
*
care
of this.) This ensures we won't process the page again.
*
* We treat this like a hint-bit update because there's no need to
* WAL-log it.
...
...
src/backend/access/nbtree/nbtxlog.c
浏览文件 @
9789c99d
...
...
@@ -539,7 +539,7 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record)
/*
* Mark the page as not containing any LP_DEAD items --- see comments in
* _bt_delitems().
* _bt_delitems
_vacuum
().
*/
opaque
=
(
BTPageOpaque
)
PageGetSpecialPointer
(
page
);
opaque
->
btpo_flags
&=
~
BTP_HAS_GARBAGE
;
...
...
@@ -720,7 +720,7 @@ btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record)
/*
* Mark the page as not containing any LP_DEAD items --- see comments in
* _bt_delitems().
* _bt_delitems
_delete
().
*/
opaque
=
(
BTPageOpaque
)
PageGetSpecialPointer
(
page
);
opaque
->
btpo_flags
&=
~
BTP_HAS_GARBAGE
;
...
...
src/include/access/nbtree.h
浏览文件 @
9789c99d
...
...
@@ -635,7 +635,8 @@ extern bool _bt_page_recyclable(Page page);
extern
void
_bt_delitems_delete
(
Relation
rel
,
Buffer
buf
,
OffsetNumber
*
itemnos
,
int
nitems
,
Relation
heapRel
);
extern
void
_bt_delitems_vacuum
(
Relation
rel
,
Buffer
buf
,
OffsetNumber
*
itemnos
,
int
nitems
,
BlockNumber
lastBlockVacuumed
);
OffsetNumber
*
itemnos
,
int
nitems
,
BlockNumber
lastBlockVacuumed
);
extern
int
_bt_pagedel
(
Relation
rel
,
Buffer
buf
,
BTStack
stack
);
/*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录