![]() |
MySQL 8.0.43
Source Code Documentation
|
#include "sql/persisted_variable.h"#include "my_config.h"#include <assert.h>#include <ctype.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <algorithm>#include <array>#include <iomanip>#include <memory>#include <new>#include <utility>#include "mysql/components/library_mysys/my_hex_tools.h"#include "keyring_operations_helper.h"#include "lex_string.h"#include "m_ctype.h"#include "m_string.h"#include "my_aes.h"#include "my_compiler.h"#include "my_default.h"#include "my_getopt.h"#include "my_io.h"#include "my_loglevel.h"#include "my_macros.h"#include "my_rnd.h"#include "my_sys.h"#include "my_thread.h"#include "mysql/components/services/bits/psi_bits.h"#include "mysql/components/services/bits/psi_file_bits.h"#include "mysql/components/services/bits/psi_memory_bits.h"#include "mysql/components/services/bits/psi_mutex_bits.h"#include "mysql/components/services/log_builtins.h"#include "mysql/components/services/log_shared.h"#include "mysql/components/services/system_variable_source_type.h"#include "mysql/psi/mysql_file.h"#include "mysql/psi/mysql_memory.h"#include "mysql/psi/mysql_mutex.h"#include "mysql/status_var.h"#include "mysql_version.h"#include "mysqld_error.h"#include "prealloced_array.h"#include "scope_guard.h"#include "sql-common/json_dom.h"#include "sql/auth/auth_acls.h"#include "sql/auth/auth_internal.h"#include "sql/auth/sql_security_ctx.h"#include "sql/current_thd.h"#include "sql/debug_sync.h"#include "sql/derror.h"#include "sql/item.h"#include "sql/log.h"#include "sql/mysqld.h"#include "sql/server_component/mysql_server_keyring_lockable_imp.h"#include "sql/set_var.h"#include "sql/sql_class.h"#include "sql/sql_error.h"#include "sql/sql_lex.h"#include "sql/sql_list.h"#include "sql/sql_show.h"#include "sql/sys_vars_shared.h"#include "sql/thr_malloc.h"#include "sql_string.h"#include "template_utils.h"#include "thr_mutex.h"#include "typelib.h"Classes | |
| struct | sort_tv_by_timestamp |
| A comparison operator to sort persistent variables entries by timestamp. More... | |
Namespaces | |
| namespace | anonymous_namespace{persisted_variable.cc} |
Functions | |
| void | my_init_persist_psi_keys (void) |
| CLASS Persisted_variables_cache Holds <name,value> pair of all options which needs to be persisted to a file. More... | |
| std::string | anonymous_namespace{persisted_variable.cc}::tolower_varname (const char *name) |
| static bool | check_boolean_value (const char *value, String &bool_str) |
| For boolean variable types do validation on what value is set for the variable and then report error in case an invalid value is set. More... | |
| static bool | format_json (const st_persist_var &entry, Json_object §ion_object) |
| static bool | add_json_object (Json_object §ion_object, Json_object &json_object, const char *key_section) |
| static bool | format_set (Persisted_variables_uset §ion, string key_section, Json_object &json_object) |
| static bool | format_map (Persisted_variables_umap §ion, string key_section, Json_object &json_object) |
| static bool | extract_variable_value_and_metadata (const Json_object *json_object, st_persist_var &output) |
| static bool | extract_set (const Json_object &json_object, const std::string set_key, Persisted_variables_uset &output) |
| static bool | extract_map (const Json_object &json_object, const std::string map_key, Persisted_variables_umap &output) |
| static bool | extract_string (Json_object *obj, const std::string &key, std::string &value) |
|
static |
|
static |
For boolean variable types do validation on what value is set for the variable and then report error in case an invalid value is set.
| [in] | value | Value which needs to be checked for. |
| [out] | bool_str | Target String into which correct value needs to be stored after validation. |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| void my_init_persist_psi_keys | ( | void | ) |
CLASS Persisted_variables_cache Holds <name,value> pair of all options which needs to be persisted to a file.
When first SET PERSIST statement is executed we instantiate Persisted_variables_cache which loads the config file if present into m_persisted_dynamic_variables set. This is a singleton operation. m_persisted_dynamic_variables is an in-memory copy of config file itself. If the SET statement passes then this in-memory is updated and flushed to file as an atomic operation.
Next SET PERSIST statement would only update the in-memory copy and sync to config file instead of loading the file again.
|
static |
|
static |
|
static |
| PSI_memory_key key_memory_persisted_variables |
| PSI_mutex_key key_persist_file |
| PSI_file_key key_persist_file_cnf |
| PSI_mutex_key key_persist_variables |