Fix: sys var default values modify cause session sync fail

This commit is contained in:
yaojing624
2023-06-30 05:42:27 +00:00
committed by ob-robot
parent 35a45f4768
commit 10f91ccac7
7 changed files with 1033 additions and 516 deletions

View File

@ -41,7 +41,8 @@ struct ObSysVarFromJson{
ObSysVarClassType id_;
common::ObString name_;
common::ObObjType data_type_;
common::ObString value_;
common::ObString default_value_; // used for init tenant
common::ObString base_value_; // used for session sync
common::ObString min_val_;
common::ObString max_val_;
common::ObString enum_names_;
@ -56,7 +57,7 @@ struct ObSysVarFromJson{
common::ObString get_meta_type_func_;
common::ObString session_special_update_func_;
ObSysVarFromJson():id_(SYS_VAR_INVALID), name_(""), data_type_(common::ObNullType), value_(""), min_val_(""), max_val_(""), enum_names_(""), info_(""), flags_(ObSysVarFlag::NONE), alias_(""), base_class_(""), on_check_and_convert_func_(), on_update_func_(), to_select_obj_func_(), to_show_str_func_(), get_meta_type_func_(), session_special_update_func_() {}
ObSysVarFromJson():id_(SYS_VAR_INVALID), name_(""), data_type_(common::ObNullType), default_value_(""), base_value_(""), min_val_(""), max_val_(""), enum_names_(""), info_(""), flags_(ObSysVarFlag::NONE), alias_(""), base_class_(""), on_check_and_convert_func_(), on_update_func_(), to_select_obj_func_(), to_show_str_func_(), get_meta_type_func_(), session_special_update_func_() {}
};
class ObSysVariables
@ -67,6 +68,7 @@ public:
static common::ObString get_name(int64_t i);
static common::ObObjType get_type(int64_t i);
static common::ObString get_value(int64_t i);
static common::ObString get_base_str_value(int64_t i);
static common::ObString get_min(int64_t i);
static common::ObString get_max(int64_t i);
static common::ObString get_info(int64_t i);
@ -76,6 +78,7 @@ public:
static bool is_mysql_only(int64_t i);
static common::ObString get_alias(int64_t i);
static const common::ObObj &get_default_value(int64_t i);
static const common::ObObj &get_base_value(int64_t i);
static int64_t get_amount();
static int set_value(const char *name, const char * new_value);
static int set_value(const common::ObString &name, const common::ObString &new_value);