225 lines
7.8 KiB
C
Executable File
225 lines
7.8 KiB
C
Executable File
/*
|
|
* Copyright (c) 2020 Huawei Technologies Co.,Ltd.
|
|
* Portions Copyright (c) 2021, openGauss Contributors
|
|
*
|
|
* openGauss is licensed under Mulan PSL v2.
|
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
|
* You may obtain a copy of Mulan PSL v2 at:
|
|
*
|
|
* http://license.coscl.org.cn/MulanPSL2
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
|
* See the Mulan PSL v2 for more details.
|
|
* ---------------------------------------------------------------------------------------
|
|
*
|
|
* be_module.h
|
|
*
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* src/include/utils/be_module.h
|
|
*
|
|
* ---------------------------------------------------------------------------------------
|
|
*/
|
|
#ifndef SRC_INCLUDE_UTILS_BE_MODULE_H
|
|
#define SRC_INCLUDE_UTILS_BE_MODULE_H
|
|
|
|
/*
|
|
* How to add your module id ?
|
|
* 1. add your module id before MOD_MAX in ModuleId;
|
|
* 2. fill up module_map[] about module name, and keep their ordering;
|
|
*
|
|
*/
|
|
enum ModuleId {
|
|
/* fastpath for all modules on/off */
|
|
MOD_ALL = 0,
|
|
/* add your module id following */
|
|
|
|
MOD_COMMAND, /* Commands */
|
|
MOD_DFS, /* DFS */
|
|
MOD_GUC, /* GUC */
|
|
MOD_GSCLEAN, /* gs_clean */
|
|
MOD_HDFS, /* HDFS feature */
|
|
MOD_ORC, /* ORC storage format */
|
|
MOD_SLRU, /* Simple LRU buffering manager */
|
|
MOD_MEM, /* Memory Manager */
|
|
MOD_AUTOVAC, /* auto-vacuum */
|
|
MOD_CACHE, /* cache manager include data cache(cu , dfs) ,index cache(dfs)*/
|
|
MOD_ADIO, /* ADIO feature */
|
|
MOD_SSL, /* SSL */
|
|
MOD_GDS, /* GDS */
|
|
MOD_TBLSPC, /* Tablespace */
|
|
MOD_WLM, /* workload manager*/
|
|
MOD_OBS, /* OBS */
|
|
MOD_INDEX, /* index */
|
|
MOD_EXECUTOR, /* Row Executor */
|
|
MOD_OPFUSION, /* Bypass Opfusion */
|
|
MOD_GPC, /* Global plancache */
|
|
MOD_GSC, /* Global syscache */
|
|
MOD_VEC_EXECUTOR, /* Vector Executor */
|
|
MOD_STREAM, /* Stream */
|
|
MOD_LLVM, /* LLVM */
|
|
MOD_OPT, /* Optimizer default module */
|
|
MOD_OPT_REWRITE, /* Optimizer sub-module:rewrite */
|
|
MOD_OPT_JOIN, /* Optimizer sub-module:join */
|
|
MOD_OPT_AGG, /* Optimizer sub-module:agg */
|
|
MOD_OPT_CHOICE, /* Optimizer sub-module: choice of gplan or cplan */
|
|
MOD_OPT_SUBPLAN, /* Optimizer sub-module:subplan */
|
|
MOD_OPT_SETOP, /* Optimizer sub-module:setop */
|
|
MOD_OPT_SKEW, /* Optimizer sub-module:data skew */
|
|
MOD_OPT_PLANNER, /* Optimizer sub-module:planner */
|
|
MOD_UDF, /* fenced udf */
|
|
MOD_COOP_ANALYZE, /* cooperation analyze */
|
|
MOD_WLM_CP, /* wlm for the comupte pool */
|
|
MOD_ACCELERATE, /* accelerate with comptue pool */
|
|
MOD_MOT, /* MOT */
|
|
MOD_PLANHINT, /* plan hint */
|
|
MOD_PARQUET, /* Parquet storage format */
|
|
MOD_PGSTAT, /* pgstat */
|
|
MOD_CARBONDATA, /* Carbondata storage format */
|
|
|
|
/* MODULE FOR TRANSACTION LOG CONTROL , USE LOG LEVEL*/
|
|
MOD_TRANS_SNAPSHOT, /* Snapshot */
|
|
MOD_TRANS_XACT, /* Xact Finite-State-Machine(FSM) */
|
|
MOD_TRANS_HANDLE, /* Handle for Transaction */
|
|
MOD_TRANS_CLOG, /* Clog Write */
|
|
|
|
MOD_EC, /* Extension Connector */
|
|
MOD_REMOTE, /* remote read */
|
|
MOD_CN_RETRY, /* cn retry */
|
|
MOD_PLSQL, /* plpgsql */
|
|
MOD_TS, /* TEXT SEARCH */
|
|
MOD_SEQ, /* sequence */
|
|
MOD_REDO, /* redo log */
|
|
MOD_FUNCTION, /* internal function */
|
|
MOD_PARSER, /* parser module*/
|
|
MOD_INSTR, /* Instrumentation */
|
|
MOD_WDR_SNAPSHOT, /* wdr snapshot */
|
|
MOD_INCRE_CKPT, /* incremental checkpoint */
|
|
MOD_INCRE_BG, /* incremental checkpoint bgwriter */
|
|
MOD_DW, /* double write */
|
|
MOD_RTO_RPO, /* log control */
|
|
MOD_HEARTBEAT, /* heartbeat */
|
|
MOD_COMM_IPC, /* comm ipc performance */
|
|
MOD_COMM_PARAM, /* comm session params */
|
|
MOD_TIMESERIES, /* timeseries feature */
|
|
MOD_SCHEMA, /* schema search */
|
|
|
|
MOD_SEGMENT_PAGE, /* segment page storage */
|
|
MOD_LIGHTPROXY, /* lightProxy */
|
|
MOD_HOTKEY, /* hotkey */
|
|
MOD_THREAD_POOL, /* thread_pool */
|
|
MOD_OPT_AI, /* ai optimizer */
|
|
MOD_WALRECEIVER, /* walreceiver */
|
|
MOD_USTORE, /* ustore */
|
|
MOD_UNDO, /* undo */
|
|
MOD_TIMECAPSULE, /* timecapsule */
|
|
MOD_GEN_COL, /* generated column */
|
|
MOD_DCF, /* DCF paxos */
|
|
MOD_DB4AI, /* DB4AI & AUTOML */
|
|
MOD_PLDEBUGGER,
|
|
MOD_ADVISOR, /* sql advisor */
|
|
|
|
MOD_SEC, /* Security default module */
|
|
MOD_SEC_FE, /* Security sub-module: full encryption */
|
|
MOD_SEC_LEGER, /* Security sub-module: ledger database */
|
|
MOD_SEC_POLICY, /* Security sub-module: masking, auditing and RLS policies */
|
|
MOD_SEC_SDD, /* Security sub-module: sensitive data discovery */
|
|
MOD_SEC_TDE, /* Security sub-module: transparent data encryption */
|
|
|
|
MOD_COMM_FRAMEWORK, /* for basic communication framework */
|
|
MOD_COMM_PROXY, /* for cbb comm_proxy */
|
|
MOD_COMM_POOLER, /* for pooler communication */
|
|
MOD_VACUUM, /* lazy vacuum */
|
|
MOD_JOB, /* job/scheduler job related */
|
|
MOD_SPI,
|
|
MOD_NEST_COMPILE,
|
|
MOD_RESOWNER,
|
|
MOD_GSSTACK,
|
|
MOD_LOGICAL_DECODE, /* logical decode */
|
|
MOD_GPRC, /* global package runtime cache */
|
|
MOD_DISASTER_READ,
|
|
MOD_STANDBY_READ,
|
|
|
|
MODE_REPSYNC, /* debug info for func SyncRepWaitForLSN */
|
|
MOD_SQLPATCH,
|
|
MOD_DMS, /* DMS */
|
|
MOD_DSS, /* dss api module */
|
|
|
|
MOD_GPI, /* debug info for global partition index */
|
|
MOD_PARTITION,
|
|
MOD_UBT_NEWPAGE, /* debug info for UBTreeGetNewPage */
|
|
MOD_SRF, /* debug info for SRF */
|
|
MOD_SS_TXNSTATUS, /* debug info for SS TXNSTATUS */
|
|
|
|
/*
|
|
* Add your module id above.
|
|
* Do not forget to fill up module_map[] about module name, and keep their ordering;
|
|
*/
|
|
MOD_MAX
|
|
};
|
|
|
|
/* 1 bit <--> 1 module, including MOD_MAX. its size is
|
|
* ((MOD_MAX+1)+7)/8 = MOD_MAX/8 + 1
|
|
*/
|
|
#define BEMD_BITMAP_SIZE (1 + (MOD_MAX / 8))
|
|
|
|
#define MODULE_ID_IS_VALID(_id) ((_id) >= MOD_ALL && (_id) < MOD_MAX)
|
|
#define ALL_MODULES(_id) (MOD_ALL == (_id))
|
|
|
|
/* Is it a valid and signle module id ? */
|
|
#define VALID_SINGLE_MODULE(_id) ((_id) > MOD_ALL && (_id) < MOD_MAX)
|
|
|
|
/* max length of module name */
|
|
#define MODULE_NAME_MAXLEN (16)
|
|
|
|
/* delimiter of module name list about GUC parameter */
|
|
#define MOD_DELIMITER ','
|
|
|
|
/* map about module id and its name */
|
|
typedef struct module_data {
|
|
ModuleId mod_id;
|
|
const char mod_name[MODULE_NAME_MAXLEN];
|
|
} module_data;
|
|
|
|
/******************* be-module id <--> name **********************/
|
|
extern ModuleId get_module_id(const char* module_name);
|
|
|
|
/* Notice:
|
|
* declaration here only for the following inline functions,
|
|
* never use it within the other files directly.
|
|
*/
|
|
extern const module_data module_map[];
|
|
|
|
/*
|
|
* @Description: get the default module name. normally
|
|
* this module is not defined in ModuleId.
|
|
* @Return: default module name
|
|
* @See also:
|
|
*/
|
|
inline const char* get_default_module_name(void)
|
|
{
|
|
return module_map[MOD_MAX].mod_name;
|
|
}
|
|
|
|
/*
|
|
* @Description: find a module's name according to its id.
|
|
* @IN module_id: module id
|
|
* @Return: module name
|
|
* @See also:
|
|
*/
|
|
inline const char* get_valid_module_name(ModuleId module_id)
|
|
{
|
|
return module_map[module_id].mod_name;
|
|
}
|
|
|
|
/******************* be-module logging **********************/
|
|
extern bool check_module_name_unique(void);
|
|
extern void module_logging_batch_set(ModuleId* mods, int nmods, bool turn_on, bool apply_all_modules);
|
|
extern bool module_logging_is_on(ModuleId module_id);
|
|
extern void module_logging_enable_comm(ModuleId module_id);
|
|
|
|
#endif /* SRC_INCLUDE_UTILS_BE_MODULE_H */
|