提交 9cc87d83 编写于 作者: L LINxiansheng 提交者: wangzelin.wzl

[CP] Add system variable default_storage_engine

上级 ba11b4ac
......@@ -105,6 +105,7 @@ enum ObSysVarClassType
SYS_VAR_SESSION_TRACK_SCHEMA = 81,
SYS_VAR_SESSION_TRACK_SYSTEM_VARIABLES = 82,
SYS_VAR_SESSION_TRACK_STATE_CHANGE = 83,
SYS_VAR_DEFAULT_STORAGE_ENGINE = 93,
SYS_VAR_OB_DEFAULT_REPLICA_NUM = 10000,
SYS_VAR_OB_INTERM_RESULT_MEM_LIMIT = 10001,
SYS_VAR_OB_PROXY_PARTITION_HIT = 10002,
......
......@@ -104,6 +104,7 @@ namespace share
static const char* const OB_SV_SESSION_TRACK_SCHEMA = "session_track_schema";
static const char* const OB_SV_SESSION_TRACK_SYSTEM_VARIABLES = "session_track_system_variables";
static const char* const OB_SV_SESSION_TRACK_STATE_CHANGE = "session_track_state_change";
static const char* const OB_SV_DEFAULT_STORAGE_ENGINE = "default_storage_engine";
static const char* const OB_SV_DEFAULT_REPLICA_NUM = "ob_default_replica_num";
static const char* const OB_SV_INTERM_RESULT_MEM_LIMIT = "ob_interm_result_mem_limit";
static const char* const OB_SV_PROXY_PARTITION_HIT = "ob_proxy_partition_hit";
......
......@@ -140,6 +140,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
"debug_sync",
"default_authentication_plugin",
"default_password_lifetime",
"default_storage_engine",
"disabled_storage_engines",
"div_precision_increment",
"error_count",
......@@ -341,6 +342,7 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = {
SYS_VAR_DEBUG_SYNC,
SYS_VAR_DEFAULT_AUTHENTICATION_PLUGIN,
SYS_VAR_DEFAULT_PASSWORD_LIFETIME,
SYS_VAR_DEFAULT_STORAGE_ENGINE,
SYS_VAR_DISABLED_STORAGE_ENGINES,
SYS_VAR_DIV_PRECISION_INCREMENT,
SYS_VAR_ERROR_COUNT,
......@@ -589,6 +591,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_ID[] = {
"session_track_schema",
"session_track_system_variables",
"session_track_state_change",
"default_storage_engine",
"ob_default_replica_num",
"ob_interm_result_mem_limit",
"ob_proxy_partition_hit",
......@@ -950,6 +953,7 @@ int ObSysVarFactory::create_all_sys_vars()
+ sizeof(ObSysVarSessionTrackSchema)
+ sizeof(ObSysVarSessionTrackSystemVariables)
+ sizeof(ObSysVarSessionTrackStateChange)
+ sizeof(ObSysVarDefaultStorageEngine)
+ sizeof(ObSysVarObDefaultReplicaNum)
+ sizeof(ObSysVarObIntermResultMemLimit)
+ sizeof(ObSysVarObProxyPartitionHit)
......@@ -1828,6 +1832,15 @@ int ObSysVarFactory::create_all_sys_vars()
ptr = (void *)((char *)ptr + sizeof(ObSysVarSessionTrackStateChange));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarDefaultStorageEngine())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarDefaultStorageEngine", K(ret));
} else {
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_DEFAULT_STORAGE_ENGINE))] = sys_var_ptr;
ptr = (void *)((char *)ptr + sizeof(ObSysVarDefaultStorageEngine));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarObDefaultReplicaNum())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
......@@ -3804,6 +3817,17 @@ int ObSysVarFactory::create_sys_var(ObSysVarClassType sys_var_id, ObBasicSysVar
}
break;
}
case SYS_VAR_DEFAULT_STORAGE_ENGINE: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarDefaultStorageEngine)))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarDefaultStorageEngine)));
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarDefaultStorageEngine())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarDefaultStorageEngine", K(ret));
}
break;
}
case SYS_VAR_OB_DEFAULT_REPLICA_NUM: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarObDefaultReplicaNum)))) {
......
......@@ -1147,6 +1147,18 @@
"background_cn": "",
"ref_url": ""
},
"default_storage_engine": {
"id": 93,
"name": "default_storage_engine",
"value": "OceanBase",
"data_type": "varchar",
"info": "The default storage engine of OceanBase",
"flags": "GLOBAL | SESSION | MYSQL_ONLY",
"publish_version": "400",
"info_cn": "",
"background_cn": "",
"ref_url": ""
},
"ob_interm_result_mem_limit": {
"id": 10001,
"name": "ob_interm_result_mem_limit",
......
......@@ -673,6 +673,17 @@ int ObVariableSetExecutor::check_and_convert_sys_var(ObExecContext& ctx, const O
LOG_WARN("not support modify this variables now", K(set_var), K(new_value), K(ret));
}
}
if (OB_FAIL(ret)) {
} else if (set_var.var_name_ == OB_SV_DEFAULT_STORAGE_ENGINE) {
static const common::ObString DEFAULT_VALUE_STORAGE_ENGINE("OceanBase");
const ObString new_value = out_val.get_string();
if (new_value.case_compare(DEFAULT_VALUE_STORAGE_ENGINE) != 0) {
ret = OB_ERR_PARAM_VALUE_INVALID;
LOG_USER_ERROR(OB_ERR_PARAM_VALUE_INVALID);
}
}
return ret;
}
......
......@@ -87,6 +87,7 @@ sys_var_dict["warning_count"] = {"id": 80, "name": "warning_count", "value": "0"
sys_var_dict["session_track_schema"] = {"id": 81, "name": "session_track_schema", "value": "1", "data_type": 5, "info": "specifies whether return schema change info in ok packet", "flags": 4099}
sys_var_dict["session_track_system_variables"] = {"id": 82, "name": "session_track_system_variables", "value": "time_zone, autocommit, character_set_client, character_set_results, character_set_connection", "data_type": 22, "info": "specifies whether return system variables change info in ok packet", "flags": 4099}
sys_var_dict["session_track_state_change"] = {"id": 83, "name": "session_track_state_change", "value": "0", "data_type": 5, "info": "specifies whether return session state change info in ok packet", "flags": 4099}
sys_var_dict["default_storage_engine"] = {"id": 93, "name": "default_storage_engine", "value": "OceanBase", "data_type": 22, "info": "The default storage engine of OceanBase", "flags": 4099}
sys_var_dict["ob_default_replica_num"] = {"id": 10000, "name": "ob_default_replica_num", "value": "1", "data_type": 5, "info": "The default replica number of table per zone if not specified when creating table.", "flags": 3}
sys_var_dict["ob_interm_result_mem_limit"] = {"id": 10001, "name": "ob_interm_result_mem_limit", "value": "2147483648", "data_type": 5, "info": "Indicate how many bytes the interm result manager can alloc most for this tenant", "flags": 131}
sys_var_dict["ob_proxy_partition_hit"] = {"id": 10002, "name": "ob_proxy_partition_hit", "value": "1", "data_type": 5, "info": "Indicate whether sql stmt hit right partition, readonly to user, modify by ob", "flags": 22}
......
......@@ -7415,6 +7415,7 @@
#sys_var_dict["session_track_schema"] = {"id": 81, "name": "session_track_schema", "value": "1", "data_type": 5, "info": "specifies whether return schema change info in ok packet", "flags": 4099}
#sys_var_dict["session_track_system_variables"] = {"id": 82, "name": "session_track_system_variables", "value": "time_zone, autocommit, character_set_client, character_set_results, character_set_connection", "data_type": 22, "info": "specifies whether return system variables change info in ok packet", "flags": 4099}
#sys_var_dict["session_track_state_change"] = {"id": 83, "name": "session_track_state_change", "value": "0", "data_type": 5, "info": "specifies whether return session state change info in ok packet", "flags": 4099}
#sys_var_dict["default_storage_engine"] = {"id": 93, "name": "default_storage_engine", "value": "OceanBase", "data_type": 22, "info": "The default storage engine of OceanBase", "flags": 4099}
#sys_var_dict["ob_default_replica_num"] = {"id": 10000, "name": "ob_default_replica_num", "value": "1", "data_type": 5, "info": "The default replica number of table per zone if not specified when creating table.", "flags": 3}
#sys_var_dict["ob_interm_result_mem_limit"] = {"id": 10001, "name": "ob_interm_result_mem_limit", "value": "2147483648", "data_type": 5, "info": "Indicate how many bytes the interm result manager can alloc most for this tenant", "flags": 131}
#sys_var_dict["ob_proxy_partition_hit"] = {"id": 10002, "name": "ob_proxy_partition_hit", "value": "1", "data_type": 5, "info": "Indicate whether sql stmt hit right partition, readonly to user, modify by ob", "flags": 22}
......
......@@ -7415,6 +7415,7 @@
#sys_var_dict["session_track_schema"] = {"id": 81, "name": "session_track_schema", "value": "1", "data_type": 5, "info": "specifies whether return schema change info in ok packet", "flags": 4099}
#sys_var_dict["session_track_system_variables"] = {"id": 82, "name": "session_track_system_variables", "value": "time_zone, autocommit, character_set_client, character_set_results, character_set_connection", "data_type": 22, "info": "specifies whether return system variables change info in ok packet", "flags": 4099}
#sys_var_dict["session_track_state_change"] = {"id": 83, "name": "session_track_state_change", "value": "0", "data_type": 5, "info": "specifies whether return session state change info in ok packet", "flags": 4099}
#sys_var_dict["default_storage_engine"] = {"id": 93, "name": "default_storage_engine", "value": "OceanBase", "data_type": 22, "info": "The default storage engine of OceanBase", "flags": 4099}
#sys_var_dict["ob_default_replica_num"] = {"id": 10000, "name": "ob_default_replica_num", "value": "1", "data_type": 5, "info": "The default replica number of table per zone if not specified when creating table.", "flags": 3}
#sys_var_dict["ob_interm_result_mem_limit"] = {"id": 10001, "name": "ob_interm_result_mem_limit", "value": "2147483648", "data_type": 5, "info": "Indicate how many bytes the interm result manager can alloc most for this tenant", "flags": 131}
#sys_var_dict["ob_proxy_partition_hit"] = {"id": 10002, "name": "ob_proxy_partition_hit", "value": "1", "data_type": 5, "info": "Indicate whether sql stmt hit right partition, readonly to user, modify by ob", "flags": 22}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册