init push

This commit is contained in:
oceanbase-admin
2021-05-31 22:56:52 +08:00
commit cea7de1475
7020 changed files with 5689869 additions and 0 deletions

View File

@ -0,0 +1,219 @@
/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#ifndef OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYS_VAR_CLASS_TYPE_
#define OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYS_VAR_CLASS_TYPE_
#include <stdint.h>
namespace oceanbase {
namespace share {
enum ObSysVarClassType {
SYS_VAR_INVALID = -1,
SYS_VAR_AUTO_INCREMENT_INCREMENT = 0,
SYS_VAR_AUTO_INCREMENT_OFFSET = 1,
SYS_VAR_AUTOCOMMIT = 2,
SYS_VAR_CHARACTER_SET_CLIENT = 3,
SYS_VAR_CHARACTER_SET_CONNECTION = 4,
SYS_VAR_CHARACTER_SET_DATABASE = 5,
SYS_VAR_CHARACTER_SET_RESULTS = 6,
SYS_VAR_CHARACTER_SET_SERVER = 7,
SYS_VAR_CHARACTER_SET_SYSTEM = 8,
SYS_VAR_COLLATION_CONNECTION = 9,
SYS_VAR_COLLATION_DATABASE = 10,
SYS_VAR_COLLATION_SERVER = 11,
SYS_VAR_INTERACTIVE_TIMEOUT = 12,
SYS_VAR_LAST_INSERT_ID = 13,
SYS_VAR_MAX_ALLOWED_PACKET = 14,
SYS_VAR_SQL_MODE = 15,
SYS_VAR_TIME_ZONE = 16,
SYS_VAR_TX_ISOLATION = 17,
SYS_VAR_VERSION_COMMENT = 18,
SYS_VAR_WAIT_TIMEOUT = 19,
SYS_VAR_BINLOG_ROW_IMAGE = 20,
SYS_VAR_CHARACTER_SET_FILESYSTEM = 21,
SYS_VAR_CONNECT_TIMEOUT = 22,
SYS_VAR_DATADIR = 23,
SYS_VAR_DEBUG_SYNC = 24,
SYS_VAR_DIV_PRECISION_INCREMENT = 25,
SYS_VAR_EXPLICIT_DEFAULTS_FOR_TIMESTAMP = 26,
SYS_VAR_GROUP_CONCAT_MAX_LEN = 27,
SYS_VAR_IDENTITY = 28,
SYS_VAR_LOWER_CASE_TABLE_NAMES = 29,
SYS_VAR_NET_READ_TIMEOUT = 30,
SYS_VAR_NET_WRITE_TIMEOUT = 31,
SYS_VAR_READ_ONLY = 32,
SYS_VAR_SQL_AUTO_IS_NULL = 33,
SYS_VAR_SQL_SELECT_LIMIT = 34,
SYS_VAR_TIMESTAMP = 35,
SYS_VAR_TX_READ_ONLY = 36,
SYS_VAR_VERSION = 37,
SYS_VAR_SQL_WARNINGS = 38,
SYS_VAR_MAX_USER_CONNECTIONS = 39,
SYS_VAR_INIT_CONNECT = 40,
SYS_VAR_LICENSE = 41,
SYS_VAR_NET_BUFFER_LENGTH = 42,
SYS_VAR_SYSTEM_TIME_ZONE = 43,
SYS_VAR_QUERY_CACHE_SIZE = 44,
SYS_VAR_QUERY_CACHE_TYPE = 45,
SYS_VAR_SQL_QUOTE_SHOW_CREATE = 46,
SYS_VAR_MAX_SP_RECURSION_DEPTH = 47,
SYS_VAR_SQL_SAFE_UPDATES = 48,
SYS_VAR_CONCURRENT_INSERT = 49,
SYS_VAR_DEFAULT_AUTHENTICATION_PLUGIN = 50,
SYS_VAR_DISABLED_STORAGE_ENGINES = 51,
SYS_VAR_ERROR_COUNT = 52,
SYS_VAR_GENERAL_LOG = 53,
SYS_VAR_HAVE_OPENSSL = 54,
SYS_VAR_HAVE_PROFILING = 55,
SYS_VAR_HAVE_SSL = 56,
SYS_VAR_HOSTNAME = 57,
SYS_VAR_LC_MESSAGES = 58,
SYS_VAR_LOCAL_INFILE = 59,
SYS_VAR_LOCK_WAIT_TIMEOUT = 60,
SYS_VAR_LONG_QUERY_TIME = 61,
SYS_VAR_MAX_CONNECTIONS = 62,
SYS_VAR_MAX_EXECUTION_TIME = 63,
SYS_VAR_PROTOCOL_VERSION = 64,
SYS_VAR_SERVER_ID = 65,
SYS_VAR_SSL_CA = 66,
SYS_VAR_SSL_CAPATH = 67,
SYS_VAR_SSL_CERT = 68,
SYS_VAR_SSL_CIPHER = 69,
SYS_VAR_SSL_CRL = 70,
SYS_VAR_SSL_CRLPATH = 71,
SYS_VAR_SSL_KEY = 72,
SYS_VAR_TIME_FORMAT = 73,
SYS_VAR_TLS_VERSION = 74,
SYS_VAR_TMP_TABLE_SIZE = 75,
SYS_VAR_TMPDIR = 76,
SYS_VAR_UNIQUE_CHECKS = 77,
SYS_VAR_VERSION_COMPILE_MACHINE = 78,
SYS_VAR_VERSION_COMPILE_OS = 79,
SYS_VAR_WARNING_COUNT = 80,
SYS_VAR_OB_DEFAULT_REPLICA_NUM = 10000,
SYS_VAR_OB_INTERM_RESULT_MEM_LIMIT = 10001,
SYS_VAR_OB_PROXY_PARTITION_HIT = 10002,
SYS_VAR_OB_LOG_LEVEL = 10003,
SYS_VAR_OB_MAX_PARALLEL_DEGREE = 10004,
SYS_VAR_OB_QUERY_TIMEOUT = 10005,
SYS_VAR_OB_READ_CONSISTENCY = 10006,
SYS_VAR_OB_ENABLE_TRANSFORMATION = 10007,
SYS_VAR_OB_TRX_TIMEOUT = 10008,
SYS_VAR_OB_ENABLE_PLAN_CACHE = 10009,
SYS_VAR_OB_ENABLE_INDEX_DIRECT_SELECT = 10010,
SYS_VAR_OB_PROXY_SET_TRX_EXECUTED = 10011,
SYS_VAR_OB_ENABLE_AGGREGATION_PUSHDOWN = 10012,
SYS_VAR_OB_LAST_SCHEMA_VERSION = 10013,
SYS_VAR_OB_GLOBAL_DEBUG_SYNC = 10014,
SYS_VAR_OB_PROXY_GLOBAL_VARIABLES_VERSION = 10015,
SYS_VAR_OB_ENABLE_TRACE_LOG = 10016,
SYS_VAR_OB_ENABLE_HASH_GROUP_BY = 10017,
SYS_VAR_OB_ENABLE_BLK_NESTEDLOOP_JOIN = 10018,
SYS_VAR_OB_BNL_JOIN_CACHE_SIZE = 10019,
SYS_VAR_OB_PROXY_USER_PRIVILEGE = 10020,
SYS_VAR_OB_ORG_CLUSTER_ID = 10021,
SYS_VAR_OB_PLAN_CACHE_PERCENTAGE = 10022,
SYS_VAR_OB_PLAN_CACHE_EVICT_HIGH_PERCENTAGE = 10023,
SYS_VAR_OB_PLAN_CACHE_EVICT_LOW_PERCENTAGE = 10024,
SYS_VAR_RECYCLEBIN = 10025,
SYS_VAR_OB_CAPABILITY_FLAG = 10026,
SYS_VAR_OB_STMT_PARALLEL_DEGREE = 10027,
SYS_VAR_IS_RESULT_ACCURATE = 10028,
SYS_VAR_ERROR_ON_OVERLAP_TIME = 10029,
SYS_VAR_OB_COMPATIBILITY_MODE = 10030,
SYS_VAR_OB_CREATE_TABLE_STRICT_MODE = 10031,
SYS_VAR_OB_SQL_WORK_AREA_PERCENTAGE = 10032,
SYS_VAR_OB_SAFE_WEAK_READ_SNAPSHOT = 10033,
SYS_VAR_OB_ROUTE_POLICY = 10034,
SYS_VAR_OB_ENABLE_TRANSMISSION_CHECKSUM = 10035,
SYS_VAR_FOREIGN_KEY_CHECKS = 10036,
SYS_VAR_OB_STATEMENT_TRACE_ID = 10037,
SYS_VAR_OB_ENABLE_TRUNCATE_FLASHBACK = 10038,
SYS_VAR_OB_TCP_INVITED_NODES = 10039,
SYS_VAR_SQL_THROTTLE_CURRENT_PRIORITY = 10040,
SYS_VAR_SQL_THROTTLE_PRIORITY = 10041,
SYS_VAR_SQL_THROTTLE_RT = 10042,
SYS_VAR_SQL_THROTTLE_CPU = 10043,
SYS_VAR_SQL_THROTTLE_IO = 10044,
SYS_VAR_SQL_THROTTLE_NETWORK = 10045,
SYS_VAR_SQL_THROTTLE_LOGICAL_READS = 10046,
SYS_VAR_AUTO_INCREMENT_CACHE_SIZE = 10047,
SYS_VAR_OB_ENABLE_JIT = 10048,
SYS_VAR_OB_TEMP_TABLESPACE_SIZE_PERCENTAGE = 10049,
SYS_VAR__OPTIMIZER_ADAPTIVE_CURSOR_SHARING = 10050,
SYS_VAR_OB_TIMESTAMP_SERVICE = 10051,
SYS_VAR_PLUGIN_DIR = 10052,
SYS_VAR_UNDO_RETENTION = 10053,
SYS_VAR__OB_USE_PARALLEL_EXECUTION = 10054,
SYS_VAR_OB_SQL_AUDIT_PERCENTAGE = 10055,
SYS_VAR_OB_ENABLE_SQL_AUDIT = 10056,
SYS_VAR_OPTIMIZER_USE_SQL_PLAN_BASELINES = 10057,
SYS_VAR_OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES = 10058,
SYS_VAR_PARALLEL_MAX_SERVERS = 10059,
SYS_VAR_PARALLEL_SERVERS_TARGET = 10060,
SYS_VAR_OB_EARLY_LOCK_RELEASE = 10061,
SYS_VAR_OB_TRX_IDLE_TIMEOUT = 10062,
SYS_VAR_BLOCK_ENCRYPTION_MODE = 10063,
SYS_VAR_NLS_DATE_FORMAT = 10064,
SYS_VAR_NLS_TIMESTAMP_FORMAT = 10065,
SYS_VAR_NLS_TIMESTAMP_TZ_FORMAT = 10066,
SYS_VAR_OB_RESERVED_META_MEMORY_PERCENTAGE = 10067,
SYS_VAR_OB_CHECK_SYS_VARIABLE = 10068,
SYS_VAR_NLS_LANGUAGE = 10069,
SYS_VAR_NLS_TERRITORY = 10070,
SYS_VAR_NLS_SORT = 10071,
SYS_VAR_NLS_COMP = 10072,
SYS_VAR_NLS_CHARACTERSET = 10073,
SYS_VAR_NLS_NCHAR_CHARACTERSET = 10074,
SYS_VAR_NLS_DATE_LANGUAGE = 10075,
SYS_VAR_NLS_LENGTH_SEMANTICS = 10076,
SYS_VAR_NLS_NCHAR_CONV_EXCP = 10077,
SYS_VAR_NLS_CALENDAR = 10078,
SYS_VAR_NLS_NUMERIC_CHARACTERS = 10079,
SYS_VAR__NLJ_BATCHING_ENABLED = 10080,
SYS_VAR_TRACEFILE_IDENTIFIER = 10081,
SYS_VAR__GROUPBY_NOPUSHDOWN_CUT_RATIO = 10082,
SYS_VAR__PX_BROADCAST_FUDGE_FACTOR = 10083,
SYS_VAR__PRIMARY_ZONE_ENTITY_COUNT = 10084,
SYS_VAR_TRANSACTION_ISOLATION = 10085,
SYS_VAR_OB_TRX_LOCK_TIMEOUT = 10086,
SYS_VAR_VALIDATE_PASSWORD_CHECK_USER_NAME = 10087,
SYS_VAR_VALIDATE_PASSWORD_LENGTH = 10088,
SYS_VAR_VALIDATE_PASSWORD_MIXED_CASE_COUNT = 10089,
SYS_VAR_VALIDATE_PASSWORD_NUMBER_COUNT = 10090,
SYS_VAR_VALIDATE_PASSWORD_POLICY = 10091,
SYS_VAR_VALIDATE_PASSWORD_SPECIAL_CHAR_COUNT = 10092,
SYS_VAR_DEFAULT_PASSWORD_LIFETIME = 10093,
SYS_VAR_OB_TRACE_INFO = 10095,
SYS_VAR_OB_ENABLE_BATCHED_MULTI_STATEMENT = 10096,
SYS_VAR__PX_PARTITION_SCAN_THRESHOLD = 10097,
SYS_VAR__OB_PX_BCAST_OPTIMIZATION = 10098,
SYS_VAR__OB_PX_SLAVE_MAPPING_THRESHOLD = 10099,
SYS_VAR__ENABLE_PARALLEL_DML = 10100,
SYS_VAR__PX_MIN_GRANULES_PER_SLAVE = 10101,
SYS_VAR_SECURE_FILE_PRIV = 10102,
SYS_VAR_PLSQL_WARNINGS = 10103,
SYS_VAR__ENABLE_PARALLEL_QUERY = 10104,
SYS_VAR__FORCE_PARALLEL_QUERY_DOP = 10105,
SYS_VAR__FORCE_PARALLEL_DML_DOP = 10106,
SYS_VAR_OB_PL_BLOCK_TIMEOUT = 10107,
SYS_VAR_TRANSACTION_READ_ONLY = 10108,
SYS_VAR_RESOURCE_MANAGER_PLAN = 10109,
SYS_VAR_PERFORMANCE_SCHEMA = 10110,
SYS_VAR_NLS_CURRENCY = 10111,
SYS_VAR_NLS_ISO_CURRENCY = 10112,
SYS_VAR_NLS_DUAL_CURRENCY = 10113,
};
}
} // namespace oceanbase
#endif // OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYS_VAR_CLASS_TYPE_

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,863 @@
/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#ifndef OCEANBASE_SQL_SESSION_OB_SYSTEM_VARIABLE_
#define OCEANBASE_SQL_SESSION_OB_SYSTEM_VARIABLE_
#include "lib/timezone/ob_time_convert.h"
#include "share/system_variable/ob_system_variable_init.h"
namespace oceanbase {
namespace common {
class ObMySQLProxy;
}
namespace sql {
class ObExecContext;
class ObBasicSessionInfo;
} // namespace sql
namespace share {
class ObSpecialSysVarValues {
public:
// OB_SV_VERSION_COMMENT
const static int64_t VERSION_COMMENT_MAX_LEN = 256;
static char version_comment_[VERSION_COMMENT_MAX_LEN];
// OB_SV_VERSION
const static int64_t VERSION_MAX_LEN = 256;
static char version_[VERSION_MAX_LEN];
// OB_SV_MAX_PARALLEL_DEGREE
const static int64_t MAX_PARALLEL_DEGREE_MAX_LEN = 64;
static char parallel_count_str_[MAX_PARALLEL_DEGREE_MAX_LEN];
// OB_SV_SYSTEM_TIME_ZONE
const static int64_t SYSTEM_TIME_ZONE_MAX_LEN = 64;
static char system_time_zone_str_[SYSTEM_TIME_ZONE_MAX_LEN];
static const int64_t COLL_INT_STR_MAX_LEN = 64;
static char default_coll_int_str_[COLL_INT_STR_MAX_LEN];
public:
ObSpecialSysVarValues();
};
class ObSetVar {
public:
enum SetScopeType {
/*
* most system variables can be set with:
* 1. GLOBAL scope
* with 'SET GLOBAL xxx=xxx' only in mysql mode.
* set with global scope will affect all sessions that created in future, and keep
* all exist sessions unchanged.
* 2. SESSION scope
* with 'SET [SESSION] xxx=xxx' in mysql mode, SESSION is optional.
* or 'ALTER SESSION SET xxx=xxx' in oracle mode,
* set with session scope will affect all following operations in current session.
* 3. NONE scope
* with 'SET xxx=xxx' in both mysql and oracle mode.
* besides GLOBAL and SESSION scopes, a few variables can be set with NONE scope,
* which only affect the NEXT ONE transaction in current session, like tx_isolation.
* so I think 'SET_SCOPE_NEXT_TRANS' is better than 'SET_SCOPE_NONE'.
*/
SET_SCOPE_NEXT_TRANS = 0,
SET_SCOPE_GLOBAL,
SET_SCOPE_SESSION,
};
ObSetVar(const common::ObString& var_name, ObSetVar::SetScopeType set_scope, bool is_set_default,
uint64_t actual_tenant_id, common::ObIAllocator& calc_buf, common::ObMySQLProxy& sql_proxy)
: var_name_(var_name),
set_scope_(set_scope),
is_set_default_(is_set_default),
actual_tenant_id_(actual_tenant_id),
calc_buf_(calc_buf),
sql_proxy_(sql_proxy)
{}
virtual ~ObSetVar()
{}
common::ObString var_name_;
ObSetVar::SetScopeType set_scope_;
bool is_set_default_;
uint64_t actual_tenant_id_;
common::ObIAllocator& calc_buf_;
common::ObMySQLProxy& sql_proxy_;
TO_STRING_KV(K_(var_name), K_(set_scope), K_(is_set_default), K_(actual_tenant_id));
private:
DISALLOW_COPY_AND_ASSIGN(ObSetVar);
};
class ObSysVarTypeLib {
public:
// ObSysVarTypeLib() : count_(0), type_names_(NULL) {}
ObSysVarTypeLib(const char** type_names) // last elem must be 0
: count_(0), type_names_(NULL)
{
if (OB_ISNULL(type_names)) {
SQL_SESSION_LOG(ERROR, "type names is NULL");
} else {
for (count_ = 0; 0 != type_names[count_]; count_++)
;
type_names_ = type_names;
}
}
virtual ~ObSysVarTypeLib()
{}
virtual void reset()
{
count_ = 0;
type_names_ = NULL;
}
int64_t count_;
const char** type_names_;
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarTypeLib);
};
class ObBasicSysVar {
OB_UNIS_VERSION_V(1);
public:
static const char* EMPTY_STRING;
typedef int (*OnCheckAndConvertFunc)(sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var,
const common::ObObj& in_val, common::ObObj& out_val);
typedef int (*OnUpdateFunc)(
sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var, const common::ObObj& val);
typedef int (*ToStrFunc)(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObString& result_str);
typedef int (*ToObjFunc)(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObObj& result_obj);
typedef common::ObObjType (*GetMetaTypeFunc)();
static inline bool is_null_value(const common::ObString& value, int64_t flag)
{
return (flag & ObSysVarFlag::NULLABLE) && (value == common::ObString::make_string(ObBasicSysVar::EMPTY_STRING));
}
public:
ObBasicSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL,
bool is_enum_type = false)
: base_version_(common::OB_INVALID_VERSION),
base_value_(),
inc_value_(),
min_val_(),
max_val_(),
type_(common::ObUnknownType),
flags_(ObSysVarFlag::NONE),
on_check_and_convert_(on_check_and_convert),
on_update_(on_update),
to_select_obj_(to_select_obj),
to_show_str_(to_show_str),
get_meta_type_(get_meta_type),
is_enum_type_(is_enum_type)
{
clean_value();
}
virtual ~ObBasicSysVar()
{}
virtual share::ObSysVarClassType get_type() const = 0;
virtual const common::ObObj& get_global_default_value() const = 0;
virtual int init(const common::ObObj& value, const common::ObObj& min_val, const common::ObObj& max_val,
common::ObObjType type, int64_t flags);
virtual void reset();
virtual void clean_value();
virtual void clean_base_value();
virtual void clean_inc_value();
virtual bool is_base_value_empty() const;
virtual bool is_inc_value_empty() const;
virtual int check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
virtual int session_update(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
virtual int update(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
virtual common::ObObjType inner_get_meta_type() const; // select @@XXX
virtual int inner_to_select_obj(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObObj& select_obj) const;
virtual int inner_to_show_str(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObString& show_str) const;
int64_t get_base_version() const;
common::ObObjType get_meta_type() const;
const common::ObObj& get_value() const;
const common::ObObj& get_base_value() const;
const common::ObObj& get_inc_value() const;
const common::ObObj& get_min_val() const;
const common::ObObj& get_max_val() const;
void set_value(const common::ObObj& value);
common::ObObjType get_data_type() const;
void set_data_type(common::ObObjType type);
void set_flags(int64_t flags);
int to_select_obj(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObObj& select_obj) const;
int to_show_str(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObString& show_str) const;
inline bool is_readonly() const
{
return 0 != (flags_ & ObSysVarFlag::READONLY);
}
inline bool is_session_readonly() const
{
return 0 != (flags_ & ObSysVarFlag::SESSION_READONLY);
}
inline bool is_invisible() const
{
return 0 != (flags_ & ObSysVarFlag::INVISIBLE);
}
inline bool is_global_scope() const
{
return 0 != (flags_ & ObSysVarFlag::GLOBAL_SCOPE);
}
inline bool is_session_scope() const
{
return 0 != (flags_ & ObSysVarFlag::SESSION_SCOPE);
}
inline bool is_influence_plan() const
{
return 0 != (flags_ & ObSysVarFlag::INFLUENCE_PLAN);
}
inline bool is_oracle_only() const
{
return 0 != (flags_ & ObSysVarFlag::ORACLE_ONLY);
}
inline bool is_enum_type() const
{
return is_enum_type_;
}
inline bool is_mysql_only() const
{
return 0 != (flags_ & ObSysVarFlag::MYSQL_ONLY);
}
inline bool is_with_upgrade() const
{
return 0 != (flags_ & ObSysVarFlag::WITH_UPGRADE);
}
inline bool is_need_serialize() const
{
return 0 != (flags_ & ObSysVarFlag::NEED_SERIALIZE);
}
const common::ObString get_name() const;
static int get_charset_var_and_val_by_collation(const common::ObString& coll_var_name,
const common::ObString& coll_val, common::ObString& cs_var_name, common::ObString& cs_val,
common::ObCollationType& coll_type);
static int get_collation_var_and_val_by_charset(const common::ObString& cs_var_name, const common::ObString& cs_val,
common::ObString& coll_var_name, common::ObString& coll_val, common::ObCollationType& coll_type);
DECLARE_TO_STRING;
protected:
// Currently there is a simple principle for the setting operation of base_value and inc_value:
// 1. Only base_value and min_value/max_value will be set together, and there is no need to judge whether base_value
// is valid. Currently there is only the init interface.
// 2. Yes and only inc_value will be set separately, and it is possible to judge whether inc_value is valid according
// to min_value/max_value. Currently there is only set_value interface.
int64_t base_version_;
common::ObObj base_value_;
common::ObObj inc_value_;
common::ObObj min_val_;
common::ObObj max_val_;
common::ObObjType type_;
int64_t flags_;
protected:
int log_err_wrong_value_for_var(int error_no, const common::ObObj& val) const;
int check_and_convert_int_tc_value(const common::ObObj& value, int64_t invalid_value, int64_t& result_value) const;
int check_and_convert_uint_tc_value(const common::ObObj& value, uint64_t invalid_value, uint64_t& result_value) const;
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
OnCheckAndConvertFunc on_check_and_convert_;
OnUpdateFunc on_update_;
ToObjFunc to_select_obj_;
ToStrFunc to_show_str_;
GetMetaTypeFunc get_meta_type_;
bool is_enum_type_;
private:
DISALLOW_COPY_AND_ASSIGN(ObBasicSysVar);
};
class ObTypeLibSysVar : public ObBasicSysVar {
public:
ObTypeLibSysVar(const char** type_names, OnCheckAndConvertFunc on_check_and_convert = NULL,
OnUpdateFunc on_update = NULL, ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL,
GetMetaTypeFunc get_meta_type = NULL, bool is_enum_type = false)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type, is_enum_type),
type_lib_(type_names)
{}
virtual ~ObTypeLibSysVar()
{}
virtual void reset();
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
virtual int inner_to_show_str(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObString& show_str) const;
int find_type(const common::ObString& type, int64_t& type_index) const;
protected:
ObSysVarTypeLib type_lib_;
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObTypeLibSysVar);
};
class ObEnumSysVar : public ObTypeLibSysVar {
public:
ObEnumSysVar(const char** type_names, OnCheckAndConvertFunc on_check_and_convert = NULL,
OnUpdateFunc on_update = NULL, ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL,
GetMetaTypeFunc get_meta_type = NULL)
: ObTypeLibSysVar(type_names, on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type,
true /* is_enum_type */)
{}
virtual ~ObEnumSysVar()
{}
virtual int inner_to_select_obj(
common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session, common::ObObj& select_obj) const;
private:
DISALLOW_COPY_AND_ASSIGN(ObEnumSysVar);
};
class ObBoolSysVar : public ObTypeLibSysVar {
public:
const static char* BOOL_TYPE_NAMES[];
public:
ObBoolSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObTypeLibSysVar(
ObBoolSysVar::BOOL_TYPE_NAMES, on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObBoolSysVar()
{}
private:
DISALLOW_COPY_AND_ASSIGN(ObBoolSysVar);
};
//////////////////////////////
class ObSetSysVar : public ObTypeLibSysVar {
static const int64_t MAX_STR_BUF_LEN = 512;
public:
ObSetSysVar(const char** type_names, OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObTypeLibSysVar(type_names, on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObSetSysVar()
{}
int find_set(const common::ObString& value);
private:
DISALLOW_COPY_AND_ASSIGN(ObSetSysVar);
};
//////////////////////////////
class ObSqlModeVar : public ObSetSysVar {
public:
const static char* SQL_MODE_NAMES[];
public:
ObSqlModeVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObSetSysVar(
ObSqlModeVar::SQL_MODE_NAMES, on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObSqlModeVar()
{}
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObSqlModeVar);
};
//////////////////////////////
class ObSysVarAccessMode : public ObBoolSysVar {
public:
ObSysVarAccessMode(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBoolSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObSysVarAccessMode()
{}
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarAccessMode);
};
/////////////////////////////
class ObCharsetSysVar : public ObBasicSysVar {
public:
ObCharsetSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObCharsetSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObCharsetSysVar);
};
/////////////////////////////
class ObTinyintSysVar : public ObBasicSysVar {
public:
ObTinyintSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObTinyintSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObTinyintSysVar);
};
class ObIntSysVar : public ObBasicSysVar {
public:
ObIntSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObIntSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
virtual int do_convert(
sql::ObExecContext& ctx, const common::ObObj& in_val, common::ObObj& out_val, bool& is_converted);
private:
DISALLOW_COPY_AND_ASSIGN(ObIntSysVar);
};
class ObStrictRangeIntSysVar : public ObIntSysVar {
public:
ObStrictRangeIntSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObIntSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObStrictRangeIntSysVar()
{}
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObStrictRangeIntSysVar);
};
class ObNumericSysVar : public ObBasicSysVar {
public:
ObNumericSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObNumericSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
virtual int do_convert(
sql::ObExecContext& ctx, const common::ObObj& in_val, common::ObObj& out_val, bool& is_converted);
private:
DISALLOW_COPY_AND_ASSIGN(ObNumericSysVar);
};
class ObVarcharSysVar : public ObBasicSysVar {
public:
ObVarcharSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObVarcharSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObVarcharSysVar);
};
class ObTimeZoneSysVar : public ObBasicSysVar {
public:
ObTimeZoneSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
ToObjFunc to_select_obj = NULL, ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBasicSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type)
{}
virtual ~ObTimeZoneSysVar()
{}
virtual int check_update_type(const ObSetVar& set_var, const common::ObObj& val);
private:
virtual int do_check_and_convert(
sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val, common::ObObj& out_val);
int find_pos_time_zone(sql::ObExecContext& ctx, const common::ObString& str_val, const bool is_oracle_compatible);
private:
DISALLOW_COPY_AND_ASSIGN(ObTimeZoneSysVar);
};
class ObSessionSpecialIntSysVar : public ObIntSysVar {
public:
typedef int (*SessionSpecialUpdateFunc)(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
public:
ObSessionSpecialIntSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL,
SessionSpecialUpdateFunc session_special_update = NULL, ToObjFunc to_select_obj = NULL,
ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObIntSysVar(on_check_and_convert, NULL, to_select_obj, to_show_str, get_meta_type),
session_special_update_(session_special_update)
{}
virtual ~ObSessionSpecialIntSysVar()
{}
virtual int session_update(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val)
{
int ret = common::OB_SUCCESS;
if (OB_ISNULL(session_special_update_)) {
ret = common::OB_ERR_UNEXPECTED;
SQL_SESSION_LOG(ERROR, "function ptr session_special_update_ is NULL", K(ret));
} else if (OB_FAIL(session_special_update_(ctx, set_var, val))) {
SQL_SESSION_LOG(WARN, "fail to call session_special_update_", K(ret));
}
return ret;
}
private:
SessionSpecialUpdateFunc session_special_update_;
private:
DISALLOW_COPY_AND_ASSIGN(ObSessionSpecialIntSysVar);
};
class ObSessionSpecialVarcharSysVar : public ObVarcharSysVar {
public:
typedef int (*SessionSpecialUpdateFunc)(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
public:
ObSessionSpecialVarcharSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
SessionSpecialUpdateFunc session_special_update = NULL, ToObjFunc to_select_obj = NULL,
ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObVarcharSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type),
session_special_update_(session_special_update)
{}
virtual ~ObSessionSpecialVarcharSysVar()
{}
virtual int session_update(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val)
{
int ret = common::OB_SUCCESS;
if (OB_ISNULL(session_special_update_)) {
ret = common::OB_ERR_UNEXPECTED;
SQL_SESSION_LOG(ERROR, "function ptr session_special_update_ is NULL", K(ret));
} else if (OB_FAIL(session_special_update_(ctx, set_var, val))) {
SQL_SESSION_LOG(WARN, "fail to call session_special_update_", K(ret));
}
return ret;
}
private:
SessionSpecialUpdateFunc session_special_update_;
private:
DISALLOW_COPY_AND_ASSIGN(ObSessionSpecialVarcharSysVar);
};
class ObSessionSpecialBoolSysVar : public ObBoolSysVar {
public:
typedef int (*SessionSpecialUpdateFunc)(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
public:
ObSessionSpecialBoolSysVar(OnCheckAndConvertFunc on_check_and_convert = NULL, OnUpdateFunc on_update = NULL,
SessionSpecialUpdateFunc session_special_update = NULL, ToObjFunc to_select_obj = NULL,
ToStrFunc to_show_str = NULL, GetMetaTypeFunc get_meta_type = NULL)
: ObBoolSysVar(on_check_and_convert, on_update, to_select_obj, to_show_str, get_meta_type),
session_special_update_(session_special_update)
{}
virtual ~ObSessionSpecialBoolSysVar()
{}
virtual int session_update(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val)
{
int ret = common::OB_SUCCESS;
if (OB_ISNULL(session_special_update_)) {
ret = common::OB_ERR_UNEXPECTED;
SQL_SESSION_LOG(ERROR, "function ptr session_special_update_ is NULL", K(ret));
} else if (OB_FAIL(session_special_update_(ctx, set_var, val))) {
SQL_SESSION_LOG(WARN, "fail to call session_special_update_", K(ret));
}
return ret;
}
private:
SessionSpecialUpdateFunc session_special_update_;
private:
DISALLOW_COPY_AND_ASSIGN(ObSessionSpecialBoolSysVar);
};
class ObSysVarOnCheckFuncs {
public:
ObSysVarOnCheckFuncs()
{}
virtual ~ObSysVarOnCheckFuncs()
{}
public:
static int check_and_convert_timestamp_service(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_max_allowed_packet(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_net_buffer_length(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_charset(sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var,
const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_charset_not_null(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_collation_not_null(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_tx_isolation(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_tx_read_only(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_timeout_too_large(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_max_user_connections(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_sql_mode(sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var,
const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_max_min_timestamp(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_ob_org_cluster_id(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_plsql_warnings(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
static int check_and_convert_sql_throttle_queue_time(sql::ObExecContext& ctx, const ObSetVar& set_var,
const ObBasicSysVar& sys_var, const common::ObObj& in_val, common::ObObj& out_val);
private:
static int check_session_readonly(sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var,
const common::ObObj& in_val, common::ObObj& out_val);
static bool can_set_trans_var(ObSetVar::SetScopeType scope, sql::ObBasicSessionInfo& session);
static int get_string(const common::ObObj& val, common::ObString& str);
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarOnCheckFuncs);
};
class ObSysVarOnUpdateFuncs {
public:
ObSysVarOnUpdateFuncs()
{}
virtual ~ObSysVarOnUpdateFuncs()
{}
public:
static int update_tx_isolation(
sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var, const common::ObObj& val);
static int update_tx_read_only_no_scope(
sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var, const common::ObObj& val);
static int update_sql_mode(
sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var, const common::ObObj& val);
static int update_safe_weak_read_snapshot(
sql::ObExecContext& ctx, const ObSetVar& set_var, const ObBasicSysVar& sys_var, const common::ObObj& val);
private:
static int restart_trans(
sql::ObExecContext& ctx, sql::ObBasicSessionInfo& session, bool read_only, int32_t isolation);
static int start_trans(sql::ObExecContext& ctx);
static int try_rollback_trans(sql::ObExecContext& ctx);
DISALLOW_COPY_AND_ASSIGN(ObSysVarOnUpdateFuncs);
};
class ObSysVarToObjFuncs {
public:
ObSysVarToObjFuncs()
{}
virtual ~ObSysVarToObjFuncs()
{}
public:
static int to_obj_charset(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObObj& result_obj);
static int to_obj_collation(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObObj& result_obj);
static int to_obj_sql_mode(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObObj& result_obj);
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarToObjFuncs);
};
class ObSysVarToStrFuncs {
public:
ObSysVarToStrFuncs()
{}
virtual ~ObSysVarToStrFuncs()
{}
public:
static int to_str_charset(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObString& result_str);
static int to_str_collation(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObString& result_str);
static int to_str_sql_mode(common::ObIAllocator& allocator, const sql::ObBasicSessionInfo& session,
const ObBasicSysVar& sys_var, common::ObString& result_str);
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarToStrFuncs);
};
class ObSysVarGetMetaTypeFuncs {
public:
ObSysVarGetMetaTypeFuncs()
{}
virtual ~ObSysVarGetMetaTypeFuncs()
{}
public:
static common::ObObjType get_meta_type_varchar()
{
return common::ObVarcharType;
}
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarGetMetaTypeFuncs);
};
class ObSysVarSessionSpecialUpdateFuncs {
public:
ObSysVarSessionSpecialUpdateFuncs()
{}
virtual ~ObSysVarSessionSpecialUpdateFuncs()
{}
public:
// @@identiy alias to @@last_insert_id
static int update_identity(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
static int update_last_insert_id(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
// @@tx_isolation alias to @@transaction_isolation
static int update_tx_isolation(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
// @@tx_read_only alias to @@transaction_read_only
static int update_tx_read_only(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& val);
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarSessionSpecialUpdateFuncs);
};
class ObCharsetSysVarPair {
public:
static const int64_t SYS_CHARSET_SYS_VAR_PAIR_COUNT = 3;
static ObCharsetSysVarPair CHARSET_SYS_VAR_PAIRS[SYS_CHARSET_SYS_VAR_PAIR_COUNT];
ObCharsetSysVarPair(const common::ObString& cs_var_name, const common::ObString& coll_var_name)
: cs_var_name_(cs_var_name), coll_var_name_(coll_var_name)
{}
ObCharsetSysVarPair(const char* cs_var_name, const char* coll_var_name)
: cs_var_name_(common::ObString(cs_var_name)), coll_var_name_(common::ObString(coll_var_name))
{}
virtual ~ObCharsetSysVarPair()
{}
static int get_charset_var_by_collation_var(const common::ObString& coll_var_name, common::ObString& cs_var_name);
static int get_collation_var_by_charset_var(const common::ObString& cs_var_name, common::ObString& coll_var_name);
private:
common::ObString cs_var_name_;
common::ObString coll_var_name_;
private:
DISALLOW_COPY_AND_ASSIGN(ObCharsetSysVarPair);
};
class ObBinlogRowImage {
public:
enum ImageType {
MINIMAL = 0,
NOBLOB = 1,
FULL = 2,
};
ObBinlogRowImage()
{}
virtual ~ObBinlogRowImage()
{}
private:
DISALLOW_COPY_AND_ASSIGN(ObBinlogRowImage);
};
class ObPreProcessSysVars {
public:
ObPreProcessSysVars()
{}
virtual ~ObPreProcessSysVars()
{}
public:
static int init_sys_var();
private:
static int change_initial_value();
private:
DISALLOW_COPY_AND_ASSIGN(ObPreProcessSysVars);
};
class ObSysVarUtils {
public:
static int log_bounds_error_or_warning(sql::ObExecContext& ctx, const ObSetVar& set_var, const common::ObObj& in_val);
private:
DISALLOW_COPY_AND_ASSIGN(ObSysVarUtils);
};
} // namespace share
} // namespace oceanbase
#endif // OCEANBASE_SQL_SESSION_OB_SYSTEM_VARIABLE_

View File

@ -0,0 +1,214 @@
/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#ifndef OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYSTEM_VARIABLE_ALIAS_
#define OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYSTEM_VARIABLE_ALIAS_
namespace oceanbase {
namespace share {
static const char* const OB_SV_AUTO_INCREMENT_INCREMENT = "auto_increment_increment";
static const char* const OB_SV_AUTO_INCREMENT_OFFSET = "auto_increment_offset";
static const char* const OB_SV_AUTOCOMMIT = "autocommit";
static const char* const OB_SV_CHARACTER_SET_CLIENT = "character_set_client";
static const char* const OB_SV_CHARACTER_SET_CONNECTION = "character_set_connection";
static const char* const OB_SV_CHARACTER_SET_DATABASE = "character_set_database";
static const char* const OB_SV_CHARACTER_SET_RESULTS = "character_set_results";
static const char* const OB_SV_CHARACTER_SET_SERVER = "character_set_server";
static const char* const OB_SV_CHARACTER_SET_SYSTEM = "character_set_system";
static const char* const OB_SV_COLLATION_CONNECTION = "collation_connection";
static const char* const OB_SV_COLLATION_DATABASE = "collation_database";
static const char* const OB_SV_COLLATION_SERVER = "collation_server";
static const char* const OB_SV_INTERACTIVE_TIMEOUT = "interactive_timeout";
static const char* const OB_SV_LAST_INSERT_ID = "last_insert_id";
static const char* const OB_SV_MAX_ALLOWED_PACKET = "max_allowed_packet";
static const char* const OB_SV_SQL_MODE = "sql_mode";
static const char* const OB_SV_TIME_ZONE = "time_zone";
static const char* const OB_SV_TX_ISOLATION = "tx_isolation";
static const char* const OB_SV_VERSION_COMMENT = "version_comment";
static const char* const OB_SV_WAIT_TIMEOUT = "wait_timeout";
static const char* const OB_SV_BINLOG_ROW_IMAGE = "binlog_row_image";
static const char* const OB_SV_CHARACTER_SET_FILESYSTEM = "character_set_filesystem";
static const char* const OB_SV_CONNECT_TIMEOUT = "connect_timeout";
static const char* const OB_SV_DATADIR = "datadir";
static const char* const OB_SV_DEBUG_SYNC = "debug_sync";
static const char* const OB_SV_DIV_PRECISION_INCREMENT = "div_precision_increment";
static const char* const OB_SV_EXPLICIT_DEFAULTS_FOR_TIMESTAMP = "explicit_defaults_for_timestamp";
static const char* const OB_SV_GROUP_CONCAT_MAX_LEN = "group_concat_max_len";
static const char* const OB_SV_IDENTITY = "identity";
static const char* const OB_SV_LOWER_CASE_TABLE_NAMES = "lower_case_table_names";
static const char* const OB_SV_NET_READ_TIMEOUT = "net_read_timeout";
static const char* const OB_SV_NET_WRITE_TIMEOUT = "net_write_timeout";
static const char* const OB_SV_READ_ONLY = "read_only";
static const char* const OB_SV_SQL_AUTO_IS_NULL = "sql_auto_is_null";
static const char* const OB_SV_SQL_SELECT_LIMIT = "sql_select_limit";
static const char* const OB_SV_TIMESTAMP = "timestamp";
static const char* const OB_SV_TX_READ_ONLY = "tx_read_only";
static const char* const OB_SV_VERSION = "version";
static const char* const OB_SV_SQL_WARNINGS = "sql_warnings";
static const char* const OB_SV_MAX_USER_CONNECTIONS = "max_user_connections";
static const char* const OB_SV_INIT_CONNECT = "init_connect";
static const char* const OB_SV_LICENSE = "license";
static const char* const OB_SV_NET_BUFFER_LENGTH = "net_buffer_length";
static const char* const OB_SV_SYSTEM_TIME_ZONE = "system_time_zone";
static const char* const OB_SV_QUERY_CACHE_SIZE = "query_cache_size";
static const char* const OB_SV_QUERY_CACHE_TYPE = "query_cache_type";
static const char* const OB_SV_SQL_QUOTE_SHOW_CREATE = "sql_quote_show_create";
static const char* const OB_SV_MAX_SP_RECURSION_DEPTH = "max_sp_recursion_depth";
static const char* const OB_SV_SQL_SAFE_UPDATES = "sql_safe_updates";
static const char* const OB_SV_CONCURRENT_INSERT = "concurrent_insert";
static const char* const OB_SV_DEFAULT_AUTHENTICATION_PLUGIN = "default_authentication_plugin";
static const char* const OB_SV_DISABLED_STORAGE_ENGINES = "disabled_storage_engines";
static const char* const OB_SV_ERROR_COUNT = "error_count";
static const char* const OB_SV_GENERAL_LOG = "general_log";
static const char* const OB_SV_HAVE_OPENSSL = "have_openssl";
static const char* const OB_SV_HAVE_PROFILING = "have_profiling";
static const char* const OB_SV_HAVE_SSL = "have_ssl";
static const char* const OB_SV_HOSTNAME = "hostname";
static const char* const OB_SV_LC_MESSAGES = "lc_messages";
static const char* const OB_SV_LOCAL_INFILE = "local_infile";
static const char* const OB_SV_LOCK_WAIT_TIMEOUT = "lock_wait_timeout";
static const char* const OB_SV_LONG_QUERY_TIME = "long_query_time";
static const char* const OB_SV_MAX_CONNECTIONS = "max_connections";
static const char* const OB_SV_MAX_EXECUTION_TIME = "max_execution_time";
static const char* const OB_SV_PROTOCOL_VERSION = "protocol_version";
static const char* const OB_SV_SERVER_ID = "server_id";
static const char* const OB_SV_SSL_CA = "ssl_ca";
static const char* const OB_SV_SSL_CAPATH = "ssl_capath";
static const char* const OB_SV_SSL_CERT = "ssl_cert";
static const char* const OB_SV_SSL_CIPHER = "ssl_cipher";
static const char* const OB_SV_SSL_CRL = "ssl_crl";
static const char* const OB_SV_SSL_CRLPATH = "ssl_crlpath";
static const char* const OB_SV_SSL_KEY = "ssl_key";
static const char* const OB_SV_TIME_FORMAT = "time_format";
static const char* const OB_SV_TLS_VERSION = "tls_version";
static const char* const OB_SV_TMP_TABLE_SIZE = "tmp_table_size";
static const char* const OB_SV_TMPDIR = "tmpdir";
static const char* const OB_SV_UNIQUE_CHECKS = "unique_checks";
static const char* const OB_SV_VERSION_COMPILE_MACHINE = "version_compile_machine";
static const char* const OB_SV_VERSION_COMPILE_OS = "version_compile_os";
static const char* const OB_SV_WARNING_COUNT = "warning_count";
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";
static const char* const OB_SV_LOG_LEVEL = "ob_log_level";
static const char* const OB_SV_MAX_PARALLEL_DEGREE = "ob_max_parallel_degree";
static const char* const OB_SV_QUERY_TIMEOUT = "ob_query_timeout";
static const char* const OB_SV_READ_CONSISTENCY = "ob_read_consistency";
static const char* const OB_SV_ENABLE_TRANSFORMATION = "ob_enable_transformation";
static const char* const OB_SV_TRX_TIMEOUT = "ob_trx_timeout";
static const char* const OB_SV_ENABLE_PLAN_CACHE = "ob_enable_plan_cache";
static const char* const OB_SV_ENABLE_INDEX_DIRECT_SELECT = "ob_enable_index_direct_select";
static const char* const OB_SV_PROXY_SET_TRX_EXECUTED = "ob_proxy_set_trx_executed";
static const char* const OB_SV_ENABLE_AGGREGATION_PUSHDOWN = "ob_enable_aggregation_pushdown";
static const char* const OB_SV_LAST_SCHEMA_VERSION = "ob_last_schema_version";
static const char* const OB_SV_GLOBAL_DEBUG_SYNC = "ob_global_debug_sync";
static const char* const OB_SV_PROXY_GLOBAL_VARIABLES_VERSION = "ob_proxy_global_variables_version";
static const char* const OB_SV_ENABLE_TRACE_LOG = "ob_enable_trace_log";
static const char* const OB_SV_ENABLE_HASH_GROUP_BY = "ob_enable_hash_group_by";
static const char* const OB_SV_ENABLE_BLK_NESTEDLOOP_JOIN = "ob_enable_blk_nestedloop_join";
static const char* const OB_SV_BNL_JOIN_CACHE_SIZE = "ob_bnl_join_cache_size";
static const char* const OB_SV_PROXY_USER_PRIVILEGE = "ob_proxy_user_privilege";
static const char* const OB_SV_ORG_CLUSTER_ID = "ob_org_cluster_id";
static const char* const OB_SV_PLAN_CACHE_PERCENTAGE = "ob_plan_cache_percentage";
static const char* const OB_SV_PLAN_CACHE_EVICT_HIGH_PERCENTAGE = "ob_plan_cache_evict_high_percentage";
static const char* const OB_SV_PLAN_CACHE_EVICT_LOW_PERCENTAGE = "ob_plan_cache_evict_low_percentage";
static const char* const OB_SV_RECYCLEBIN = "recyclebin";
static const char* const OB_SV_CAPABILITY_FLAG = "ob_capability_flag";
static const char* const OB_SV_STMT_PARALLEL_DEGREE = "ob_stmt_parallel_degree";
static const char* const OB_SV_IS_RESULT_ACCURATE = "is_result_accurate";
static const char* const OB_SV_ERROR_ON_OVERLAP_TIME = "error_on_overlap_time";
static const char* const OB_SV_COMPATIBILITY_MODE = "ob_compatibility_mode";
static const char* const OB_SV_CREATE_TABLE_STRICT_MODE = "ob_create_table_strict_mode";
static const char* const OB_SV_SQL_WORK_AREA_PERCENTAGE = "ob_sql_work_area_percentage";
static const char* const OB_SV_SAFE_WEAK_READ_SNAPSHOT = "ob_safe_weak_read_snapshot";
static const char* const OB_SV_ROUTE_POLICY = "ob_route_policy";
static const char* const OB_SV_ENABLE_TRANSMISSION_CHECKSUM = "ob_enable_transmission_checksum";
static const char* const OB_SV_FOREIGN_KEY_CHECKS = "foreign_key_checks";
static const char* const OB_SV_STATEMENT_TRACE_ID = "ob_statement_trace_id";
static const char* const OB_SV_ENABLE_TRUNCATE_FLASHBACK = "ob_enable_truncate_flashback";
static const char* const OB_SV_TCP_INVITED_NODES = "ob_tcp_invited_nodes";
static const char* const OB_SV_SQL_THROTTLE_CURRENT_PRIORITY = "sql_throttle_current_priority";
static const char* const OB_SV_SQL_THROTTLE_PRIORITY = "sql_throttle_priority";
static const char* const OB_SV_SQL_THROTTLE_RT = "sql_throttle_rt";
static const char* const OB_SV_SQL_THROTTLE_CPU = "sql_throttle_cpu";
static const char* const OB_SV_SQL_THROTTLE_IO = "sql_throttle_io";
static const char* const OB_SV_SQL_THROTTLE_NETWORK = "sql_throttle_network";
static const char* const OB_SV_SQL_THROTTLE_LOGICAL_READS = "sql_throttle_logical_reads";
static const char* const OB_SV_AUTO_INCREMENT_CACHE_SIZE = "auto_increment_cache_size";
static const char* const OB_SV_ENABLE_JIT = "ob_enable_jit";
static const char* const OB_SV_TEMP_TABLESPACE_SIZE_PERCENTAGE = "ob_temp_tablespace_size_percentage";
static const char* const OB_SV__OPTIMIZER_ADAPTIVE_CURSOR_SHARING = "_optimizer_adaptive_cursor_sharing";
static const char* const OB_SV_TIMESTAMP_SERVICE = "ob_timestamp_service";
static const char* const OB_SV_PLUGIN_DIR = "plugin_dir";
static const char* const OB_SV_UNDO_RETENTION = "undo_retention";
static const char* const OB_SV__OB_USE_PARALLEL_EXECUTION = "_ob_use_parallel_execution";
static const char* const OB_SV_SQL_AUDIT_PERCENTAGE = "ob_sql_audit_percentage";
static const char* const OB_SV_ENABLE_SQL_AUDIT = "ob_enable_sql_audit";
static const char* const OB_SV_OPTIMIZER_USE_SQL_PLAN_BASELINES = "optimizer_use_sql_plan_baselines";
static const char* const OB_SV_OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES = "optimizer_capture_sql_plan_baselines";
static const char* const OB_SV_PARALLEL_MAX_SERVERS = "parallel_max_servers";
static const char* const OB_SV_PARALLEL_SERVERS_TARGET = "parallel_servers_target";
static const char* const OB_SV_EARLY_LOCK_RELEASE = "ob_early_lock_release";
static const char* const OB_SV_TRX_IDLE_TIMEOUT = "ob_trx_idle_timeout";
static const char* const OB_SV_BLOCK_ENCRYPTION_MODE = "block_encryption_mode";
static const char* const OB_SV_NLS_DATE_FORMAT = "nls_date_format";
static const char* const OB_SV_NLS_TIMESTAMP_FORMAT = "nls_timestamp_format";
static const char* const OB_SV_NLS_TIMESTAMP_TZ_FORMAT = "nls_timestamp_tz_format";
static const char* const OB_SV_RESERVED_META_MEMORY_PERCENTAGE = "ob_reserved_meta_memory_percentage";
static const char* const OB_SV_CHECK_SYS_VARIABLE = "ob_check_sys_variable";
static const char* const OB_SV_NLS_LANGUAGE = "nls_language";
static const char* const OB_SV_NLS_TERRITORY = "nls_territory";
static const char* const OB_SV_NLS_SORT = "nls_sort";
static const char* const OB_SV_NLS_COMP = "nls_comp";
static const char* const OB_SV_NLS_CHARACTERSET = "nls_characterset";
static const char* const OB_SV_NLS_NCHAR_CHARACTERSET = "nls_nchar_characterset";
static const char* const OB_SV_NLS_DATE_LANGUAGE = "nls_date_language";
static const char* const OB_SV_NLS_LENGTH_SEMANTICS = "nls_length_semantics";
static const char* const OB_SV_NLS_NCHAR_CONV_EXCP = "nls_nchar_conv_excp";
static const char* const OB_SV_NLS_CALENDAR = "nls_calendar";
static const char* const OB_SV_NLS_NUMERIC_CHARACTERS = "nls_numeric_characters";
static const char* const OB_SV__NLJ_BATCHING_ENABLED = "_nlj_batching_enabled";
static const char* const OB_SV_TRACEFILE_IDENTIFIER = "tracefile_identifier";
static const char* const OB_SV__GROUPBY_NOPUSHDOWN_CUT_RATIO = "_groupby_nopushdown_cut_ratio";
static const char* const OB_SV__PX_BROADCAST_FUDGE_FACTOR = "_px_broadcast_fudge_factor";
static const char* const OB_SV__PRIMARY_ZONE_ENTITY_COUNT = "_primary_zone_entity_count";
static const char* const OB_SV_TRANSACTION_ISOLATION = "transaction_isolation";
static const char* const OB_SV_TRX_LOCK_TIMEOUT = "ob_trx_lock_timeout";
static const char* const OB_SV_VALIDATE_PASSWORD_CHECK_USER_NAME = "validate_password_check_user_name";
static const char* const OB_SV_VALIDATE_PASSWORD_LENGTH = "validate_password_length";
static const char* const OB_SV_VALIDATE_PASSWORD_MIXED_CASE_COUNT = "validate_password_mixed_case_count";
static const char* const OB_SV_VALIDATE_PASSWORD_NUMBER_COUNT = "validate_password_number_count";
static const char* const OB_SV_VALIDATE_PASSWORD_POLICY = "validate_password_policy";
static const char* const OB_SV_VALIDATE_PASSWORD_SPECIAL_CHAR_COUNT = "validate_password_special_char_count";
static const char* const OB_SV_DEFAULT_PASSWORD_LIFETIME = "default_password_lifetime";
static const char* const OB_SV_TRACE_INFO = "ob_trace_info";
static const char* const OB_SV_ENABLE_BATCHED_MULTI_STATEMENT = "ob_enable_batched_multi_statement";
static const char* const OB_SV__PX_PARTITION_SCAN_THRESHOLD = "_px_partition_scan_threshold";
static const char* const OB_SV__OB_PX_BCAST_OPTIMIZATION = "_ob_px_bcast_optimization";
static const char* const OB_SV__OB_PX_SLAVE_MAPPING_THRESHOLD = "_ob_px_slave_mapping_threshold";
static const char* const OB_SV__ENABLE_PARALLEL_DML = "_enable_parallel_dml";
static const char* const OB_SV__PX_MIN_GRANULES_PER_SLAVE = "_px_min_granules_per_slave";
static const char* const OB_SV_SECURE_FILE_PRIV = "secure_file_priv";
static const char* const OB_SV_PLSQL_WARNINGS = "plsql_warnings";
static const char* const OB_SV__ENABLE_PARALLEL_QUERY = "_enable_parallel_query";
static const char* const OB_SV__FORCE_PARALLEL_QUERY_DOP = "_force_parallel_query_dop";
static const char* const OB_SV__FORCE_PARALLEL_DML_DOP = "_force_parallel_dml_dop";
static const char* const OB_SV_PL_BLOCK_TIMEOUT = "ob_pl_block_timeout";
static const char* const OB_SV_TRANSACTION_READ_ONLY = "transaction_read_only";
static const char* const OB_SV_RESOURCE_MANAGER_PLAN = "resource_manager_plan";
static const char* const OB_SV_PERFORMANCE_SCHEMA = "performance_schema";
static const char* const OB_SV_NLS_CURRENCY = "nls_currency";
static const char* const OB_SV_NLS_ISO_CURRENCY = "nls_iso_currency";
static const char* const OB_SV_NLS_DUAL_CURRENCY = "nls_dual_currency";
} // namespace share
} // namespace oceanbase
#endif // OCEANBASE_COMMON_OB_SYSTEM_VARIABLE_ALIAS_H_

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,107 @@
/**
* Copyright (c) 2021 OceanBase
* OceanBase CE is licensed under Mulan PubL v2.
* You can use this software according to the terms and conditions of the Mulan PubL v2.
* You may obtain a copy of Mulan PubL v2 at:
* http://license.coscl.org.cn/MulanPubL-2.0
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PubL v2 for more details.
*/
#ifndef OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYSTEM_VARIABLE_INIT_
#define OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYSTEM_VARIABLE_INIT_
#include "share/system_variable/ob_sys_var_class_type.h"
#include <stdint.h>
#include "common/object/ob_object.h"
namespace oceanbase {
namespace share {
struct ObSysVarFlag {
const static int64_t NONE = 0LL;
const static int64_t GLOBAL_SCOPE = 1LL;
const static int64_t SESSION_SCOPE = (1LL << 1);
const static int64_t READONLY = (1LL << 2);
const static int64_t SESSION_READONLY = (1LL << 3);
const static int64_t INVISIBLE = (1LL << 4);
const static int64_t NULLABLE = (1LL << 5);
const static int64_t INFLUENCE_PLAN = (1LL << 6);
const static int64_t NEED_SERIALIZE = (1LL << 7);
const static int64_t QUERY_SENSITIVE = (1LL << 8);
const static int64_t ORACLE_ONLY = (1LL << 9);
const static int64_t WITH_CREATE = (1LL << 10);
const static int64_t WITH_UPGRADE = (1LL << 11);
const static int64_t MYSQL_ONLY = (1LL << 12);
};
struct ObSysVarFromJson {
ObSysVarClassType id_;
common::ObString name_;
common::ObObjType data_type_;
common::ObString value_;
common::ObString min_val_;
common::ObString max_val_;
common::ObString enum_names_;
common::ObString info_;
int64_t flags_;
common::ObString alias_;
common::ObString base_class_;
common::ObString on_check_and_convert_func_;
common::ObString on_update_func_;
common::ObString to_select_obj_func_;
common::ObString to_show_str_func_;
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_()
{}
};
class ObSysVariables {
public:
static int64_t get_all_sys_var_count();
static ObSysVarClassType get_sys_var_id(int64_t i);
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_min(int64_t i);
static common::ObString get_max(int64_t i);
static common::ObString get_info(int64_t i);
static int64_t get_flags(int64_t i);
static bool need_serialize(int64_t i);
static bool is_oracle_only(int64_t i);
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 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);
static int init_default_values();
};
class ObSysVarsToIdxMap {
public:
static int64_t get_store_idx(int64_t var_id);
static bool has_invalid_sys_var_id();
};
} // end namespace share
} // end namespace oceanbase
#endif /* OCEANBASE_SHARE_SYSTEM_VARIABLE_OB_SYSTEM_VARIABLE_INIT_ */

File diff suppressed because it is too large Load Diff