From ddfb33633953fc5c06cf4a1c4b9773a30f09aaf7 Mon Sep 17 00:00:00 2001 From: SevenJ-swj Date: Mon, 23 Oct 2023 07:09:41 +0000 Subject: [PATCH] Placeholder2 --- .../inner_table/ob_inner_table_schema_def.py | 3 +- .../system_variable/ob_sys_var_class_type.h | 2 + .../ob_system_variable_alias.h | 2 + .../ob_system_variable_factory.cpp | 50 ++++++++++++++++++- .../ob_system_variable_factory.h | 16 +++++- .../ob_system_variable_init.cpp | 30 ++++++++++- .../ob_system_variable_init.json | 28 ++++++++++- 7 files changed, 125 insertions(+), 6 deletions(-) diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index bc7b26067..1f5d578af 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -13009,7 +13009,8 @@ def_table_schema(**gen_iterate_private_virtual_table_def( # 12440: __all_virtual_wr_system_event # 12441: __all_virtual_wr_event_name # 12442: __all_tenant_scheduler_running_job -# +# 12443: __all_virtual_routine_privilege +# 12444: __all_virtual_routine_privilege_history # 余留位置 # diff --git a/src/share/system_variable/ob_sys_var_class_type.h b/src/share/system_variable/ob_sys_var_class_type.h index efad03df2..6360ca66b 100644 --- a/src/share/system_variable/ob_sys_var_class_type.h +++ b/src/share/system_variable/ob_sys_var_class_type.h @@ -258,6 +258,8 @@ enum ObSysVarClassType SYS_VAR_NCHARACTER_SET_CONNECTION = 10152, SYS_VAR_AUTOMATIC_SP_PRIVILEGES = 10153, SYS_VAR_PRIVILEGE_FEATURES_ENABLE = 10154, + SYS_VAR__PRIV_CONTROL = 10155, + SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK = 10156, }; } diff --git a/src/share/system_variable/ob_system_variable_alias.h b/src/share/system_variable/ob_system_variable_alias.h index 323311be3..222a26f3c 100644 --- a/src/share/system_variable/ob_system_variable_alias.h +++ b/src/share/system_variable/ob_system_variable_alias.h @@ -253,6 +253,8 @@ namespace share static const char* const OB_SV_NCHARACTER_SET_CONNECTION = "ncharacter_set_connection"; static const char* const OB_SV_AUTOMATIC_SP_PRIVILEGES = "automatic_sp_privileges"; static const char* const OB_SV_PRIVILEGE_FEATURES_ENABLE = "privilege_features_enable"; + static const char* const OB_SV__PRIV_CONTROL = "_priv_control"; + static const char* const OB_SV__ENABLE_MYSQL_PL_PRIV_CHECK = "_enable_mysql_pl_priv_check"; } } diff --git a/src/share/system_variable/ob_system_variable_factory.cpp b/src/share/system_variable/ob_system_variable_factory.cpp index 759cde4ca..54244a9e7 100644 --- a/src/share/system_variable/ob_system_variable_factory.cpp +++ b/src/share/system_variable/ob_system_variable_factory.cpp @@ -127,6 +127,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = { "_clear_last_archive_timestamp", "_create_audit_purge_job", "_drop_audit_purge_job", + "_enable_mysql_pl_priv_check", "_enable_parallel_ddl", "_enable_parallel_dml", "_enable_parallel_query", @@ -143,6 +144,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = { "_ob_px_slave_mapping_threshold", "_optimizer_gather_stats_on_load", "_optimizer_null_aware_antijoin", + "_priv_control", "_px_broadcast_fudge_factor", "_px_dist_agg_partial_rollup_pushdown", "_px_min_granules_per_slave", @@ -367,6 +369,7 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = { SYS_VAR__CLEAR_LAST_ARCHIVE_TIMESTAMP, SYS_VAR__CREATE_AUDIT_PURGE_JOB, SYS_VAR__DROP_AUDIT_PURGE_JOB, + SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK, SYS_VAR__ENABLE_PARALLEL_DDL, SYS_VAR__ENABLE_PARALLEL_DML, SYS_VAR__ENABLE_PARALLEL_QUERY, @@ -383,6 +386,7 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = { SYS_VAR__OB_PX_SLAVE_MAPPING_THRESHOLD, SYS_VAR__OPTIMIZER_GATHER_STATS_ON_LOAD, SYS_VAR__OPTIMIZER_NULL_AWARE_ANTIJOIN, + SYS_VAR__PRIV_CONTROL, SYS_VAR__PX_BROADCAST_FUDGE_FACTOR, SYS_VAR__PX_DIST_AGG_PARTIAL_ROLLUP_PUSHDOWN, SYS_VAR__PX_MIN_GRANULES_PER_SLAVE, @@ -839,7 +843,9 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_ID[] = { "_ob_proxy_weakread_feedback", "ncharacter_set_connection", "automatic_sp_privileges", - "privilege_features_enable" + "privilege_features_enable", + "_priv_control", + "_enable_mysql_pl_priv_check" }; bool ObSysVarFactory::sys_var_name_case_cmp(const char *name1, const ObString &name2) @@ -1245,6 +1251,8 @@ int ObSysVarFactory::create_all_sys_vars() + sizeof(ObSysVarNcharacterSetConnection) + sizeof(ObSysVarAutomaticSpPrivileges) + sizeof(ObSysVarPrivilegeFeaturesEnable) + + sizeof(ObSysVarPrivControl) + + sizeof(ObSysVarEnableMysqlPlPrivCheck) ; void *ptr = NULL; if (OB_ISNULL(ptr = allocator_.alloc(total_mem_size))) { @@ -3386,6 +3394,24 @@ int ObSysVarFactory::create_all_sys_vars() ptr = (void *)((char *)ptr + sizeof(ObSysVarPrivilegeFeaturesEnable)); } } + if (OB_SUCC(ret)) { + if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarPrivControl())) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to new ObSysVarPrivControl", K(ret)); + } else { + store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast(SYS_VAR__PRIV_CONTROL))] = sys_var_ptr; + ptr = (void *)((char *)ptr + sizeof(ObSysVarPrivControl)); + } + } + if (OB_SUCC(ret)) { + if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarEnableMysqlPlPrivCheck())) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to new ObSysVarEnableMysqlPlPrivCheck", K(ret)); + } else { + store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast(SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK))] = sys_var_ptr; + ptr = (void *)((char *)ptr + sizeof(ObSysVarEnableMysqlPlPrivCheck)); + } + } } return ret; @@ -6003,6 +6029,28 @@ int ObSysVarFactory::create_sys_var(ObIAllocator &allocator_, ObSysVarClassType } break; } + case SYS_VAR__PRIV_CONTROL: { + void *ptr = NULL; + if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarPrivControl)))) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarPrivControl))); + } else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarPrivControl())) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to new ObSysVarPrivControl", K(ret)); + } + break; + } + case SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK: { + void *ptr = NULL; + if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarEnableMysqlPlPrivCheck)))) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarEnableMysqlPlPrivCheck))); + } else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarEnableMysqlPlPrivCheck())) { + ret = OB_ALLOCATE_MEMORY_FAILED; + LOG_ERROR("fail to new ObSysVarEnableMysqlPlPrivCheck", K(ret)); + } + break; + } default: { ret = OB_ERR_UNEXPECTED; diff --git a/src/share/system_variable/ob_system_variable_factory.h b/src/share/system_variable/ob_system_variable_factory.h index 16cb2c943..cd19e34b3 100644 --- a/src/share/system_variable/ob_system_variable_factory.h +++ b/src/share/system_variable/ob_system_variable_factory.h @@ -1712,6 +1712,20 @@ public: inline virtual ObSysVarClassType get_type() const { return SYS_VAR_PRIVILEGE_FEATURES_ENABLE; } inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(236); } }; +class ObSysVarPrivControl : public ObVarcharSysVar +{ +public: + ObSysVarPrivControl() : ObVarcharSysVar(NULL, NULL, NULL, NULL, NULL) {} + inline virtual ObSysVarClassType get_type() const { return SYS_VAR__PRIV_CONTROL; } + inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(237); } +}; +class ObSysVarEnableMysqlPlPrivCheck : public ObBoolSysVar +{ +public: + ObSysVarEnableMysqlPlPrivCheck() : ObBoolSysVar(NULL, NULL, NULL, NULL, NULL) {} + inline virtual ObSysVarClassType get_type() const { return SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK; } + inline virtual const common::ObObj &get_global_default_value() const { return ObSysVariables::get_default_value(238); } +}; class ObSysVarFactory @@ -1732,7 +1746,7 @@ public: static const common::ObString get_sys_var_name_by_id(ObSysVarClassType sys_var_id); const static int64_t MYSQL_SYS_VARS_COUNT = 97; - const static int64_t OB_SYS_VARS_COUNT = 140; + const static int64_t OB_SYS_VARS_COUNT = 142; const static int64_t ALL_SYS_VARS_COUNT = MYSQL_SYS_VARS_COUNT + OB_SYS_VARS_COUNT; const static int64_t INVALID_MAX_READ_STALE_TIME = -1; diff --git a/src/share/system_variable/ob_system_variable_init.cpp b/src/share/system_variable/ob_system_variable_init.cpp index b19079db0..15772c14d 100644 --- a/src/share/system_variable/ob_system_variable_init.cpp +++ b/src/share/system_variable/ob_system_variable_init.cpp @@ -3341,7 +3341,7 @@ static struct VarsInit{ ObSysVars[236].info_ = "enabling a series of privilege features based on an OceanBase release number" ; ObSysVars[236].name_ = "privilege_features_enable" ; ObSysVars[236].data_type_ = ObVarcharType ; - ObSysVars[236].flags_ = ObSysVarFlag::GLOBAL_SCOPE ; + ObSysVars[236].flags_ = ObSysVarFlag::GLOBAL_SCOPE | ObSysVarFlag::NEED_SERIALIZE ; ObSysVars[236].id_ = SYS_VAR_PRIVILEGE_FEATURES_ENABLE ; cur_max_var_id = MAX(cur_max_var_id, static_cast(SYS_VAR_PRIVILEGE_FEATURES_ENABLE)) ; ObSysVarsIdToArrayIdx[SYS_VAR_PRIVILEGE_FEATURES_ENABLE] = 236 ; @@ -3349,13 +3349,39 @@ static struct VarsInit{ ObSysVars[236].alias_ = "OB_SV_PRIVILEGE_FEATURES_ENABLE" ; }(); + [&] (){ + ObSysVars[237].default_value_ = "" ; + ObSysVars[237].info_ = "whether turn on mysql privilege check" ; + ObSysVars[237].name_ = "_priv_control" ; + ObSysVars[237].data_type_ = ObVarcharType ; + ObSysVars[237].flags_ = ObSysVarFlag::GLOBAL_SCOPE | ObSysVarFlag::NEED_SERIALIZE ; + ObSysVars[237].id_ = SYS_VAR__PRIV_CONTROL ; + cur_max_var_id = MAX(cur_max_var_id, static_cast(SYS_VAR__PRIV_CONTROL)) ; + ObSysVarsIdToArrayIdx[SYS_VAR__PRIV_CONTROL] = 237 ; + ObSysVars[237].base_value_ = "" ; + ObSysVars[237].alias_ = "OB_SV__PRIV_CONTROL" ; + }(); + + [&] (){ + ObSysVars[238].default_value_ = "0" ; + ObSysVars[238].info_ = "specifies whether check the mysql routine priv" ; + ObSysVars[238].name_ = "_enable_mysql_pl_priv_check" ; + ObSysVars[238].data_type_ = ObIntType ; + ObSysVars[238].flags_ = ObSysVarFlag::GLOBAL_SCOPE | ObSysVarFlag::NEED_SERIALIZE ; + ObSysVars[238].id_ = SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK ; + cur_max_var_id = MAX(cur_max_var_id, static_cast(SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK)) ; + ObSysVarsIdToArrayIdx[SYS_VAR__ENABLE_MYSQL_PL_PRIV_CHECK] = 238 ; + ObSysVars[238].base_value_ = "0" ; + ObSysVars[238].alias_ = "OB_SV__ENABLE_MYSQL_PL_PRIV_CHECK" ; + }(); + if (cur_max_var_id >= ObSysVarFactory::OB_MAX_SYS_VAR_ID) { HasInvalidSysVar = true; } } }vars_init; -static int64_t var_amount = 237; +static int64_t var_amount = 239; int64_t ObSysVariables::get_all_sys_var_count(){ return ObSysVarFactory::ALL_SYS_VARS_COUNT;} ObSysVarClassType ObSysVariables::get_sys_var_id(int64_t i){ return ObSysVars[i].id_;} diff --git a/src/share/system_variable/ob_system_variable_init.json b/src/share/system_variable/ob_system_variable_init.json index 5b429ee3d..5977e4db1 100644 --- a/src/share/system_variable/ob_system_variable_init.json +++ b/src/share/system_variable/ob_system_variable_init.json @@ -3374,7 +3374,33 @@ "base_value": "", "data_type": "varchar", "info": "enabling a series of privilege features based on an OceanBase release number", - "flags": "GLOBAL", + "flags": "GLOBAL | NEED_SERIALIZE", + "publish_version": "420", + "info_cn": "", + "background_cn": "", + "ref_url": "" + }, + "_priv_control": { + "id": 10155, + "name": "_priv_control", + "default_value": "", + "base_value": "", + "data_type": "varchar", + "info": "whether turn on mysql privilege check", + "flags": "GLOBAL | NEED_SERIALIZE", + "publish_version": "420", + "info_cn": "", + "background_cn": "", + "ref_url": "" + }, + "_enable_mysql_pl_priv_check": { + "id": 10156, + "name": "_enable_mysql_pl_priv_check", + "default_value": "0", + "base_value": "0", + "data_type": "bool", + "info": "specifies whether check the mysql routine priv", + "flags": "GLOBAL | NEED_SERIALIZE", "publish_version": "420", "info_cn": "", "background_cn": "",