Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
536d9bb9
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,发现更多精彩内容 >>
提交
536d9bb9
编写于
2月 08, 2016
作者:
H
Heikki Linnakangas
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix xlogdump to work with Greenplum.
上级
1ecf4ab6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
34 addition
and
25 deletion
+34
-25
contrib/xlogdump/xlogdump.c
contrib/xlogdump/xlogdump.c
+6
-6
contrib/xlogdump/xlogdump_rmgr.c
contrib/xlogdump/xlogdump_rmgr.c
+28
-19
未找到文件。
contrib/xlogdump/xlogdump.c
浏览文件 @
536d9bb9
...
...
@@ -228,8 +228,8 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr)
char
*
blk
;
/* First the rmgr data */
INIT_CRC32
(
crc
);
COMP_CRC32
(
crc
,
XLogRecGetData
(
record
),
len
);
INIT_CRC32
C
(
crc
);
COMP_CRC32
C
(
crc
,
XLogRecGetData
(
record
),
len
);
/* Add in the backup blocks, if any */
blk
=
(
char
*
)
XLogRecGetData
(
record
)
+
len
;
...
...
@@ -248,7 +248,7 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr)
return
false
;
}
blen
=
sizeof
(
BkpBlock
)
+
BLCKSZ
-
bkpb
.
hole_length
;
COMP_CRC32
(
crc
,
blk
,
blen
);
COMP_CRC32
C
(
crc
,
blk
,
blen
);
blk
+=
blen
;
}
...
...
@@ -270,11 +270,11 @@ RecordIsValid(XLogRecord *record, XLogRecPtr recptr)
}
/* Finally include the record header */
COMP_CRC32
(
crc
,
(
char
*
)
record
+
sizeof
(
pg_crc32
),
COMP_CRC32
C
(
crc
,
(
char
*
)
record
+
sizeof
(
pg_crc32
),
SizeOfXLogRecord
-
sizeof
(
pg_crc32
));
FIN_CRC32
(
crc
);
FIN_CRC32
C
(
crc
);
if
(
!
EQ_CRC32
(
record
->
xl_crc
,
crc
))
if
(
!
EQ_CRC32
C
(
record
->
xl_crc
,
crc
))
{
printf
(
"incorrect resource manager data checksum in record at %X/%X
\n
"
,
recptr
.
xlogid
,
recptr
.
xrecoff
);
...
...
contrib/xlogdump/xlogdump_rmgr.c
浏览文件 @
536d9bb9
...
...
@@ -294,7 +294,8 @@ print_rmgr_xact(XLogRecPtr cur, XLogRecord *record, uint8 info, bool hideTimesta
snprintf
(
buf
,
sizeof
(
buf
),
"d/s:%d/%d commit at %s"
,
xlrec
.
dbId
,
xlrec
.
tsId
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
xact_time
)));
#elif PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
*/
#elif PG_VERSION_NUM >= 80300 && 0
snprintf
(
buf
,
sizeof
(
buf
),
"commit at %s"
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
xact_time
)));
#else
...
...
@@ -314,7 +315,8 @@ print_rmgr_xact(XLogRecPtr cur, XLogRecord *record, uint8 info, bool hideTimesta
xl_xact_abort
xlrec
;
memcpy
(
&
xlrec
,
XLogRecGetData
(
record
),
sizeof
(
xlrec
));
snprintf
(
buf
,
sizeof
(
buf
),
"abort at %s"
,
#if PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#if PG_VERSION_NUM >= 80300 && 0
str_time
(
_timestamptz_to_time_t
(
xlrec
.
xact_time
)));
#else
str_time
(
_timestamptz_to_time_t
(
xlrec
.
xtime
)));
...
...
@@ -333,7 +335,8 @@ print_rmgr_xact(XLogRecPtr cur, XLogRecord *record, uint8 info, bool hideTimesta
xlrec
.
xid
,
xlrec
.
crec
.
dbId
,
xlrec
.
crec
.
tsId
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
crec
.
xact_time
)));
#elif PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#elif PG_VERSION_NUM >= 80300 && 0
snprintf
(
buf
,
sizeof
(
buf
),
"commit prepared xid:%d, commit at %s"
,
xlrec
.
xid
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
crec
.
xact_time
)));
...
...
@@ -355,7 +358,8 @@ print_rmgr_xact(XLogRecPtr cur, XLogRecord *record, uint8 info, bool hideTimesta
xlrec
.
xid
,
xlrec
.
crec
.
dbId
,
xlrec
.
crec
.
tsId
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
crec
.
xact_time
)));
#elif PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#elif PG_VERSION_NUM >= 80300 && 0
snprintf
(
buf
,
sizeof
(
buf
),
"abort prepared xid:%d, commit at %s"
,
xlrec
.
xid
,
str_time
(
_timestamptz_to_time_t
(
xlrec
.
crec
.
xact_time
)));
...
...
@@ -496,6 +500,7 @@ print_rmgr_dbase(XLogRecPtr cur, XLogRecord *record, uint8 info)
}
break
;
#if 0 /* Doesn't exist in GPDB */
case XLOG_DBASE_DROP:
{
xl_dbase_drop_rec *xlrec = (xl_dbase_drop_rec *)XLogRecGetData(record);
...
...
@@ -504,6 +509,7 @@ print_rmgr_dbase(XLogRecPtr cur, XLogRecord *record, uint8 info)
xlrec->tablespace_id);
}
break;
#endif
default:
snprintf
(
buf
,
sizeof
(
buf
),
"unknown DBASE operation - %d."
,
info
);
...
...
@@ -613,15 +619,16 @@ print_rmgr_heap2(XLogRecPtr cur, XLogRecord *record, uint8 info)
xl_heap_freeze
xlrec
;
memcpy
(
&
xlrec
,
XLogRecGetData
(
record
),
sizeof
(
xlrec
));
snprintf
(
buf
,
sizeof
(
buf
),
"freeze: ts %d db %d rel %d block %d cutoff_xid %d"
,
xlrec
.
node
.
spcNode
,
xlrec
.
node
.
dbNode
,
xlrec
.
node
.
relNode
,
xlrec
.
heapnode
.
node
.
spcNode
,
xlrec
.
heapnode
.
node
.
dbNode
,
xlrec
.
heapnode
.
node
.
relNode
,
xlrec
.
block
,
xlrec
.
cutoff_xid
);
}
break
;
#if PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#if PG_VERSION_NUM >= 80300 && 0
case
XLOG_HEAP2_CLEAN
:
#if PG_VERSION_NUM < 90000
case
XLOG_HEAP2_CLEAN_MOVE
:
...
...
@@ -776,7 +783,8 @@ print_rmgr_heap(XLogRecPtr cur, XLogRecord *record, uint8 info, bool statements)
break
;
}
case
XLOG_HEAP_UPDATE
:
#if PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#if PG_VERSION_NUM >= 80300 && 0
case
XLOG_HEAP_HOT_UPDATE
:
#endif
{
...
...
@@ -791,7 +799,8 @@ print_rmgr_heap(XLogRecPtr cur, XLogRecord *record, uint8 info, bool statements)
printUpdate
((
xl_heap_update
*
)
XLogRecGetData
(
record
),
record
->
xl_len
-
SizeOfHeapUpdate
-
SizeOfHeapHeader
,
relName
);
snprintf
(
buf
,
sizeof
(
buf
),
"%supdate%s: s/d/r:%s/%s/%s block %u off %u to block %u off %u"
,
#if PG_VERSION_NUM >= 80300
/* 83MERGE_FIXME_HL: re-enable this after merging the relevant change */
#if PG_VERSION_NUM >= 80300 && 0
(
info
&
XLOG_HEAP_HOT_UPDATE
)
?
"hot_"
:
""
,
#else
""
,
...
...
@@ -836,9 +845,9 @@ print_rmgr_heap(XLogRecPtr cur, XLogRecord *record, uint8 info, bool statements)
xl_heap_newpage
xlrec
;
memcpy
(
&
xlrec
,
XLogRecGetData
(
record
),
sizeof
(
xlrec
));
getSpaceName
(
xlrec
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
getSpaceName
(
xlrec
.
heapnode
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
heapnode
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
heapnode
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
snprintf
(
buf
,
sizeof
(
buf
),
"newpage: s/d/r:%s/%s/%s block %u"
,
spaceName
,
dbName
,
relName
,
xlrec
.
blkno
);
...
...
@@ -1071,9 +1080,9 @@ print_rmgr_btree(XLogRecPtr cur, XLogRecord *record, uint8 info)
xl_btree_delete
xlrec
;
memcpy
(
&
xlrec
,
XLogRecGetData
(
record
),
sizeof
(
xlrec
));
getSpaceName
(
xlrec
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
getSpaceName
(
xlrec
.
btreenode
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
btreenode
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
btreenode
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
snprintf
(
buf
,
sizeof
(
buf
),
"delete: s/d/r:%s/%s/%s block %u"
,
spaceName
,
dbName
,
relName
,
xlrec
.
block
);
...
...
@@ -1121,9 +1130,9 @@ print_rmgr_btree(XLogRecPtr cur, XLogRecord *record, uint8 info)
xl_btree_newroot
xlrec
;
memcpy
(
&
xlrec
,
XLogRecGetData
(
record
),
sizeof
(
xlrec
));
getSpaceName
(
xlrec
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
getSpaceName
(
xlrec
.
btreenode
.
node
.
spcNode
,
spaceName
,
sizeof
(
spaceName
));
getDbName
(
xlrec
.
btreenode
.
node
.
dbNode
,
dbName
,
sizeof
(
dbName
));
getRelName
(
xlrec
.
btreenode
.
node
.
relNode
,
relName
,
sizeof
(
relName
));
snprintf
(
buf
,
sizeof
(
buf
),
"newroot: s/d/r:%s/%s/%s rootblk %u level %u"
,
spaceName
,
dbName
,
relName
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录