summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
authorunknown <jimw@mysql.com>2006-05-08 16:38:45 -0700
committerunknown <jimw@mysql.com>2006-05-08 16:38:45 -0700
commitc06972bf2a9e9739c0eb926c6f750b8990fd4c17 (patch)
tree61a75e4b77c3ded4e660e42076b4d7cc71af45ab /sql/set_var.cc
parent47302570e639927b258e10a7c009e6d585ba8adf (diff)
downloadmariadb-git-c06972bf2a9e9739c0eb926c6f750b8990fd4c17.tar.gz
Bug #1039: tmpdir and datadir not available via @@ system variable syntax
Bug #19606: ssl variables are not displayed in show variables Bug #19616: log_queries_not_using_indexes is not listed in show variables Make basedir, datadir, tmpdir, log_queries_not_using_indexes, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, and ssl_key all available both from SHOW VARIABLES and as @@variables. As a side-effect of this change, log_queries_not_using_indexes can be changed at runtime (but only globally, not per-connection). include/sslopt-longopts.h: Put options in alphabetical order include/sslopt-vars.h: Allow define of SSL_VARS_NOT_STATIC to prevent variables from not being made static. mysql-test/r/variables.result: Add new results mysql-test/t/variables.test: Add new regression tests sql/mysql_priv.h: Add extern for opt_log_queries_not_using_indexes sql/mysqld.cc: Handle opt_log_queries_not_using_indexes as extern, and define SSL_VARS_NO_STATIC so they can be accessed outside of mysqld.cc sql/set_var.cc: Handle basedir, datadir, tmpdir, log_queries_not_using_indexes, and various ssl settings so that they are accessible as server variables and listed in SHOW VARIABLES. sql/set_var.h: Add new sys_var_constr_str_ptr class, for when we have a system variable that is only set via the command-line that is a pointer to a string.
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r--sql/set_var.cc69
1 files changed, 66 insertions, 3 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 215d3cfc879..003dd4a8ab3 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -122,6 +122,7 @@ static byte *get_error_count(THD *thd);
static byte *get_warning_count(THD *thd);
static byte *get_prepared_stmt_count(THD *thd);
static byte *get_have_innodb(THD *thd);
+static byte *get_tmpdir(THD *thd);
/*
Variable definition list
@@ -138,6 +139,7 @@ sys_var_thd_ulong sys_auto_increment_offset("auto_increment_offset",
sys_var_bool_ptr sys_automatic_sp_privileges("automatic_sp_privileges",
&sp_automatic_privileges);
+sys_var_const_str sys_basedir("basedir", mysql_home);
sys_var_long_ptr sys_binlog_cache_size("binlog_cache_size",
&binlog_cache_size);
sys_var_thd_ulong sys_bulk_insert_buff_size("bulk_insert_buffer_size",
@@ -161,6 +163,7 @@ sys_var_long_ptr sys_concurrent_insert("concurrent_insert",
&myisam_concurrent_insert);
sys_var_long_ptr sys_connect_timeout("connect_timeout",
&connect_timeout);
+sys_var_const_str sys_datadir("datadir", mysql_real_data_home);
sys_var_enum sys_delay_key_write("delay_key_write",
&delay_key_write_options,
&delay_key_write_typelib,
@@ -208,6 +211,9 @@ sys_trust_routine_creators("log_bin_trust_routine_creators",
sys_var_bool_ptr
sys_trust_function_creators("log_bin_trust_function_creators",
&trust_function_creators);
+sys_var_bool_ptr
+ sys_log_queries_not_using_indexes("log_queries_not_using_indexes",
+ &opt_log_queries_not_using_indexes);
sys_var_thd_ulong sys_log_warnings("log_warnings", &SV::log_warnings);
sys_var_thd_ulong sys_long_query_time("long_query_time",
&SV::long_query_time);
@@ -331,6 +337,7 @@ sys_var_thd_ulong sys_query_alloc_block_size("query_alloc_block_size",
sys_var_thd_ulong sys_query_prealloc_size("query_prealloc_size",
&SV::query_prealloc_size,
0, fix_thd_mem_root);
+sys_var_readonly sys_tmpdir("tmpdir", OPT_GLOBAL, SHOW_CHAR, get_tmpdir);
sys_var_thd_ulong sys_trans_alloc_block_size("transaction_alloc_block_size",
&SV::trans_alloc_block_size,
0, fix_trans_mem_root);
@@ -367,6 +374,21 @@ sys_var_thd_ulong sys_sort_buffer("sort_buffer_size",
&SV::sortbuff_size);
sys_var_thd_sql_mode sys_sql_mode("sql_mode",
&SV::sql_mode);
+#ifdef HAVE_OPENSSL
+extern char *opt_ssl_ca, *opt_ssl_capath, *opt_ssl_cert, *opt_ssl_cipher,
+ *opt_ssl_key;
+sys_var_const_str_ptr sys_ssl_ca("ssl_ca", &opt_ssl_ca);
+sys_var_const_str_ptr sys_ssl_capath("ssl_capath", &opt_ssl_capath);
+sys_var_const_str_ptr sys_ssl_cert("ssl_cert", &opt_ssl_cert);
+sys_var_const_str_ptr sys_ssl_cipher("ssl_cipher", &opt_ssl_cipher);
+sys_var_const_str_ptr sys_ssl_key("ssl_key", &opt_ssl_key);
+#else
+sys_var_const_str sys_ssl_ca("ssl_ca", NULL);
+sys_var_const_str sys_ssl_capath("ssl_capath", NULL);
+sys_var_const_str sys_ssl_cert("ssl_cert", NULL);
+sys_var_const_str sys_ssl_cipher("ssl_cipher", NULL);
+sys_var_const_str sys_ssl_key("ssl_key", NULL);
+#endif
sys_var_thd_enum
sys_updatable_views_with_limit("updatable_views_with_limit",
&SV::updatable_views_with_limit,
@@ -582,6 +604,7 @@ sys_var *sys_variables[]=
&sys_auto_increment_offset,
&sys_autocommit,
&sys_automatic_sp_privileges,
+ &sys_basedir,
&sys_big_tables,
&sys_big_selects,
&sys_binlog_cache_size,
@@ -600,6 +623,7 @@ sys_var *sys_variables[]=
&sys_completion_type,
&sys_concurrent_insert,
&sys_connect_timeout,
+ &sys_datadir,
&sys_date_format,
&sys_datetime_format,
&sys_div_precincrement,
@@ -631,6 +655,7 @@ sys_var *sys_variables[]=
&sys_local_infile,
&sys_log_binlog,
&sys_log_off,
+ &sys_log_queries_not_using_indexes,
&sys_log_update,
&sys_log_warnings,
&sys_long_query_time,
@@ -710,6 +735,11 @@ sys_var *sys_variables[]=
&sys_sql_mode,
&sys_sql_warnings,
&sys_sql_notes,
+ &sys_ssl_ca,
+ &sys_ssl_capath,
+ &sys_ssl_cert,
+ &sys_ssl_cipher,
+ &sys_ssl_key,
&sys_storage_engine,
#ifdef HAVE_REPLICATION
&sys_sync_binlog_period,
@@ -724,6 +754,7 @@ sys_var *sys_variables[]=
&sys_timed_mutexes,
&sys_timestamp,
&sys_time_zone,
+ &sys_tmpdir,
&sys_tmp_table_size,
&sys_trans_alloc_block_size,
&sys_trans_prealloc_size,
@@ -775,7 +806,7 @@ struct show_var_st init_vars[]= {
{"auto_increment_offset", (char*) &sys_auto_increment_offset, SHOW_SYS},
{sys_automatic_sp_privileges.name,(char*) &sys_automatic_sp_privileges, SHOW_SYS},
{"back_log", (char*) &back_log, SHOW_LONG},
- {"basedir", mysql_home, SHOW_CHAR},
+ {sys_basedir.name, (char*) &sys_basedir, SHOW_SYS},
#ifdef HAVE_BERKELEY_DB
{"bdb_cache_size", (char*) &berkeley_cache_size, SHOW_LONG},
{"bdb_home", (char*) &berkeley_home, SHOW_CHAR_PTR},
@@ -801,7 +832,7 @@ struct show_var_st init_vars[]= {
{sys_completion_type.name, (char*) &sys_completion_type, SHOW_SYS},
{sys_concurrent_insert.name,(char*) &sys_concurrent_insert, SHOW_SYS},
{sys_connect_timeout.name, (char*) &sys_connect_timeout, SHOW_SYS},
- {"datadir", mysql_real_data_home, SHOW_CHAR},
+ {sys_datadir.name, (char*) &sys_datadir, SHOW_SYS},
{sys_date_format.name, (char*) &sys_date_format, SHOW_SYS},
{sys_datetime_format.name, (char*) &sys_datetime_format, SHOW_SYS},
{sys_default_week_format.name, (char*) &sys_default_week_format, SHOW_SYS},
@@ -899,6 +930,8 @@ struct show_var_st init_vars[]= {
{"log_bin", (char*) &opt_bin_log, SHOW_BOOL},
{sys_trust_function_creators.name,(char*) &sys_trust_function_creators, SHOW_SYS},
{"log_error", (char*) log_error_file, SHOW_CHAR},
+ {sys_log_queries_not_using_indexes.name,
+ (char*) &sys_log_queries_not_using_indexes, SHOW_SYS},
#ifdef HAVE_REPLICATION
{"log_slave_updates", (char*) &opt_log_slave_updates, SHOW_MY_BOOL},
#endif
@@ -1017,6 +1050,11 @@ struct show_var_st init_vars[]= {
{sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS},
{"sql_notes", (char*) &sys_sql_notes, SHOW_SYS},
{"sql_warnings", (char*) &sys_sql_warnings, SHOW_SYS},
+ {sys_ssl_ca.name, (char*) &sys_ssl_ca, SHOW_SYS},
+ {sys_ssl_capath.name, (char*) &sys_ssl_capath, SHOW_SYS},
+ {sys_ssl_cert.name, (char*) &sys_ssl_cert, SHOW_SYS},
+ {sys_ssl_cipher.name, (char*) &sys_ssl_cipher, SHOW_SYS},
+ {sys_ssl_key.name, (char*) &sys_ssl_key, SHOW_SYS},
{sys_storage_engine.name, (char*) &sys_storage_engine, SHOW_SYS},
#ifdef HAVE_REPLICATION
{sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period, SHOW_SYS},
@@ -1037,7 +1075,7 @@ struct show_var_st init_vars[]= {
{"time_zone", (char*) &sys_time_zone, SHOW_SYS},
{sys_timed_mutexes.name, (char*) &sys_timed_mutexes, SHOW_SYS},
{sys_tmp_table_size.name, (char*) &sys_tmp_table_size, SHOW_SYS},
- {"tmpdir", (char*) &opt_mysql_tmpdir, SHOW_CHAR_PTR},
+ {sys_tmpdir.name, (char*) &sys_tmpdir, SHOW_SYS},
{sys_trans_alloc_block_size.name, (char*) &sys_trans_alloc_block_size,
SHOW_SYS},
{sys_trans_prealloc_size.name, (char*) &sys_trans_prealloc_size, SHOW_SYS},
@@ -2863,6 +2901,31 @@ static byte *get_prepared_stmt_count(THD *thd)
return (byte*) &thd->sys_var_tmp.ulong_value;
}
+
+/*
+ Get the tmpdir that was specified or chosen by default
+
+ SYNOPSIS
+ get_tmpdir()
+ thd thread handle
+
+ DESCRIPTION
+ This is necessary because if the user does not specify a temporary
+ directory via the command line, one is chosen based on the environment
+ or system defaults. But we can't just always use mysql_tmpdir, because
+ that is actually a call to my_tmpdir() which cycles among possible
+ temporary directories.
+
+ RETURN VALUES
+ ptr pointer to NUL-terminated string
+ */
+static byte *get_tmpdir(THD *thd)
+{
+ if (opt_mysql_tmpdir)
+ return (byte *)opt_mysql_tmpdir;
+ return (byte*)mysql_tmpdir;
+}
+
/****************************************************************************
Main handling of variables:
- Initialisation