!6707 解决内置函数query_node_reform_info部分回放时间/构建时间字段获取异常问题

Merge pull request !6707 from zhangyukai/bugfix_query
This commit is contained in:
opengauss_bot
2024-11-25 09:31:25 +00:00
committed by Gitee
2 changed files with 25 additions and 4 deletions

View File

@ -15291,14 +15291,26 @@ Datum query_node_reform_info(PG_FUNCTION_ARGS)
values[4] = BoolGetDatum(reform_info.reform_success);
if (reform_info.reform_type == DMS_REFORM_TYPE_FOR_FAILOVER_OPENGAUSS) {
values[5] = TimestampTzGetDatum(reform_info.redo_start_time);
if (reform_info.redo_start_time > reform_info.redo_end_time) {
if (reform_info.redo_start_time == 0) {
nulls[5] = true;
} else {
values[5] = TimestampTzGetDatum(reform_info.redo_start_time);
}
if ((reform_info.redo_start_time > reform_info.redo_end_time) || reform_info.redo_end_time == 0) {
nulls[6] = true;
} else {
values[6] = TimestampTzGetDatum(reform_info.redo_end_time);
}
values[7] = UInt64GetDatum(reform_info.redo_total_bytes);
values[8] = TimestampTzGetDatum(reform_info.construct_hashmap);
if (reform_info.redo_total_bytes == 0) {
nulls[7] = true;
} else {
values[7] = UInt64GetDatum(reform_info.redo_total_bytes);
}
if (reform_info.construct_hashmap == 0) {
nulls[8] = true;
} else {
values[8] = TimestampTzGetDatum(reform_info.construct_hashmap);
}
} else {
values[7] = UInt64GetDatum(-1);
nulls[5] = true;

View File

@ -58,6 +58,14 @@
static void ReleaseResource();
static inline void IniRedoInfo()
{
g_instance.dms_cxt.SSReformInfo.redo_start_time = 0;
g_instance.dms_cxt.SSReformInfo.redo_end_time = 0;
g_instance.dms_cxt.SSReformInfo.construct_hashmap = 0;
g_instance.dms_cxt.SSReformInfo.redo_total_bytes = 0;
}
/*
* Wake up startup process to replay WAL, or to notice that
* failover has been requested.
@ -2069,6 +2077,7 @@ static void CBReformStartNotify(void *db_handle, dms_reform_start_context_t *rs_
reform_info->bitmap_nodes = rs_cxt->bitmap_participated;
reform_info->bitmap_reconnect = rs_cxt->bitmap_reconnect;
reform_info->dms_role = rs_cxt->role;
IniRedoInfo();
if (!ENABLE_SS_BCAST_GETOLDESTXMIN) {
SSXminInfoPrepare();
}