提交 60eb5b7d 编写于 作者: O obdev 提交者: OB-robot

Placeholder for error code, item type and system variable

上级 f11605c5
......@@ -476,6 +476,19 @@ typedef enum ObItemType
T_FUN_SYS_ERRNO = 751,
T_FUN_SYS_ADDTIME = 752,
T_FUN_SYS_DAY_NAME = 753,
T_FUN_SYS_UUID2BIN = 754,
T_FUN_SYS_IS_UUID = 755,
T_FUN_SYS_BIN2UUID = 756,
T_FUN_SYS_NAME_CONST = 757,
T_FUN_SYS_FORMAT_BYTES = 758,
T_FUN_SYS_FORMAT_PICO_TIME = 759,
T_FUN_SYS_DECODE = 760,
T_FUN_SYS_ENCODE = 761,
T_FUN_SYS_DES_DECRYPT = 762,
T_FUN_SYS_DES_ENCRYPT = 763,
T_FUN_SYS_ENCRYPT = 764,
T_FUN_SYS_ICU_VERSION = 765,
///< @note add new mysql only function type before this line
T_MYSQL_ONLY_SYS_MAX_OP = 800,
......@@ -1073,6 +1086,7 @@ typedef enum ObItemType
T_SHOW_RESTORE_PREVIEW,
T_SHOW_CREATE_TRIGGER,
T_SHOW_QUERY_RESPONSE_TIME,
T_SHOW_SEQUENCES,
T_SHOW_GRANTS, //新增show类型请添加在T_SHOW_GRANTS前面
T_SHOW_LIMIT,
......@@ -2090,7 +2104,7 @@ typedef enum ObItemType
T_ALL_COLUMN_GROUP,
T_SINGLE_COLUMN_GROUP,
T_NORMAL_COLUMN_GROUP,
T_TRACE_FORMAT,
T_MAX //Attention: add a new type before T_MAX
} ObItemType;
......
......@@ -942,6 +942,9 @@
#define ER_WINDOW_ILLEGAL_ORDER_BY 3592
#define ER_WINDOW_ROWS_INTERVAL_USE 3596
//for the cte table which is compatible with mysql 8.0.30
#define ER_CTE_MAX_RECURSION_DEPTH 3636
//for the check constraint which is compatible with mysql 8.0.25
#define ER_FK_CANNOT_DROP_PARENT 3730
#define ER_NON_BOOLEAN_EXPR_FOR_CHECK_CONSTRAINT 3812
......
......@@ -7551,11 +7551,11 @@ static const _error _error_OB_ERR_REGEXP_ERROR = {
.error_solution = "Contact OceanBase Support",
.mysql_errno = ER_REGEXP_ERROR,
.sqlstate = "42000",
.str_error = "Got error 'empty (sub)expression' from regexp",
.str_user_error = "Got error 'empty (sub)expression' from regexp",
.str_error = "Got error from regexp",
.str_user_error = "Got error '%s' from regexp",
.oracle_errno = 600,
.oracle_str_error = "ORA-00600: internal error code, arguments: -5115, Got error 'empty (sub)expression' from regexp",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5115, Got error 'empty (sub)expression' from regexp"
.oracle_str_error = "ORA-00600: internal error code, arguments: -5115, Got error from regexp",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5115, Got error '%s' from regexp"
};
static const _error _error_OB_SQL_LOG_OP_SETCHILD_OVERFLOW = {
.error_name = "OB_SQL_LOG_OP_SETCHILD_OVERFLOW",
......@@ -10737,6 +10737,54 @@ static const _error _error_OB_ERR_COLUMN_GROUP_DUPLICATE = {
.oracle_str_error = "ORA-00600: internal error code, arguments: -5404, Duplicate column group name",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5404, Duplicate column group name '%.*s'"
};
static const _error _error_OB_ERR_RESERVED_SYNTAX = {
.error_name = "OB_ERR_RESERVED_SYNTAX",
.error_cause = "Internal Error",
.error_solution = "Contact OceanBase Support",
.mysql_errno = ER_RESERVED_SYNTAX,
.sqlstate = "HY000",
.str_error = "The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server",
.str_user_error = "The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server",
.oracle_errno = 600,
.oracle_str_error = "ORA-00600: internal error code, arguments: -5405, The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5405, The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server"
};
static const _error _error_OB_ERR_INVALID_PARAM_TO_PROCEDURE = {
.error_name = "OB_ERR_INVALID_PARAM_TO_PROCEDURE",
.error_cause = "Internal Error",
.error_solution = "Contact OceanBase Support",
.mysql_errno = ER_WRONG_PARAMETERS_TO_PROCEDURE,
.sqlstate = "HY000",
.str_error = "Incorrect parameters to procedure \'%.*s\'",
.str_user_error = "Incorrect parameters to procedure \'%.*s\'",
.oracle_errno = 600,
.oracle_str_error = "ORA-00600: internal error code, arguments: -5406, Incorrect parameters to procedure \'%.*s\'",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5406, Incorrect parameters to procedure \'%.*s\'"
};
static const _error _error_OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT = {
.error_name = "OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT",
.error_cause = "Internal Error",
.error_solution = "Contact OceanBase Support",
.mysql_errno = ER_WRONG_PARAMETERS_TO_NATIVE_FCT,
.sqlstate = "42000",
.str_error = "Incorrect parameters in the call to native function",
.str_user_error = "Incorrect parameters in the call to native function '%.*s'",
.oracle_errno = 600,
.oracle_str_error = "ORA-00600: internal error code, arguments: -5407, Incorrect parameters in the call to native function",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5407, Incorrect parameters in the call to native function '%.*s'"
};
static const _error _error_OB_ERR_CTE_MAX_RECURSION_DEPTH = {
.error_name = "OB_ERR_CTE_MAX_RECURSION_DEPTH",
.error_cause = "Internal Error",
.error_solution = "Contact OceanBase Support",
.mysql_errno = ER_CTE_MAX_RECURSION_DEPTH,
.sqlstate = "HY000",
.str_error = "Recursive query aborted after multiple iterations. Try increasing @@cte_max_recursion_depth to a larger value.",
.str_user_error = "Recursive query aborted after %lu iterations. Try increasing @@cte_max_recursion_depth to a larger value.",
.oracle_errno = 600,
.oracle_str_error = "ORA-00600: internal error code, arguments: -5408, Recursive query aborted after multiple iterations. Try increasing @@cte_max_recursion_depth to a larger value.",
.oracle_str_user_error = "ORA-00600: internal error code, arguments: -5408, Recursive query aborted after %lu iterations. Try increasing @@cte_max_recursion_depth to a larger value."
};
static const _error _error_OB_ERR_INVALID_JSON_TEXT = {
.error_name = "OB_ERR_INVALID_JSON_TEXT",
.error_cause = "Internal Error",
......@@ -22905,6 +22953,10 @@ struct ObStrErrorInit
_errors[-OB_ERR_GET_STACKED_DIAGNOSTICS] = &_error_OB_ERR_GET_STACKED_DIAGNOSTICS;
_errors[-OB_DDL_SCHEMA_VERSION_NOT_MATCH] = &_error_OB_DDL_SCHEMA_VERSION_NOT_MATCH;
_errors[-OB_ERR_COLUMN_GROUP_DUPLICATE] = &_error_OB_ERR_COLUMN_GROUP_DUPLICATE;
_errors[-OB_ERR_RESERVED_SYNTAX] = &_error_OB_ERR_RESERVED_SYNTAX;
_errors[-OB_ERR_INVALID_PARAM_TO_PROCEDURE] = &_error_OB_ERR_INVALID_PARAM_TO_PROCEDURE;
_errors[-OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT] = &_error_OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT;
_errors[-OB_ERR_CTE_MAX_RECURSION_DEPTH] = &_error_OB_ERR_CTE_MAX_RECURSION_DEPTH;
_errors[-OB_ERR_INVALID_JSON_TEXT] = &_error_OB_ERR_INVALID_JSON_TEXT;
_errors[-OB_ERR_INVALID_JSON_TEXT_IN_PARAM] = &_error_OB_ERR_INVALID_JSON_TEXT_IN_PARAM;
_errors[-OB_ERR_INVALID_JSON_BINARY_DATA] = &_error_OB_ERR_INVALID_JSON_BINARY_DATA;
......@@ -729,7 +729,7 @@ DEFINE_ERROR_EXT_DEP(OB_INVALID_ARGUMENT_FOR_USEC_TO_TIME, -5111, -1, "42000", "
DEFINE_ERROR_EXT(OB_ERR_USER_VARIABLE_UNKNOWN, -5112, -1, "42P01", "Unknown user variable", "Variable %.*s does not exists");
DEFINE_ERROR_EXT(OB_ILLEGAL_USAGE_OF_MERGING_FROZEN_TIME, -5113, -1, "42000", "Illegal usage of merging_frozen_time()", "MERGING_FROZEN_TIME() system function only be used in daily merging.");
DEFINE_ORACLE_ERROR_EXT_DEP(OB_INVALID_NUMERIC, -5114, -1, "42000", "Invalid numeric", "Invalid numeric char '%c'", 1722, "invalid number", "invalid number char '%c'");
DEFINE_ERROR_DEP(OB_ERR_REGEXP_ERROR, -5115, ER_REGEXP_ERROR, "42000", "Got error 'empty (sub)expression' from regexp");
DEFINE_ERROR_EXT_DEP(OB_ERR_REGEXP_ERROR, -5115, ER_REGEXP_ERROR, "42000", "Got error from regexp", "Got error '%s' from regexp");
DEFINE_ERROR(OB_SQL_LOG_OP_SETCHILD_OVERFLOW, -5116, -1, "HY000", "Logical operator child index overflow");
DEFINE_ERROR(OB_SQL_EXPLAIN_FAILED, -5117, -1, "HY000", "fail to explain plan");
DEFINE_ERROR(OB_SQL_OPT_COPY_OP_FAILED, -5118, -1, "HY000", "fail to copy logical operator");
......@@ -998,6 +998,10 @@ DEFINE_ORACLE_ERROR(OB_ERR_RESULTANT_DATA_TYPE_OF_VIRTUAL_COLUMN_IS_NOT_SUPPORTE
DEFINE_ERROR(OB_ERR_GET_STACKED_DIAGNOSTICS, -5402, ER_GET_STACKED_DIAGNOSTICS_INACTIVE, "0Z002", "GET STACKED DIAGNOSTICS when handler not active");
DEFINE_ERROR(OB_DDL_SCHEMA_VERSION_NOT_MATCH, -5403, -1, "HY000", "ddl schema version not match");
DEFINE_ERROR_EXT(OB_ERR_COLUMN_GROUP_DUPLICATE, -5404, ER_DUP_FIELDNAME, "42S21", "Duplicate column group name", "Duplicate column group name '%.*s'");
DEFINE_ERROR_EXT(OB_ERR_RESERVED_SYNTAX, -5405, ER_RESERVED_SYNTAX, "HY000", "The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server", "The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server");
DEFINE_ERROR_EXT(OB_ERR_INVALID_PARAM_TO_PROCEDURE, -5406, ER_WRONG_PARAMETERS_TO_PROCEDURE, "HY000", "Incorrect parameters to procedure \'%.*s\'", "Incorrect parameters to procedure \'%.*s\'");
DEFINE_ERROR_EXT(OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT, -5407, ER_WRONG_PARAMETERS_TO_NATIVE_FCT, "42000", "Incorrect parameters in the call to native function", "Incorrect parameters in the call to native function '%.*s'");
DEFINE_ERROR_EXT(OB_ERR_CTE_MAX_RECURSION_DEPTH, -5408, ER_CTE_MAX_RECURSION_DEPTH, "HY000", "Recursive query aborted after multiple iterations. Try increasing @@cte_max_recursion_depth to a larger value.", "Recursive query aborted after %lu iterations. Try increasing @@cte_max_recursion_depth to a larger value.");
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//error code for json -5410 ---- -5433, as for json only support mysql mode, error code for oracle use special values
......
......@@ -764,6 +764,10 @@ constexpr int OB_ERR_RESULTANT_DATA_TYPE_OF_VIRTUAL_COLUMN_IS_NOT_SUPPORTED = -5
constexpr int OB_ERR_GET_STACKED_DIAGNOSTICS = -5402;
constexpr int OB_DDL_SCHEMA_VERSION_NOT_MATCH = -5403;
constexpr int OB_ERR_COLUMN_GROUP_DUPLICATE = -5404;
constexpr int OB_ERR_RESERVED_SYNTAX = -5405;
constexpr int OB_ERR_INVALID_PARAM_TO_PROCEDURE = -5406;
constexpr int OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT = -5407;
constexpr int OB_ERR_CTE_MAX_RECURSION_DEPTH = -5408;
constexpr int OB_SQL_RETRY_SPM = -5434;
constexpr int OB_OUTLINE_NOT_REPRODUCIBLE = -5435;
constexpr int OB_EER_WINDOW_NO_CHILD_PARTITIONING = -5438;
......@@ -2230,7 +2234,7 @@ constexpr int OB_ERR_INVALID_DATE_MSG_FMT_V2 = -4219;
#define OB_ERR_USER_VARIABLE_UNKNOWN__USER_ERROR_MSG "Variable %.*s does not exists"
#define OB_ILLEGAL_USAGE_OF_MERGING_FROZEN_TIME__USER_ERROR_MSG "MERGING_FROZEN_TIME() system function only be used in daily merging."
#define OB_INVALID_NUMERIC__USER_ERROR_MSG "Invalid numeric char '%c'"
#define OB_ERR_REGEXP_ERROR__USER_ERROR_MSG "Got error 'empty (sub)expression' from regexp"
#define OB_ERR_REGEXP_ERROR__USER_ERROR_MSG "Got error '%s' from regexp"
#define OB_SQL_LOG_OP_SETCHILD_OVERFLOW__USER_ERROR_MSG "Logical operator child index overflow"
#define OB_SQL_EXPLAIN_FAILED__USER_ERROR_MSG "fail to explain plan"
#define OB_SQL_OPT_COPY_OP_FAILED__USER_ERROR_MSG "fail to copy logical operator"
......@@ -2496,6 +2500,10 @@ constexpr int OB_ERR_INVALID_DATE_MSG_FMT_V2 = -4219;
#define OB_ERR_GET_STACKED_DIAGNOSTICS__USER_ERROR_MSG "GET STACKED DIAGNOSTICS when handler not active"
#define OB_DDL_SCHEMA_VERSION_NOT_MATCH__USER_ERROR_MSG "ddl schema version not match"
#define OB_ERR_COLUMN_GROUP_DUPLICATE__USER_ERROR_MSG "Duplicate column group name '%.*s'"
#define OB_ERR_RESERVED_SYNTAX__USER_ERROR_MSG "The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server"
#define OB_ERR_INVALID_PARAM_TO_PROCEDURE__USER_ERROR_MSG "Incorrect parameters to procedure \'%.*s\'"
#define OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT__USER_ERROR_MSG "Incorrect parameters in the call to native function '%.*s'"
#define OB_ERR_CTE_MAX_RECURSION_DEPTH__USER_ERROR_MSG "Recursive query aborted after %lu iterations. Try increasing @@cte_max_recursion_depth to a larger value."
#define OB_ERR_INVALID_JSON_TEXT__USER_ERROR_MSG "Invalid JSON text."
#define OB_ERR_INVALID_JSON_TEXT_IN_PARAM__USER_ERROR_MSG "Invalid JSON text in argument."
#define OB_ERR_INVALID_JSON_BINARY_DATA__USER_ERROR_MSG "The JSON binary value contains invalid data."
......@@ -4065,7 +4073,7 @@ constexpr int OB_ERR_INVALID_DATE_MSG_FMT_V2 = -4219;
#define OB_ERR_USER_VARIABLE_UNKNOWN__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5112, Variable %.*s does not exists"
#define OB_ILLEGAL_USAGE_OF_MERGING_FROZEN_TIME__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5113, MERGING_FROZEN_TIME() system function only be used in daily merging."
#define OB_INVALID_NUMERIC__ORA_USER_ERROR_MSG "ORA-01722: invalid number char '%c'"
#define OB_ERR_REGEXP_ERROR__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5115, Got error 'empty (sub)expression' from regexp"
#define OB_ERR_REGEXP_ERROR__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5115, Got error '%s' from regexp"
#define OB_SQL_LOG_OP_SETCHILD_OVERFLOW__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5116, Logical operator child index overflow"
#define OB_SQL_EXPLAIN_FAILED__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5117, fail to explain plan"
#define OB_SQL_OPT_COPY_OP_FAILED__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5118, fail to copy logical operator"
......@@ -4331,6 +4339,10 @@ constexpr int OB_ERR_INVALID_DATE_MSG_FMT_V2 = -4219;
#define OB_ERR_GET_STACKED_DIAGNOSTICS__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5402, GET STACKED DIAGNOSTICS when handler not active"
#define OB_DDL_SCHEMA_VERSION_NOT_MATCH__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5403, ddl schema version not match"
#define OB_ERR_COLUMN_GROUP_DUPLICATE__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5404, Duplicate column group name '%.*s'"
#define OB_ERR_RESERVED_SYNTAX__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5405, The \'%.*s\' syntax is reserved for purposes internal to the OceanBase Server"
#define OB_ERR_INVALID_PARAM_TO_PROCEDURE__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5406, Incorrect parameters to procedure \'%.*s\'"
#define OB_ERR_WRONG_PARAMETERS_TO_NATIVE_FCT__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5407, Incorrect parameters in the call to native function '%.*s'"
#define OB_ERR_CTE_MAX_RECURSION_DEPTH__ORA_USER_ERROR_MSG "ORA-00600: internal error code, arguments: -5408, Recursive query aborted after %lu iterations. Try increasing @@cte_max_recursion_depth to a larger value."
#define OB_ERR_INVALID_JSON_TEXT__ORA_USER_ERROR_MSG "ORA-00600: Invalid JSON text."
#define OB_ERR_INVALID_JSON_TEXT_IN_PARAM__ORA_USER_ERROR_MSG "ORA-00600: Invalid JSON text in argument."
#define OB_ERR_INVALID_JSON_BINARY_DATA__ORA_USER_ERROR_MSG "ORA-00600: The JSON binary value contains invalid data."
......
......@@ -115,6 +115,9 @@ enum ObSysVarClassType
SYS_VAR_LOG_BIN = 91,
SYS_VAR_SERVER_UUID = 92,
SYS_VAR_DEFAULT_STORAGE_ENGINE = 93,
SYS_VAR_CTE_MAX_RECURSION_DEPTH = 94,
SYS_VAR_REGEXP_STACK_LIMIT = 95,
SYS_VAR_REGEXP_TIME_LIMIT = 96,
SYS_VAR_OB_INTERM_RESULT_MEM_LIMIT = 10001,
SYS_VAR_OB_PROXY_PARTITION_HIT = 10002,
SYS_VAR_OB_LOG_LEVEL = 10003,
......@@ -236,6 +239,7 @@ enum ObSysVarClassType
SYS_VAR_INNODB_STRICT_MODE = 10132,
SYS_VAR__WINDOWFUNC_OPTIMIZATION_SETTINGS = 10133,
SYS_VAR_OB_ENABLE_RICH_ERROR_MSG = 10134,
SYS_VAR_OB_SQL_PLAN_MEMORY_PERCENTAGE = 10135,
};
}
......
......@@ -110,6 +110,9 @@ namespace share
static const char* const OB_SV_LOG_BIN = "log_bin";
static const char* const OB_SV_SERVER_UUID = "server_uuid";
static const char* const OB_SV_DEFAULT_STORAGE_ENGINE = "default_storage_engine";
static const char* const OB_SV_CTE_MAX_RECURSION_DEPTH = "cte_max_recursion_depth";
static const char* const OB_SV_REGEXP_STACK_LIMIT = "regexp_stack_limit";
static const char* const OB_SV_REGEXP_TIME_LIMIT = "regexp_time_limit";
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";
static const char* const OB_SV_LOG_LEVEL = "ob_log_level";
......@@ -231,6 +234,7 @@ namespace share
static const char* const OB_SV_INNODB_STRICT_MODE = "innodb_strict_mode";
static const char* const OB_SV__WINDOWFUNC_OPTIMIZATION_SETTINGS = "_windowfunc_optimization_settings";
static const char* const OB_SV_ENABLE_RICH_ERROR_MSG = "ob_enable_rich_error_msg";
static const char* const OB_SV_SQL_PLAN_MEMORY_PERCENTAGE = "ob_sql_plan_memory_percentage";
}
}
......
......@@ -166,6 +166,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
"collation_server",
"concurrent_insert",
"connect_timeout",
"cte_max_recursion_depth",
"cursor_sharing",
"datadir",
"debug_sync",
......@@ -257,6 +258,7 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
"ob_route_policy",
"ob_safe_weak_read_snapshot",
"ob_sql_audit_percentage",
"ob_sql_plan_memory_percentage",
"ob_sql_work_area_percentage",
"ob_statement_trace_id",
"ob_tcp_invited_nodes",
......@@ -280,6 +282,8 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_NAME[] = {
"query_cache_wlock_invalidate",
"read_only",
"recyclebin",
"regexp_stack_limit",
"regexp_time_limit",
"resource_manager_plan",
"secure_file_priv",
"server_id",
......@@ -384,6 +388,7 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = {
SYS_VAR_COLLATION_SERVER,
SYS_VAR_CONCURRENT_INSERT,
SYS_VAR_CONNECT_TIMEOUT,
SYS_VAR_CTE_MAX_RECURSION_DEPTH,
SYS_VAR_CURSOR_SHARING,
SYS_VAR_DATADIR,
SYS_VAR_DEBUG_SYNC,
......@@ -475,6 +480,7 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = {
SYS_VAR_OB_ROUTE_POLICY,
SYS_VAR_OB_SAFE_WEAK_READ_SNAPSHOT,
SYS_VAR_OB_SQL_AUDIT_PERCENTAGE,
SYS_VAR_OB_SQL_PLAN_MEMORY_PERCENTAGE,
SYS_VAR_OB_SQL_WORK_AREA_PERCENTAGE,
SYS_VAR_OB_STATEMENT_TRACE_ID,
SYS_VAR_OB_TCP_INVITED_NODES,
......@@ -498,6 +504,8 @@ const ObSysVarClassType ObSysVarFactory::SYS_VAR_IDS_SORTED_BY_NAME[] = {
SYS_VAR_QUERY_CACHE_WLOCK_INVALIDATE,
SYS_VAR_READ_ONLY,
SYS_VAR_RECYCLEBIN,
SYS_VAR_REGEXP_STACK_LIMIT,
SYS_VAR_REGEXP_TIME_LIMIT,
SYS_VAR_RESOURCE_MANAGER_PLAN,
SYS_VAR_SECURE_FILE_PRIV,
SYS_VAR_SERVER_ID,
......@@ -648,6 +656,9 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_ID[] = {
"log_bin",
"server_uuid",
"default_storage_engine",
"cte_max_recursion_depth",
"regexp_stack_limit",
"regexp_time_limit",
"ob_interm_result_mem_limit",
"ob_proxy_partition_hit",
"ob_log_level",
......@@ -768,7 +779,8 @@ const char *ObSysVarFactory::SYS_VAR_NAMES_SORTED_BY_ID[] = {
"sql_notes",
"innodb_strict_mode",
"_windowfunc_optimization_settings",
"ob_enable_rich_error_msg"
"ob_enable_rich_error_msg",
"ob_sql_plan_memory_percentage"
};
bool ObSysVarFactory::sys_var_name_case_cmp(const char *name1, const ObString &name2)
......@@ -1030,6 +1042,9 @@ int ObSysVarFactory::create_all_sys_vars()
+ sizeof(ObSysVarLogBin)
+ sizeof(ObSysVarServerUuid)
+ sizeof(ObSysVarDefaultStorageEngine)
+ sizeof(ObSysVarCteMaxRecursionDepth)
+ sizeof(ObSysVarRegexpStackLimit)
+ sizeof(ObSysVarRegexpTimeLimit)
+ sizeof(ObSysVarObIntermResultMemLimit)
+ sizeof(ObSysVarObProxyPartitionHit)
+ sizeof(ObSysVarObLogLevel)
......@@ -1151,6 +1166,7 @@ int ObSysVarFactory::create_all_sys_vars()
+ sizeof(ObSysVarInnodbStrictMode)
+ sizeof(ObSysVarWindowfuncOptimizationSettings)
+ sizeof(ObSysVarObEnableRichErrorMsg)
+ sizeof(ObSysVarObSqlPlanMemoryPercentage)
;
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(total_mem_size))) {
......@@ -2005,6 +2021,33 @@ int ObSysVarFactory::create_all_sys_vars()
ptr = (void *)((char *)ptr + sizeof(ObSysVarDefaultStorageEngine));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarCteMaxRecursionDepth())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarCteMaxRecursionDepth", K(ret));
} else {
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_CTE_MAX_RECURSION_DEPTH))] = sys_var_ptr;
ptr = (void *)((char *)ptr + sizeof(ObSysVarCteMaxRecursionDepth));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarRegexpStackLimit())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarRegexpStackLimit", K(ret));
} else {
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_REGEXP_STACK_LIMIT))] = sys_var_ptr;
ptr = (void *)((char *)ptr + sizeof(ObSysVarRegexpStackLimit));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarRegexpTimeLimit())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarRegexpTimeLimit", K(ret));
} else {
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_REGEXP_TIME_LIMIT))] = sys_var_ptr;
ptr = (void *)((char *)ptr + sizeof(ObSysVarRegexpTimeLimit));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarObIntermResultMemLimit())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
......@@ -3094,6 +3137,15 @@ int ObSysVarFactory::create_all_sys_vars()
ptr = (void *)((char *)ptr + sizeof(ObSysVarObEnableRichErrorMsg));
}
}
if (OB_SUCC(ret)) {
if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarObSqlPlanMemoryPercentage())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarObSqlPlanMemoryPercentage", K(ret));
} else {
store_buf_[ObSysVarsToIdxMap::get_store_idx(static_cast<int64_t>(SYS_VAR_OB_SQL_PLAN_MEMORY_PERCENTAGE))] = sys_var_ptr;
ptr = (void *)((char *)ptr + sizeof(ObSysVarObSqlPlanMemoryPercentage));
}
}
}
return ret;
......@@ -4154,6 +4206,39 @@ int ObSysVarFactory::create_sys_var(ObSysVarClassType sys_var_id, ObBasicSysVar
}
break;
}
case SYS_VAR_CTE_MAX_RECURSION_DEPTH: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarCteMaxRecursionDepth)))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarCteMaxRecursionDepth)));
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarCteMaxRecursionDepth())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarCteMaxRecursionDepth", K(ret));
}
break;
}
case SYS_VAR_REGEXP_STACK_LIMIT: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarRegexpStackLimit)))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarRegexpStackLimit)));
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarRegexpStackLimit())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarRegexpStackLimit", K(ret));
}
break;
}
case SYS_VAR_REGEXP_TIME_LIMIT: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarRegexpTimeLimit)))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarRegexpTimeLimit)));
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarRegexpTimeLimit())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarRegexpTimeLimit", K(ret));
}
break;
}
case SYS_VAR_OB_INTERM_RESULT_MEM_LIMIT: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarObIntermResultMemLimit)))) {
......@@ -5485,6 +5570,17 @@ int ObSysVarFactory::create_sys_var(ObSysVarClassType sys_var_id, ObBasicSysVar
}
break;
}
case SYS_VAR_OB_SQL_PLAN_MEMORY_PERCENTAGE: {
void *ptr = NULL;
if (OB_ISNULL(ptr = allocator_.alloc(sizeof(ObSysVarObSqlPlanMemoryPercentage)))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to alloc memory", K(ret), K(sizeof(ObSysVarObSqlPlanMemoryPercentage)));
} else if (OB_ISNULL(sys_var_ptr = new (ptr)ObSysVarObSqlPlanMemoryPercentage())) {
ret = OB_ALLOCATE_MEMORY_FAILED;
LOG_ERROR("fail to new ObSysVarObSqlPlanMemoryPercentage", K(ret));
}
break;
}
default: {
ret = OB_ERR_UNEXPECTED;
......
......@@ -1265,6 +1265,48 @@
"background_cn": "",
"ref_url": ""
},
"cte_max_recursion_depth": {
"id": 94,
"name": "cte_max_recursion_depth",
"value": "1000",
"data_type": "uint",
"info": "Abort a recursive common table expression if it does more than this number of iterations.",
"flags": "GLOBAL | SESSION | MYSQL_ONLY",
"min_val": "0",
"max_val": "4294967295",
"publish_version": "400",
"info_cn": "",
"background_cn": "",
"ref_url": "https://aone.alibaba-inc.com/task/45803397"
},
"regexp_stack_limit": {
"id": 95,
"name": "regexp_stack_limit",
"value": "8000000",
"data_type": "int",
"info": "The maximum available memory in bytes for the internal stack used for regular expression matching operations",
"flags": "GLOBAL",
"min_val": "0",
"max_val": "2147483647",
"publish_version": "410",
"info_cn": "",
"background_cn": "",
"ref_url": ""
},
"regexp_time_limit": {
"id": 96,
"name": "regexp_time_limit",
"value": "32",
"data_type": "int",
"info": "The time limit for regular expression matching operations, default unit is milliseconds",
"flags": "GLOBAL",
"min_val": "0",
"max_val": "2147483647",
"publish_version": "410",
"info_cn": "",
"background_cn": "",
"ref_url": ""
},
"ob_interm_result_mem_limit": {
"id": 10001,
"name": "ob_interm_result_mem_limit",
......@@ -2852,5 +2894,19 @@
"info_cn": "",
"background_cn": "",
"ref_url": "https://yuque.antfin-inc.com/ob/product_functionality_review/zst4cy"
},
"ob_sql_plan_memory_percentage": {
"id": 10135,
"name": "ob_sql_plan_memory_percentage",
"value": "5",
"data_type": "int",
"info": "The limited percentage of tenant memory for sql plan",
"flags": "GLOBAL | NEED_SERIALIZE",
"min_val": "0",
"max_val": "80",
"publish_version": "",
"info_cn": "",
"background_cn": "",
"ref_url": ""
}
}
......@@ -32,7 +32,7 @@ select '' regexp '^$';
| 1 |
+----------------+
select 'a' regexp '';
ERROR 42000: Got error 'empty (sub)expression' from regexp
ERROR 42000: Got error from regexp
select NULL regexp 'a';
+-----------------+
| NULL regexp 'a' |
......
......@@ -96,7 +96,7 @@ ERROR HY000: Invalid argument
select regexp_instr('', 'a. ', 1, 2, 1, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_instr('abcadef', '', 1, 2, 1, 'x') from dual;
ERROR 42000: Got error 'empty (sub)expression' from regexp
ERROR 42000: Got error from regexp
select regexp_instr('abcadef', 'a. ', NULL, 2, 1, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_instr('abcadef', 'a. ', 1, NULL, 1, 'x') from dual;
......@@ -156,7 +156,7 @@ ERROR HY000: Invalid argument
select regexp_substr('', 'a. ', 1, 2, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_substr('abcadef', '', 1, 2, 'x') from dual;
ERROR 42000: Got error 'empty (sub)expression' from regexp
ERROR 42000: Got error from regexp
select regexp_substr('abcadef', 'a. ', NULL, 2, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_substr('abcadef', 'a. ', 1, NULL, 'x') from dual;
......@@ -256,7 +256,7 @@ ERROR HY000: Invalid argument
select regexp_replace('', 'a. ', 'X', 1, 2, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_replace('abcadef', '', 'X', 1, 2, 'x') from dual;
ERROR 42000: Got error 'empty (sub)expression' from regexp
ERROR 42000: Got error from regexp
select regexp_replace('abcadef', 'a. ', NULL, 1, 2, 'x') from dual;
ERROR HY000: Invalid argument
select regexp_replace('abcadef', 'a. ', 'X', NULL, 2, 'x') from dual;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册