流控视图添加

This commit is contained in:
zhenjinyang
2024-11-19 19:49:27 +08:00
committed by jinyangzhen
parent c946595809
commit 4eef4e378a
7 changed files with 122 additions and 0 deletions

View File

@ -2509,6 +2509,10 @@
"ondemand_recovery_status", 1,
AddBuiltinFunc(_0(6991), _1("ondemand_recovery_status"), _2(0), _3(false), _4(true), _5(get_ondemand_recovery_status), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(10), _11(10), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(0), _21(12, TEXTOID, TEXTOID, OIDOID, OIDOID, OIDOID, OIDOID, BOOLOID, TEXTOID, TEXTOID, TEXTOID, OIDOID, OIDOID), _22(12, 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o'), _23(12, "primary_checkpoint_redo_lsn", "realtime_build_replayed_lsn", "hashmap_used_blocks", "hashmap_total_blocks", "trxn_queue_blocks", "seg_queue_blocks", "in_ondemand_recovery", "ondemand_recovery_status", "realtime_build_status", "recovery_pause_status", "record_item_num", "record_item_mbytes"), _24(NULL), _25("get_ondemand_recovery_status"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(false), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"realtime_build_log_ctrl_status", 1,
AddBuiltinFunc(_0(6992), _1("realtime_build_log_ctrl_status"), _2(0), _3(false), _4(true), _5(get_realtime_build_log_ctrl_status), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(64), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('s'), _19(0), _20(0), _21(11, INT4OID, INT8OID, TIMESTAMPTZOID, TIMESTAMPTZOID, TIMESTAMPTZOID, INT8OID, INT8OID, TEXTOID, TEXTOID, TEXTOID, INT4OID), _22(11, 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o'), _23(11, "ins_id", "current_rto", "prev_reply_time", "prev_calculate_time", "reply_time", "period_total_build", "build_rate", "prev_build_ptr", "realtime_build_ptr", "current_insert_ptr", "sleep_time"), _24(NULL), _25("get_realtime_build_log_ctrl_status"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(NULL), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))
),
AddFuncGroup(
"dss_io_stat", 1,
AddBuiltinFunc(_0(6990), _1("dss_io_stat"), _2(1), _3(true), _4(false), _5(dss_io_stat), _6(2249), _7(PG_CATALOG_NAMESPACE), _8(BOOTSTRAP_SUPERUSERID), _9(INTERNALlanguageId), _10(1), _11(0), _12(0), _13(0), _14(false), _15(false), _16(false), _17(false), _18('i'), _19(0), _20(1, INT4OID), _21(4, INT4OID, INT8OID, INT8OID, INT4OID), _22(4, 'i', 'o', 'o', 'o'), _23(4, "duration", "read_kilobyte_per_sec", "write_kilobyte_per_sec", "io_times"), _24(NULL), _25("dss_io_stat"), _26(NULL), _27(NULL), _28(NULL), _29(0), _30(false), _31(false), _32(false), _33(NULL), _34('f'), _35(NULL), _36(0), _37(false), _38(NULL), _39(NULL), _40(0))

View File

@ -15013,6 +15013,89 @@ Datum dss_io_stat(PG_FUNCTION_ARGS)
result = HeapTupleGetDatum(heap_tuple);
PG_RETURN_DATUM(result);
}
Datum get_realtime_build_log_ctrl_status(PG_FUNCTION_ARGS)
{
if (!ENABLE_DMS) {
ereport(ERROR, (errmsg("This function only supports shared storage.")));
}
const int realtimeBuildCtrlStatColumnNum = 11;
const int shiftSpeed = 3;
Datum result;
TupleDesc tupdesc;
ReturnSetInfo* rsinfo = (ReturnSetInfo*)fcinfo->resultinfo;
MemoryContext oldcontext = MemoryContextSwitchTo(rsinfo->econtext->ecxt_per_query_memory);
errno_t errorno = EOK;
int i = 0;
tupdesc = CreateTemplateTupleDesc(realtimeBuildCtrlStatColumnNum, false);
const char *attrNames[realtimeBuildCtrlStatColumnNum] = {
"ins_id", "current_rto", "prev_reply_time", "prev_calculate_time", "reply_time",
"period_total_build", "build_rate", "prev_build_ptr", "realtime_build_ptr",
"current_insert_ptr", "sleep_time"
};
Oid attr_types[realtimeBuildCtrlStatColumnNum] = {
INT4OID, INT8OID, TIMESTAMPTZOID, TIMESTAMPTZOID, TIMESTAMPTZOID,
INT8OID, INT8OID, TEXTOID, TEXTOID, TEXTOID, INT4OID
};
for (i = 0; i < realtimeBuildCtrlStatColumnNum; i++) {
TupleDescInitEntry(tupdesc, (AttrNumber)(i + 1), attrNames[i], attr_types[i], -1, 0);
}
tupdesc = BlessTupleDesc(tupdesc);
Tuplestorestate *tupstore = tuplestore_begin_heap(rsinfo->allowedModes & SFRM_Materialize_Random,
false, u_sess->attr.attr_memory.work_mem);
MemoryContextSwitchTo(oldcontext);
if (SS_PRIMARY_ENABLE_TARGET_RTO) {
for (int instId = 0; instId < DMS_MAX_INSTANCES; instId++) {
realtime_build_ctrl_t rtBuildCtrl = g_instance.dms_cxt.SSRecoveryInfo.rtBuildCtrl[instId];
if (rtBuildCtrl.replyTime == 0) {
continue;
}
Datum values[realtimeBuildCtrlStatColumnNum];
bool nulls[realtimeBuildCtrlStatColumnNum] = {false};
char prevBuildPtr[MAXFNAMELEN];
char realtimeBuildPtr[MAXFNAMELEN];
char currentInsertPtr[MAXFNAMELEN];
errorno = snprintf_s(prevBuildPtr, sizeof(prevBuildPtr), sizeof(prevBuildPtr) - 1, "%X/%X",
(uint32)(rtBuildCtrl.prevBuildPtr >> 32), (uint32)rtBuildCtrl.prevBuildPtr);
securec_check_ss(errorno, "", "");
errorno = snprintf_s(realtimeBuildPtr, sizeof(realtimeBuildPtr), sizeof(realtimeBuildPtr) - 1, "%X/%X",
(uint32)(rtBuildCtrl.realtimeBuildPtr >> 32), (uint32)rtBuildCtrl.realtimeBuildPtr);
securec_check_ss(errorno, "", "");
XLogRecPtr currentInsertLsn = GetXLogInsertEndRecPtr();
errorno = snprintf_s(currentInsertPtr, sizeof(currentInsertPtr), sizeof(currentInsertPtr) - 1, "%X/%X",
(uint32)(currentInsertLsn >> 32), (uint32)currentInsertLsn);
securec_check_ss(errorno, "", "");
i = 0;
values[i++] = Int32GetDatum(instId);
values[i++] = Int64GetDatum(rtBuildCtrl.currentRTO);
values[i++] = TimestampTzGetDatum(rtBuildCtrl.prevReplyTime);
values[i++] = TimestampTzGetDatum(rtBuildCtrl.prevCalculateTime);
values[i++] = TimestampTzGetDatum(rtBuildCtrl.replyTime);
values[i++] = Int64GetDatum(rtBuildCtrl.periodTotalBuild);
values[i++] = Int64GetDatum(rtBuildCtrl.buildRate >> shiftSpeed);
values[i++] = CStringGetTextDatum(prevBuildPtr);
values[i++] = CStringGetTextDatum(realtimeBuildPtr);
values[i++] = CStringGetTextDatum(currentInsertPtr);
values[i++] = Int32GetDatum(rtBuildCtrl.sleepTime);
tuplestore_putvalues(tupstore, tupdesc, values, nulls);
}
}
tuplestore_donestoring(tupstore);
rsinfo->returnMode = SFRM_Materialize;
rsinfo->setResult = tupstore;
rsinfo->setDesc = tupdesc;
return (Datum)0;
}
#ifdef ENABLE_MULTIPLE_NODES
/* Get the head row of the view of index status */
TupleDesc get_index_status_view_frist_row()

View File

@ -0,0 +1 @@
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;

View File

@ -0,0 +1 @@
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;

View File

@ -0,0 +1,16 @@
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 6992;
CREATE FUNCTION pg_catalog.realtime_build_log_ctrl_status(
out ins_id int4,
out current_rto int8,
out prev_reply_time timestamp with time zone,
out prev_calculate_time timestamp with time zone,
out reply_time timestamp with time zone,
out period_total_build int8,
out build_rate int8,
out prev_build_ptr text,
out realtime_build_ptr text,
out current_insert_lsn text,
out sleepTime int4
)
RETURNS SETOF record LANGUAGE INTERNAL as 'realtime_build_log_ctrl_status' stable;

View File

@ -0,0 +1,16 @@
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;
SET LOCAL inplace_upgrade_next_system_object_oids=IUO_PROC, 6992;
CREATE FUNCTION pg_catalog.realtime_build_log_ctrl_status(
out ins_id int4,
out current_rto int8,
out prev_reply_time timestamp with time zone,
out prev_calculate_time timestamp with time zone,
out reply_time timestamp with time zone,
out period_total_build int8,
out build_rate int8,
out prev_build_ptr text,
out realtime_build_ptr text,
out current_insert_lsn text,
out sleepTime int4
)
RETURNS SETOF record LANGUAGE INTERNAL as 'realtime_build_log_ctrl_status' stable;

View File

@ -1881,6 +1881,7 @@ extern Datum compress_statistic_info(PG_FUNCTION_ARGS);
extern Datum pg_read_binary_file_blocks(PG_FUNCTION_ARGS);
extern Datum dss_io_stat(PG_FUNCTION_ARGS);
extern Datum get_ondemand_recovery_status(PG_FUNCTION_ARGS);
extern Datum get_realtime_build_log_ctrl_status(PG_FUNCTION_ARGS);
/* plhandler.cpp */
extern Datum generate_procoverage_report(PG_FUNCTION_ARGS);