alter ob_tcp_invited_nodes max_length=64K

This commit is contained in:
zhjc1124
2023-10-12 02:39:55 +00:00
committed by ob-robot
parent fc85a979ab
commit e621b30dd9
15 changed files with 46 additions and 658 deletions

View File

@ -379,9 +379,18 @@ int check_sys_var_options(ObExecContext &ctx,
EXPR_DEFINE_CAST_CTX(expr_ctx, CM_NONE);
EXPR_GET_VARCHAR_V2(value_obj, val_str);
if (OB_SUCC(ret)) {
if(OB_UNLIKELY(val_str.length() > OB_MAX_SYS_VAR_VAL_LENGTH)) {
int64_t sys_var_val_length = OB_MAX_SYS_VAR_VAL_LENGTH;
if (set_var.var_name_ == OB_SV_TCP_INVITED_NODES) {
uint64_t data_version = 0;
if (OB_FAIL(GET_MIN_DATA_VERSION(set_var.actual_tenant_id_, data_version))) {
LOG_WARN("fail to get sys data version", KR(ret));
} else if (data_version >= DATA_VERSION_4_2_1_1) {
sys_var_val_length = OB_MAX_TCP_INVITED_NODES_LENGTH;
}
}
if (OB_SUCC(ret) && OB_UNLIKELY(val_str.length() > sys_var_val_length)) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("set sysvar value is overflow", "max length", OB_MAX_SYS_VAR_VAL_LENGTH, "value length", val_str.length(), K(sys_id), K(val_str));
LOG_WARN("set sysvar value is overflow", "max length", sys_var_val_length, "value length", val_str.length(), K(sys_id), K(val_str));
} else if (OB_FAIL(sys_var_list.push_back(obrpc::ObSysVarIdValue(sys_id, val_str)))) {
LOG_WARN("failed to push back", K(sys_id), K(val_str), K(ret));
}

View File

@ -715,9 +715,19 @@ int ObVariableSetExecutor::update_global_variables(ObExecContext &ctx,
EXPR_DEFINE_CAST_CTX(expr_ctx, CM_NONE);
EXPR_GET_VARCHAR_V2(val, val_str);
ObSysVarSchema sysvar_schema;
if (OB_UNLIKELY(val_str.length() > OB_MAX_SYS_VAR_VAL_LENGTH)) {
int64_t sys_var_val_length = OB_MAX_SYS_VAR_VAL_LENGTH;
if (set_var.var_name_ == OB_SV_TCP_INVITED_NODES) {
uint64_t data_version = 0;
if (OB_FAIL(GET_MIN_DATA_VERSION(set_var.actual_tenant_id_, data_version))) {
LOG_WARN("fail to get sys data version", KR(ret));
} else if (data_version >= DATA_VERSION_4_2_1_1) {
sys_var_val_length = OB_MAX_TCP_INVITED_NODES_LENGTH;
}
}
if (OB_SUCC(ret) && OB_UNLIKELY(val_str.length() > sys_var_val_length)) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("set sysvar value is overflow", "max length", OB_MAX_SYS_VAR_VAL_LENGTH,
LOG_WARN("set sysvar value is overflow", "max length", sys_var_val_length,
"value length", val_str.length(), "name", set_var.var_name_, "value", val_str);
} else if (OB_FAIL(sysvar_schema.set_name(set_var.var_name_))) {
LOG_WARN("set sysvar schema name failed", K(ret));

View File

@ -79,14 +79,27 @@ int ObExprGetSysVar::calc_result_type2(ObExprResType &type,
}
if (ob_is_string_type(data_type)) {
type.set_collation_level(CS_LEVEL_SYSCONST);
type.set_length(OB_MAX_SYS_VAR_VAL_LENGTH);
if (is_oracle_mode()) {
type.set_collation_type(session->get_nls_collation());
type.set_length_semantics(session->get_actual_nls_length_semantics());
} else {
ObCollationType conn_coll = CS_TYPE_INVALID;
OZ(session->get_collation_connection(conn_coll));
OX(type.set_collation_type(conn_coll));
int64_t sys_var_val_length = OB_MAX_SYS_VAR_VAL_LENGTH;
if (0 == var_name.compare(OB_SV_TCP_INVITED_NODES)) {
uint64_t data_version = 0;
if (OB_FAIL(GET_MIN_DATA_VERSION(session->get_effective_tenant_id(), data_version))) {
LOG_WARN("fail to get sys data version", KR(ret));
} else if (data_version >= DATA_VERSION_4_2_1_1) {
sys_var_val_length = OB_MAX_TCP_INVITED_NODES_LENGTH;
}
}
if (OB_SUCC(ret)) {
type.set_length(sys_var_val_length);
if (is_oracle_mode()) {
type.set_collation_type(session->get_nls_collation());
type.set_length_semantics(session->get_actual_nls_length_semantics());
} else {
ObCollationType conn_coll = CS_TYPE_INVALID;
OZ(session->get_collation_connection(conn_coll));
OX(type.set_collation_type(conn_coll));
}
}
}
}

View File

@ -123,23 +123,6 @@ int ObCreateTenantStmt::set_default_tablegroup_name(const common::ObString &tabl
return create_tenant_arg_.tenant_schema_.set_default_tablegroup_name(tablegroup_name);
}
int ObCreateTenantStmt::set_tcp_invited_nodes(common::ObString value)
{
int ret = OB_SUCCESS;
const share::ObSysVarClassType sys_id = share::SYS_VAR_OB_TCP_INVITED_NODES;
if (value.empty()) {
//if not set it, or set it null, use ALLOW_ALL police
value = common::ObString::make_string("%");
}
if(OB_UNLIKELY(value.length() > OB_MAX_SYS_VAR_VAL_LENGTH)) {
ret = OB_SIZE_OVERFLOW;
LOG_WARN("set sysvar value is overflow", "max length", OB_MAX_SYS_VAR_VAL_LENGTH, "value length", value.length(), K(sys_id), K(value));
} else if (OB_FAIL(create_tenant_arg_.sys_var_list_.push_back(obrpc::ObSysVarIdValue(sys_id, value)))) {
LOG_WARN("failed to push back", K(sys_id), K(value), K(ret));
}
return ret;
}
void ObCreateTenantStmt::set_create_standby_tenant()
{
create_tenant_arg_.is_creating_standby_ = true;

View File

@ -37,7 +37,6 @@ public:
int add_zone(const common::ObString &zone);
int set_comment(const common::ObString &commont);
int set_locality(const common::ObString &locality);
int set_tcp_invited_nodes(common::ObString value);
void set_primary_zone(const common::ObString &zone);
void set_if_not_exist(const bool is_exist);
void set_charset_type(const common::ObCharsetType type);