MySQL 9.1.0
Source Code Documentation
Sys_var_multi_enum Class Reference

A variant of enum where: More...

#include <sys_vars.h>

Inheritance diagram for Sys_var_multi_enum:
[legend]

Classes

struct  ALIAS
 

Public Member Functions

 Sys_var_multi_enum (const char *name_arg, const char *comment, int flag_args, ptrdiff_t off, size_t size, CMD_LINE getopt, const ALIAS aliases_arg[], uint value_count_arg, uint def_val, uint command_line_no_value_arg, PolyLock *lock=nullptr, enum binlog_status_enum binlog_status_arg=VARIABLE_NOT_IN_BINLOG, on_check_function on_check_func=nullptr, on_update_function on_update_func=nullptr, const char *substitute=nullptr, int parse_flag=PARSE_NORMAL)
 Enumerated type system variable. More...
 
int find_value (const char *text)
 Return the numeric value for a given alias string, or -1 if the string is not a valid alias. More...
 
const char * fixup_command_line (const char *value_str)
 Because of limitations in the command-line parsing library, the value given on the command-line cannot be automatically copied to the global value. More...
 
bool do_check (THD *, set_var *var) override
 
bool check_update_type (Item_result type) override
 
bool session_update (THD *, set_var *) override
 
bool global_update (THD *, set_var *) override
 
void session_save_default (THD *, set_var *) override
 save the session default value of the variable in var More...
 
void global_save_default (THD *, set_var *var) override
 save the global default value of the variable in var More...
 
void saved_value_to_string (THD *, set_var *var, char *def_val) override
 This function converts value stored in save_result to string. More...
 
const ucharsession_value_ptr (THD *, THD *, std::string_view) override
 A pointer to a value of the variable for SHOW. More...
 
const ucharglobal_value_ptr (THD *, std::string_view) override
 
- Public Member Functions inherited from sys_var
 sys_var (sys_var_chain *chain, const char *name_arg, const char *comment, int flag_args, ptrdiff_t off, int getopt_id, enum get_opt_arg_type getopt_arg_type, SHOW_TYPE show_val_type_arg, longlong def_val, PolyLock *lock, enum binlog_status_enum binlog_status_arg, on_check_function on_check_func, on_update_function on_update_func, const char *substitute, int parse_flag, sys_var *persisted_alias=nullptr, bool is_persisted_deprecated=false)
 sys_var constructor More...
 
virtual ~sys_var ()=default
 
const char * get_deprecation_substitute ()
 
virtual void cleanup ()
 All the cleanup procedures should be performed here. More...
 
virtual sys_var_pluginvarcast_pluginvar ()
 downcast for sys_var_pluginvar. More...
 
bool check (THD *thd, set_var *var)
 
const ucharvalue_ptr (THD *running_thd, THD *target_thd, enum_var_type type, std::string_view keycache_name)
 
const ucharvalue_ptr (THD *thd, enum_var_type type, std::string_view keycache_name)
 
virtual void update_default (longlong new_def_value)
 
virtual longlong get_default ()
 
virtual longlong get_min_value ()
 
virtual ulonglong get_max_value ()
 
virtual ulong get_var_type ()
 Returns variable type. More...
 
virtual void set_arg_source (get_opt_arg_source *)
 
virtual void set_is_plugin (bool)
 
virtual enum_variable_source get_source ()
 
virtual const char * get_source_name ()
 
virtual void set_source (enum_variable_source src)
 
virtual bool set_source_name (const char *path)
 
virtual bool set_user (const char *usr)
 
virtual const char * get_user ()
 
virtual const char * get_host ()
 
virtual bool set_host (const char *hst)
 
virtual ulonglong get_timestamp () const
 
virtual void set_user_host (THD *thd)
 
my_optionget_option ()
 
virtual void set_timestamp ()
 
virtual void set_timestamp (ulonglong ts)
 
virtual bool is_non_persistent ()
 
bool set_default (THD *thd, set_var *var)
 Update the system variable with the default value from either session or global scope. More...
 
bool update (THD *thd, set_var *var)
 
SHOW_TYPE show_type ()
 
int scope () const
 
const CHARSET_INFOcharset (THD *thd)
 
bool is_readonly () const
 
bool not_visible () const
 
bool is_trilevel () const
 
bool is_persist_readonly () const
 
bool is_parse_early () const
 
bool is_sensitive () const
 
bool is_hint_updateable () const
 Check if the variable can be set using SET_VAR hint. More...
 
bool is_struct ()
 the following is only true for keycache variables, that support the syntax @keycache_name.variable_name More...
 
bool is_written_to_binlog (enum_var_type type)
 
bool check_scope (enum_var_type query_type)
 Return true for success if: Global query and variable scope is GLOBAL or SESSION, or Session query and variable scope is SESSION or ONLY_SESSION. More...
 
bool is_global_persist (enum_var_type type)
 
bool is_settable_at_command_line ()
 Return true if settable at the command line. More...
 
bool register_option (std::vector< my_option > *array, int parse_flags)
 
void do_deprecated_warning (THD *thd)
 
Itemcopy_value (THD *thd)
 Create item from system variable value. More...
 
void save_default (THD *thd, set_var *var)
 
bool check_if_sensitive_in_context (THD *, bool suppress_errors=true) const
 

Private Attributes

const uint value_count
 The number of allowed numeric values. More...
 
const ALIASaliases
 Array of all textual aliases. More...
 
uint alias_count
 The number of elements of aliases (computed in the constructor). More...
 
const char * command_line_value
 Pointer to the value set by the command line (set by the command line parser, copied to the global value in fixup_command_line()). More...
 
uint command_line_no_value
 

Additional Inherited Members

- Public Types inherited from sys_var
enum  flag_enum {
  GLOBAL = 0x0001 , SESSION = 0x0002 , ONLY_SESSION = 0x0004 , SCOPE_MASK = 0x03FF ,
  READONLY = 0x0400 , ALLOCATED = 0x0800 , INVISIBLE = 0x1000 , TRI_LEVEL = 0x2000 ,
  NOTPERSIST = 0x4000 , HINT_UPDATEABLE = 0x8000 , PERSIST_AS_READ_ONLY = 0x10000 , SENSITIVE = 0x20000
}
 
enum  binlog_status_enum { VARIABLE_NOT_IN_BINLOG , SESSION_VARIABLE_IN_BINLOG }
 Enumeration type to indicate for a system variable whether it will be written to the binlog or not. More...
 
- Public Attributes inherited from sys_var
sys_varnext
 
LEX_CSTRING name
 
sys_varm_persisted_alias
 If the variable has an alias in the persisted variables file, this should point to it. More...
 
bool m_is_persisted_deprecated
 If m_persist_alias is set, and the current variable is deprecated and m_persist_alias is the recommended substitute, then this flag should be set to true. More...
 
enum sys_var::binlog_status_enum binlog_status
 Global system variable attributes. More...
 
std::map< std::string, std::string > m_global_attributes
 
- Static Public Attributes inherited from sys_var
static const int PARSE_EARLY = 1
 
static const int PARSE_NORMAL = 2
 
- Protected Types inherited from sys_var
typedef bool(* on_check_function) (sys_var *self, THD *thd, set_var *var)
 
typedef bool(* pre_update_function) (sys_var *self, THD *thd, set_var *var)
 
typedef bool(* on_update_function) (sys_var *self, THD *thd, enum_var_type type)
 
- Protected Member Functions inherited from sys_var
ucharsession_var_ptr (THD *thd)
 A pointer to a storage area of the variable, to the raw data. More...
 
ucharglobal_var_ptr ()
 
- Protected Attributes inherited from sys_var
int flags
 or'ed flag_enum values More...
 
int m_parse_flag
 either PARSE_EARLY or PARSE_NORMAL. More...
 
const SHOW_TYPE show_val_type
 what value_ptr() returns for sql_show.cc More...
 
my_option option
 min, max, default values are stored here More...
 
PolyLockguard
 second lock that protects the variable More...
 
ptrdiff_t offset
 offset to the value from global_system_variables More...
 
on_check_function on_check
 
pre_update_function pre_update
 Pointer to function to be invoked before updating system variable (but after calling on_check hook), while we do not hold any locks yet. More...
 
on_update_function on_update
 
const char *const deprecation_substitute
 
bool is_os_charset
 true if the value is in character_set_filesystem More...
 
struct get_opt_arg_source source
 
char user [USERNAME_CHAR_LENGTH+1]
 
char host [HOSTNAME_LENGTH+1]
 
ulonglong timestamp
 

Detailed Description

A variant of enum where:

  • Each value may have multiple enum-like aliases.
  • Instances of the class can specify different default values for the cases:
    • User specifies the command-line option without a value (i.e., –option, not –option=value).
    • User does not specify a command-line option at all.

This exists mainly to allow extending a variable that once was boolean in a GA version, into an enumeration type. Booleans accept multiple aliases (0=off=false, 1=on=true), but Sys_var_enum does not, so we could not use Sys_var_enum without breaking backward compatibility. Moreover, booleans default to false if option is not given, and true if option is given without value.

This is incompatible with boolean in the following sense: 'SELECT @variable' returns 0 or 1 for a boolean, whereas this class (similar to enum) returns the textual form. (Note that both boolean, enum, and this class return the textual form in SHOW VARIABLES and SELECT * FROM information_schema.variables).

See enforce_gtid_consistency for an example of how this can be used.

Constructor & Destructor Documentation

◆ Sys_var_multi_enum()

Sys_var_multi_enum::Sys_var_multi_enum ( const char *  name_arg,
const char *  comment,
int  flag_args,
ptrdiff_t  off,
size_t  size,
CMD_LINE  getopt,
const ALIAS  aliases_arg[],
uint  value_count_arg,
uint  def_val,
uint  command_line_no_value_arg,
PolyLock lock = nullptr,
enum binlog_status_enum  binlog_status_arg = VARIABLE_NOT_IN_BINLOG,
on_check_function  on_check_func = nullptr,
on_update_function  on_update_func = nullptr,
const char *  substitute = nullptr,
int  parse_flag = PARSE_NORMAL 
)
inline

Enumerated type system variable.

Parameters
name_argSee sys_var::sys_var()
commentSee sys_var::sys_var()
flag_argsSee sys_var::sys_var()
offSee sys_var::sys_var()
sizeSee sys_var::sys_var()
getoptSee sys_var::sys_var()
aliases_argArray of ALIASes, indicating which textual values map to which number. Should be terminated with an ALIAS having member variable alias set to NULL. The first ‘value_count_arg’ elements must map to 0, 1, etc; these will be used when the value is displayed. Remaining elements may appear in arbitrary order.
value_count_argThe number of allowed integer values.
def_valThe default value if no command line option is given. This must be a valid index into the aliases_arg array, but it does not have to be less than value_count. The corresponding alias will be used in mysqld –help to show the default value.
command_line_no_value_argThe default value if a command line option is given without a value ('–command-line-option' without '=VALUE'). This must be less than value_count_arg.
lockSee sys_var::sys_var()
binlog_status_argSee sys_var::sys_var()
on_check_funcSee sys_var::sys_var()
on_update_funcSee sys_var::sys_var()
substituteSee sys_var::sys_var()
parse_flagSee sys_var::sys_var()

Member Function Documentation

◆ check_update_type()

bool Sys_var_multi_enum::check_update_type ( Item_result  type)
inlineoverridevirtual

Implements sys_var.

◆ do_check()

bool Sys_var_multi_enum::do_check ( THD ,
set_var var 
)
inlineoverridevirtual

Implements sys_var.

◆ find_value()

int Sys_var_multi_enum::find_value ( const char *  text)
inline

Return the numeric value for a given alias string, or -1 if the string is not a valid alias.

◆ fixup_command_line()

const char * Sys_var_multi_enum::fixup_command_line ( const char *  value_str)
inline

Because of limitations in the command-line parsing library, the value given on the command-line cannot be automatically copied to the global value.

Instead, inheritants of this class should call this function from mysqld.cc:mysqld_get_one_option.

Parameters
value_strPointer to the value specified on the command line (as in –option=VALUE).
Return values
NULLSuccess.
non-NULLPointer to the invalid string that was used as argument.

◆ global_save_default()

void Sys_var_multi_enum::global_save_default ( THD thd,
set_var var 
)
inlineoverridevirtual

save the global default value of the variable in var

Implements sys_var.

◆ global_update()

bool Sys_var_multi_enum::global_update ( THD ,
set_var  
)
inlineoverridevirtual

Implements sys_var.

Reimplemented in Sys_var_enforce_gtid_consistency.

◆ global_value_ptr()

const uchar * Sys_var_multi_enum::global_value_ptr ( THD ,
std::string_view   
)
inlineoverridevirtual

Reimplemented from sys_var.

◆ saved_value_to_string()

void Sys_var_multi_enum::saved_value_to_string ( THD thd,
set_var var,
char *  def_val 
)
inlineoverridevirtual

This function converts value stored in save_result to string.

This function must be called after calling save_default() as save_default() will store default value to save_result.

Implements sys_var.

◆ session_save_default()

void Sys_var_multi_enum::session_save_default ( THD thd,
set_var var 
)
inlineoverridevirtual

save the session default value of the variable in var

Implements sys_var.

◆ session_update()

bool Sys_var_multi_enum::session_update ( THD ,
set_var  
)
inlineoverridevirtual

Implements sys_var.

◆ session_value_ptr()

const uchar * Sys_var_multi_enum::session_value_ptr ( THD running_thd,
THD target_thd,
std::string_view  keycache_name 
)
inlineoverridevirtual

A pointer to a value of the variable for SHOW.

It must be of show_val_type type (bool for SHOW_BOOL, int for SHOW_INT, longlong for SHOW_LONGLONG, etc).

Reimplemented from sys_var.

Member Data Documentation

◆ alias_count

uint Sys_var_multi_enum::alias_count
private

The number of elements of aliases (computed in the constructor).

◆ aliases

const ALIAS* Sys_var_multi_enum::aliases
private

Array of all textual aliases.

◆ command_line_no_value

uint Sys_var_multi_enum::command_line_no_value
private

◆ command_line_value

const char* Sys_var_multi_enum::command_line_value
private

Pointer to the value set by the command line (set by the command line parser, copied to the global value in fixup_command_line()).

◆ value_count

const uint Sys_var_multi_enum::value_count
private

The number of allowed numeric values.


The documentation for this class was generated from the following file: