流控视图添加
This commit is contained in:
@ -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))
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -0,0 +1 @@
|
||||
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;
|
||||
@ -0,0 +1 @@
|
||||
DROP FUNCTION IF EXISTS pg_catalog.realtime_build_log_ctrl_status() CASCADE;
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user