Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
5a3022fd
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,发现更多精彩内容 >>
提交
5a3022fd
编写于
5月 14, 2015
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pg_upgrade: make controldata checks more consistent
Also add missing float8_pass_by_value check.
上级
a486e357
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
27 addition
and
29 deletion
+27
-29
src/bin/pg_upgrade/controldata.c
src/bin/pg_upgrade/controldata.c
+27
-28
src/bin/pg_upgrade/pg_upgrade.h
src/bin/pg_upgrade/pg_upgrade.h
+0
-1
未找到文件。
src/bin/pg_upgrade/controldata.c
浏览文件 @
5a3022fd
...
...
@@ -154,23 +154,6 @@ get_control_data(ClusterInfo *cluster, bool live_check)
p
++
;
/* remove ':' char */
cluster
->
controldata
.
cat_ver
=
str2uint
(
p
);
}
else
if
((
p
=
strstr
(
bufin
,
"First log segment after reset:"
))
!=
NULL
)
{
/* Skip the colon and any whitespace after it */
p
=
strchr
(
p
,
':'
);
if
(
p
==
NULL
||
strlen
(
p
)
<=
1
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
p
=
strpbrk
(
p
,
"01234567890ABCDEF"
);
if
(
p
==
NULL
||
strlen
(
p
)
<=
1
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
/* Make sure it looks like a valid WAL file name */
if
(
strspn
(
p
,
"0123456789ABCDEF"
)
!=
24
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
strlcpy
(
cluster
->
controldata
.
nextxlogfile
,
p
,
25
);
got_nextxlogfile
=
true
;
}
else
if
((
p
=
strstr
(
bufin
,
"First log file ID after reset:"
))
!=
NULL
)
{
p
=
strchr
(
p
,
':'
);
...
...
@@ -201,7 +184,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
p
++
;
/* remove ':' char */
cluster
->
controldata
.
chkpnt_
tli
=
str2uint
(
p
);
tli
=
str2uint
(
p
);
got_tli
=
true
;
}
else
if
((
p
=
strstr
(
bufin
,
"Latest checkpoint's NextXID:"
))
!=
NULL
)
...
...
@@ -266,6 +249,23 @@ get_control_data(ClusterInfo *cluster, bool live_check)
cluster
->
controldata
.
chkpnt_nxtmxoff
=
str2uint
(
p
);
got_mxoff
=
true
;
}
else
if
((
p
=
strstr
(
bufin
,
"First log segment after reset:"
))
!=
NULL
)
{
/* Skip the colon and any whitespace after it */
p
=
strchr
(
p
,
':'
);
if
(
p
==
NULL
||
strlen
(
p
)
<=
1
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
p
=
strpbrk
(
p
,
"01234567890ABCDEF"
);
if
(
p
==
NULL
||
strlen
(
p
)
<=
1
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
/* Make sure it looks like a valid WAL file name */
if
(
strspn
(
p
,
"0123456789ABCDEF"
)
!=
24
)
pg_fatal
(
"%d: controldata retrieval problem
\n
"
,
__LINE__
);
strlcpy
(
cluster
->
controldata
.
nextxlogfile
,
p
,
25
);
got_nextxlogfile
=
true
;
}
else
if
((
p
=
strstr
(
bufin
,
"Maximum data alignment:"
))
!=
NULL
)
{
p
=
strchr
(
p
,
':'
);
...
...
@@ -436,7 +436,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
*/
if
(
GET_MAJOR_VERSION
(
cluster
->
major_version
)
<=
902
)
{
if
(
got_log_id
&&
got_log_seg
)
if
(
got_
tli
&&
got_
log_id
&&
got_log_seg
)
{
snprintf
(
cluster
->
controldata
.
nextxlogfile
,
25
,
"%08X%08X%08X"
,
tli
,
logid
,
segno
);
...
...
@@ -446,11 +446,10 @@ get_control_data(ClusterInfo *cluster, bool live_check)
/* verify that we got all the mandatory pg_control data */
if
(
!
got_xid
||
!
got_oid
||
!
got_multi
||
!
got_mxoff
||
!
got_multi
||
(
!
got_oldestmulti
&&
cluster
->
controldata
.
cat_ver
>=
MULTIXACT_FORMATCHANGE_CAT_VER
)
||
(
!
live_check
&&
!
got_nextxlogfile
)
||
!
got_tli
||
!
got_mxoff
||
(
!
live_check
&&
!
got_nextxlogfile
)
||
!
got_align
||
!
got_blocksz
||
!
got_largesz
||
!
got_walsz
||
!
got_walseg
||
!
got_ident
||
!
got_index
||
!
got_toast
||
(
!
got_large_object
&&
...
...
@@ -470,19 +469,16 @@ get_control_data(ClusterInfo *cluster, bool live_check)
if
(
!
got_multi
)
pg_log
(
PG_REPORT
,
" latest checkpoint next MultiXactId
\n
"
);
if
(
!
got_mxoff
)
pg_log
(
PG_REPORT
,
" latest checkpoint next MultiXactOffset
\n
"
);
if
(
!
got_oldestmulti
&&
cluster
->
controldata
.
cat_ver
>=
MULTIXACT_FORMATCHANGE_CAT_VER
)
pg_log
(
PG_REPORT
,
" latest checkpoint oldest MultiXactId
\n
"
);
if
(
!
got_mxoff
)
pg_log
(
PG_REPORT
,
" latest checkpoint next MultiXactOffset
\n
"
);
if
(
!
live_check
&&
!
got_nextxlogfile
)
pg_log
(
PG_REPORT
,
" first WAL segment after reset
\n
"
);
if
(
!
got_tli
)
pg_log
(
PG_REPORT
,
" latest checkpoint timeline ID
\n
"
);
if
(
!
got_align
)
pg_log
(
PG_REPORT
,
" maximum alignment
\n
"
);
...
...
@@ -568,6 +564,9 @@ check_control_data(ControlData *oldctrl,
if
(
oldctrl
->
date_is_int
!=
newctrl
->
date_is_int
)
pg_fatal
(
"old and new pg_controldata date/time storage types do not match
\n
"
);
if
(
oldctrl
->
float8_pass_by_value
!=
newctrl
->
float8_pass_by_value
)
pg_fatal
(
"old and new pg_controldata float8 argument passing methods do not match
\n
"
);
/*
* We might eventually allow upgrades from checksum to no-checksum
* clusters.
...
...
src/bin/pg_upgrade/pg_upgrade.h
浏览文件 @
5a3022fd
...
...
@@ -206,7 +206,6 @@ typedef struct
uint32
ctrl_ver
;
uint32
cat_ver
;
char
nextxlogfile
[
25
];
uint32
chkpnt_tli
;
uint32
chkpnt_nxtxid
;
uint32
chkpnt_nxtepoch
;
uint32
chkpnt_nxtoid
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录