mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
remove maria_* variables from the server, declare them in ha_maria.cc
note: this does *not* move pagecache* variables. sql/mysqld.cc: remove maria_* variables from the server, declare them in ha_maria.cc sql/set_var.cc: remove maria_* variables from the server, declare them in ha_maria.cc sql/sql_class.h: remove maria_* variables from the server, declare them in ha_maria.cc sql/sql_plugin.cc: bugfix: support for ENUM/SET thd local plugin variables storage/maria/ha_maria.cc: remove maria_* variables from the server, declare them in ha_maria.cc
This commit is contained in:
parent
a1bb4afa7e
commit
6c7a278c83
5 changed files with 87 additions and 117 deletions
|
@ -506,7 +506,6 @@ char *mysqld_unix_port, *opt_mysql_tmpdir;
|
|||
const char **errmesg; /* Error messages */
|
||||
const char *myisam_recover_options_str="OFF";
|
||||
const char *myisam_stats_method_str="nulls_unequal";
|
||||
const char *maria_stats_method_str="nulls_unequal";
|
||||
|
||||
/* name of reference on left espression in rewritten IN subquery */
|
||||
const char *in_left_expr_name= "<left expr>";
|
||||
|
@ -550,7 +549,7 @@ MY_LOCALE *my_default_lc_time_names;
|
|||
|
||||
SHOW_COMP_OPTION have_ssl, have_symlink, have_dlopen, have_query_cache;
|
||||
SHOW_COMP_OPTION have_geometry, have_rtree_keys;
|
||||
SHOW_COMP_OPTION have_crypt, have_compress, have_maria_db;
|
||||
SHOW_COMP_OPTION have_crypt, have_compress;
|
||||
|
||||
/* Thread specific variables */
|
||||
|
||||
|
@ -2208,7 +2207,7 @@ or misconfigured. This error can also be caused by malfunctioning hardware.\n",
|
|||
We will try our best to scrape up some info that will hopefully help diagnose\n\
|
||||
the problem, but since we have already crashed, something is definitely wrong\n\
|
||||
and this may fail.\n\n");
|
||||
fprintf(stderr, "key_buffer_size=%lu\n",
|
||||
fprintf(stderr, "key_buffer_size=%lu\n",
|
||||
(ulong) dflt_key_cache->key_cache_mem_size);
|
||||
#ifdef WITH_MARIA_STORAGE_ENGINE
|
||||
fprintf(stderr, "page_buffer_size=%lu\n",
|
||||
|
@ -5059,10 +5058,6 @@ enum options_mysqld
|
|||
OPT_MYISAM_USE_MMAP, OPT_MYISAM_REPAIR_THREADS,
|
||||
OPT_MYISAM_STATS_METHOD,
|
||||
|
||||
OPT_MARIA_BLOCK_SIZE,
|
||||
OPT_MARIA_MAX_SORT_FILE_SIZE, OPT_MARIA_SORT_BUFFER_SIZE,
|
||||
OPT_MARIA_USE_MMAP, OPT_MARIA_REPAIR_THREADS,
|
||||
OPT_MARIA_STATS_METHOD,
|
||||
OPT_PAGECACHE_BUFFER_SIZE,
|
||||
OPT_PAGECACHE_DIVISION_LIMIT, OPT_PAGECACHE_AGE_THRESHOLD,
|
||||
|
||||
|
@ -5079,7 +5074,7 @@ enum options_mysqld
|
|||
OPT_SORT_BUFFER, OPT_TABLE_OPEN_CACHE, OPT_TABLE_DEF_CACHE,
|
||||
OPT_THREAD_CONCURRENCY, OPT_THREAD_CACHE_SIZE,
|
||||
OPT_TMP_TABLE_SIZE, OPT_THREAD_STACK,
|
||||
OPT_WAIT_TIMEOUT,
|
||||
OPT_WAIT_TIMEOUT,
|
||||
OPT_ERROR_LOG_FILE,
|
||||
OPT_DEFAULT_WEEK_FORMAT,
|
||||
OPT_RANGE_ALLOC_BLOCK_SIZE, OPT_ALLOW_SUSPICIOUS_UDFS,
|
||||
|
@ -6046,40 +6041,6 @@ log and this option does nothing anymore.",
|
|||
0
|
||||
#endif
|
||||
, 0, 2, 0, 1, 0},
|
||||
#ifdef WITH_MARIA_STORAGE_ENGINE
|
||||
{"maria_block_size", OPT_MARIA_BLOCK_SIZE,
|
||||
"Block size to be used for MARIA index pages.",
|
||||
(uchar**) &maria_block_size,
|
||||
(uchar**) &maria_block_size, 0, GET_ULONG, REQUIRED_ARG,
|
||||
MARIA_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH,
|
||||
MARIA_MAX_KEY_BLOCK_LENGTH,
|
||||
0, MARIA_MIN_KEY_BLOCK_LENGTH, 0},
|
||||
{"maria_max_sort_file_size", OPT_MARIA_MAX_SORT_FILE_SIZE,
|
||||
"Don't use the fast sort index method to created index if the temporary "
|
||||
"file would get bigger than this.",
|
||||
(uchar**) &global_system_variables.maria_max_sort_file_size,
|
||||
(uchar**) &max_system_variables.maria_max_sort_file_size, 0,
|
||||
GET_ULL, REQUIRED_ARG, (longlong) LONG_MAX, 0, (ulonglong) MAX_FILE_SIZE,
|
||||
0, 1024*1024, 0},
|
||||
{"maria_repair_threads", OPT_MARIA_REPAIR_THREADS,
|
||||
"Number of threads to use when repairing maria tables. The value of 1 "
|
||||
"disables parallel repair.",
|
||||
(uchar**) &global_system_variables.maria_repair_threads,
|
||||
(uchar**) &max_system_variables.maria_repair_threads, 0,
|
||||
GET_ULONG, REQUIRED_ARG, 1, 1, ~0L, 0, 1, 0},
|
||||
{"maria_sort_buffer_size", OPT_MARIA_SORT_BUFFER_SIZE,
|
||||
"The buffer that is allocated when sorting the index when doing a REPAIR "
|
||||
"or when creating indexes with CREATE INDEX or ALTER TABLE.",
|
||||
(uchar**) &global_system_variables.maria_sort_buff_size,
|
||||
(uchar**) &max_system_variables.maria_sort_buff_size, 0,
|
||||
GET_ULONG, REQUIRED_ARG, 8192*1024, 4, ~0L, 0, 1, 0},
|
||||
{"maria_stats_method", OPT_MARIA_STATS_METHOD,
|
||||
"Specifies how maria index statistics collection code should threat NULLs. "
|
||||
"Possible values of name are \"nulls_unequal\" (default behavior for 4.1/5.0), "
|
||||
"\"nulls_equal\" (emulate 4.0 behavior), and \"nulls_ignored\".",
|
||||
(uchar**) &maria_stats_method_str, (uchar**) &maria_stats_method_str, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
|
||||
"Max packetlength to send/receive from to server.",
|
||||
(uchar**) &global_system_variables.max_allowed_packet,
|
||||
|
@ -7194,7 +7155,7 @@ static void mysql_init_variables(void)
|
|||
global_query_id= thread_id= 1L;
|
||||
strmov(server_version, MYSQL_SERVER_VERSION);
|
||||
myisam_recover_options_str= sql_mode_str= "OFF";
|
||||
myisam_stats_method_str= maria_stats_method_str= "nulls_unequal";
|
||||
myisam_stats_method_str= "nulls_unequal";
|
||||
my_bind_addr = htonl(INADDR_ANY);
|
||||
threads.empty();
|
||||
thread_cache.empty();
|
||||
|
@ -7229,7 +7190,7 @@ static void mysql_init_variables(void)
|
|||
master_password= master_host= 0;
|
||||
master_info_file= (char*) "master.info",
|
||||
relay_log_info_file= (char*) "relay-log.info";
|
||||
master_ssl_key= master_ssl_cert= master_ssl_ca=
|
||||
master_ssl_key= master_ssl_cert= master_ssl_ca=
|
||||
master_ssl_capath= master_ssl_cipher= 0;
|
||||
report_user= report_password = report_host= 0; /* TO BE DELETED */
|
||||
opt_relay_logname= opt_relaylog_index_name= 0;
|
||||
|
@ -7257,7 +7218,6 @@ static void mysql_init_variables(void)
|
|||
when collecting index statistics for MyISAM tables.
|
||||
*/
|
||||
global_system_variables.myisam_stats_method= MI_STATS_METHOD_NULLS_NOT_EQUAL;
|
||||
global_system_variables.maria_stats_method= MI_STATS_METHOD_NULLS_NOT_EQUAL;
|
||||
|
||||
/* Variables that depends on compile options */
|
||||
#ifndef DBUG_OFF
|
||||
|
|
|
@ -116,7 +116,6 @@ static void fix_max_join_size(THD *thd, enum_var_type type);
|
|||
static void fix_query_cache_size(THD *thd, enum_var_type type);
|
||||
static void fix_query_cache_min_res_unit(THD *thd, enum_var_type type);
|
||||
static void fix_myisam_max_sort_file_size(THD *thd, enum_var_type type);
|
||||
static void fix_maria_max_sort_file_size(THD *thd, enum_var_type type);
|
||||
static void fix_max_binlog_size(THD *thd, enum_var_type type);
|
||||
static void fix_max_relay_log_size(THD *thd, enum_var_type type);
|
||||
static void fix_max_connections(THD *thd, enum_var_type type);
|
||||
|
@ -258,7 +257,7 @@ static sys_var_bool_ptr sys_local_infile(&vars, "local_infile",
|
|||
static sys_var_trust_routine_creators
|
||||
sys_trust_routine_creators(&vars, "log_bin_trust_routine_creators",
|
||||
&trust_function_creators);
|
||||
static sys_var_bool_ptr
|
||||
static sys_var_bool_ptr
|
||||
sys_trust_function_creators(&vars, "log_bin_trust_function_creators",
|
||||
&trust_function_creators);
|
||||
static sys_var_bool_ptr
|
||||
|
@ -341,20 +340,10 @@ static sys_var_thd_ulong sys_myisam_repair_threads(&vars, "myisam_repair_t
|
|||
static sys_var_thd_ulong sys_myisam_sort_buffer_size(&vars, "myisam_sort_buffer_size", &SV::myisam_sort_buff_size);
|
||||
static sys_var_bool_ptr sys_myisam_use_mmap(&vars, "myisam_use_mmap",
|
||||
&opt_myisam_use_mmap);
|
||||
|
||||
static sys_var_thd_enum sys_myisam_stats_method(&vars, "myisam_stats_method",
|
||||
&SV::myisam_stats_method,
|
||||
&myisam_stats_method_typelib,
|
||||
NULL);
|
||||
|
||||
static sys_var_thd_ulonglong sys_maria_max_sort_file_size(&vars, "maria_max_sort_file_size", &SV::maria_max_sort_file_size, fix_maria_max_sort_file_size, 1);
|
||||
static sys_var_thd_ulong sys_maria_repair_threads(&vars, "maria_repair_threads", &SV::maria_repair_threads);
|
||||
static sys_var_thd_ulong sys_maria_sort_buffer_size(&vars, "maria_sort_buffer_size", &SV::maria_sort_buff_size);
|
||||
static sys_var_thd_enum sys_maria_stats_method(&vars, "maria_stats_method",
|
||||
&SV::maria_stats_method,
|
||||
&myisam_stats_method_typelib,
|
||||
NULL);
|
||||
|
||||
static sys_var_thd_ulong sys_net_buffer_length(&vars, "net_buffer_length",
|
||||
&SV::net_buffer_length);
|
||||
static sys_var_thd_ulong sys_net_read_timeout(&vars, "net_read_timeout",
|
||||
|
@ -651,7 +640,7 @@ static sys_var_have_plugin sys_have_csv(&vars, "have_csv", C_STRING_WITH_LEN("cs
|
|||
static sys_var_have_variable sys_have_dlopen(&vars, "have_dynamic_loading", &have_dlopen);
|
||||
static sys_var_have_variable sys_have_geometry(&vars, "have_geometry", &have_geometry);
|
||||
static sys_var_have_plugin sys_have_innodb(&vars, "have_innodb", C_STRING_WITH_LEN("innodb"), MYSQL_STORAGE_ENGINE_PLUGIN);
|
||||
static sys_var_have_variable sys_have_maria_db(&vars, "have_maria", &have_maria_db);
|
||||
static sys_var_have_plugin sys_have_maria(&vars, "have_maria", C_STRING_WITH_LEN("maria"), MYSQL_STORAGE_ENGINE_PLUGIN);
|
||||
static sys_var_have_plugin sys_have_ndbcluster(&vars, "have_ndbcluster", C_STRING_WITH_LEN("ndbcluster"), MYSQL_STORAGE_ENGINE_PLUGIN);
|
||||
static sys_var_have_variable sys_have_openssl(&vars, "have_openssl", &have_ssl);
|
||||
static sys_var_have_variable sys_have_ssl(&vars, "have_ssl", &have_ssl);
|
||||
|
@ -867,16 +856,6 @@ fix_myisam_max_sort_file_size(THD *thd, enum_var_type type)
|
|||
(my_off_t) global_system_variables.myisam_max_sort_file_size;
|
||||
}
|
||||
|
||||
static void
|
||||
fix_maria_max_sort_file_size(THD *thd, enum_var_type type)
|
||||
{
|
||||
#ifdef WITH_MARIA_STORAGE_ENGINE
|
||||
maria_max_temp_length=
|
||||
(my_off_t) global_system_variables.myisam_max_sort_file_size;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Set the OPTION_BIG_SELECTS flag if max_join_size == HA_POS_ERROR
|
||||
*/
|
||||
|
|
|
@ -232,20 +232,19 @@ struct system_variables
|
|||
{
|
||||
/*
|
||||
How dynamically allocated system variables are handled:
|
||||
|
||||
|
||||
The global_system_variables and max_system_variables are "authoritative"
|
||||
They both should have the same 'version' and 'size'.
|
||||
When attempting to access a dynamic variable, if the session version
|
||||
is out of date, then the session version is updated and realloced if
|
||||
neccessary and bytes copied from global to make up for missing data.
|
||||
*/
|
||||
*/
|
||||
ulong dynamic_variables_version;
|
||||
char* dynamic_variables_ptr;
|
||||
uint dynamic_variables_head; /* largest valid variable offset */
|
||||
uint dynamic_variables_size; /* how many bytes are in use */
|
||||
|
||||
|
||||
ulonglong myisam_max_extra_sort_file_size;
|
||||
ulonglong maria_max_sort_file_size;
|
||||
ulonglong myisam_max_sort_file_size;
|
||||
ulonglong max_heap_table_size;
|
||||
ulonglong tmp_table_size;
|
||||
|
@ -262,9 +261,6 @@ struct system_variables
|
|||
ulong max_tmp_tables;
|
||||
ulong max_insert_delayed_threads;
|
||||
ulong min_examined_row_limit;
|
||||
ulong maria_repair_threads;
|
||||
ulong maria_sort_buff_size;
|
||||
ulong maria_stats_method;
|
||||
ulong multi_range_count;
|
||||
ulong myisam_repair_threads;
|
||||
ulong myisam_sort_buff_size;
|
||||
|
@ -312,9 +308,9 @@ struct system_variables
|
|||
|
||||
my_bool low_priority_updates;
|
||||
my_bool new_mode;
|
||||
/*
|
||||
/*
|
||||
compatibility option:
|
||||
- index usage hints (USE INDEX without a FOR clause) behave as in 5.0
|
||||
- index usage hints (USE INDEX without a FOR clause) behave as in 5.0
|
||||
*/
|
||||
my_bool old_mode;
|
||||
my_bool query_cache_wlock_invalidate;
|
||||
|
@ -538,7 +534,7 @@ class Server_side_cursor;
|
|||
- prepared, that is, contain placeholders,
|
||||
- opened as cursors. We maintain 1 to 1 relationship between
|
||||
statement and cursor - if user wants to create another cursor for his
|
||||
query, we create another statement for it.
|
||||
query, we create another statement for it.
|
||||
To perform some action with statement we reset THD part to the state of
|
||||
that statement, do the action, and then save back modified state from THD
|
||||
to the statement. It will be changed in near future, and Statement will
|
||||
|
@ -589,7 +585,7 @@ public:
|
|||
it. We will see the query_length field as either 0, or the right value
|
||||
for it.
|
||||
Assuming that the write and read of an n-bit memory field in an n-bit
|
||||
computer is atomic, we can avoid races in the above way.
|
||||
computer is atomic, we can avoid races in the above way.
|
||||
This printing is needed at least in SHOW PROCESSLIST and SHOW INNODB
|
||||
STATUS.
|
||||
*/
|
||||
|
@ -741,7 +737,7 @@ public:
|
|||
{
|
||||
return (*priv_host ? priv_host : (char *)"%");
|
||||
}
|
||||
|
||||
|
||||
bool set_user(char *user_arg);
|
||||
|
||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||
|
@ -1084,7 +1080,7 @@ public:
|
|||
/*
|
||||
One thread can hold up to one named user-level lock. This variable
|
||||
points to a lock object if the lock is present. See item_func.cc and
|
||||
chapter 'Miscellaneous functions', for functions GET_LOCK, RELEASE_LOCK.
|
||||
chapter 'Miscellaneous functions', for functions GET_LOCK, RELEASE_LOCK.
|
||||
*/
|
||||
User_level_lock *ull;
|
||||
#ifndef DBUG_OFF
|
||||
|
@ -1103,7 +1099,7 @@ public:
|
|||
time_t start_time, user_time;
|
||||
ulonglong connect_utime, thr_create_utime; // track down slow pthread_create
|
||||
ulonglong start_utime, utime_after_lock;
|
||||
|
||||
|
||||
thr_lock_type update_lock_default;
|
||||
Delayed_insert *di;
|
||||
|
||||
|
@ -1471,7 +1467,7 @@ public:
|
|||
bool substitute_null_with_insert_id;
|
||||
bool in_lock_tables;
|
||||
bool query_error, bootstrap, cleanup_done;
|
||||
|
||||
|
||||
/** is set if some thread specific value(s) used in a statement. */
|
||||
bool thread_specific_used;
|
||||
bool charset_is_system_charset, charset_is_collation_connection;
|
||||
|
@ -1503,10 +1499,10 @@ public:
|
|||
ulong ulong_value;
|
||||
ulonglong ulonglong_value;
|
||||
} sys_var_tmp;
|
||||
|
||||
|
||||
struct {
|
||||
/*
|
||||
If true, mysql_bin_log::write(Log_event) call will not write events to
|
||||
/*
|
||||
If true, mysql_bin_log::write(Log_event) call will not write events to
|
||||
binlog, and maintain 2 below variables instead (use
|
||||
mysql_bin_log.start_union_events to turn this on)
|
||||
*/
|
||||
|
@ -1517,13 +1513,13 @@ public:
|
|||
*/
|
||||
bool unioned_events;
|
||||
/*
|
||||
If TRUE, at least one mysql_bin_log::write(Log_event e), where
|
||||
e.cache_stmt == TRUE call has been made after last
|
||||
If TRUE, at least one mysql_bin_log::write(Log_event e), where
|
||||
e.cache_stmt == TRUE call has been made after last
|
||||
mysql_bin_log.start_union_events() call.
|
||||
*/
|
||||
bool unioned_events_trans;
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
'queries' (actually SP statements) that run under inside this binlog
|
||||
union have thd->query_id >= first_query_id.
|
||||
*/
|
||||
|
@ -1554,7 +1550,7 @@ public:
|
|||
killing mysqld) where it's vital to not allocate excessive and not used
|
||||
memory. Note, that we still don't return error from init_for_queries():
|
||||
if preallocation fails, we should notice that at the first call to
|
||||
alloc_root.
|
||||
alloc_root.
|
||||
*/
|
||||
void init_for_queries();
|
||||
void change_user(void);
|
||||
|
@ -1584,12 +1580,12 @@ public:
|
|||
The query can be logged row-based or statement-based
|
||||
*/
|
||||
ROW_QUERY_TYPE,
|
||||
|
||||
|
||||
/*
|
||||
The query has to be logged statement-based
|
||||
*/
|
||||
STMT_QUERY_TYPE,
|
||||
|
||||
|
||||
/*
|
||||
The query represents a change to a table in the "mysql"
|
||||
database and is currently mapped to ROW_QUERY_TYPE.
|
||||
|
@ -1597,7 +1593,7 @@ public:
|
|||
MYSQL_QUERY_TYPE,
|
||||
QUERY_TYPE_COUNT
|
||||
};
|
||||
|
||||
|
||||
int binlog_query(enum_binlog_query_type qtype,
|
||||
char const *query, ulong query_len,
|
||||
bool is_trans, bool suppress_use,
|
||||
|
@ -1819,7 +1815,7 @@ public:
|
|||
if ((temporary_tables == NULL) && (in_sub_stmt == 0) &&
|
||||
(system_thread != SYSTEM_THREAD_NDBCLUSTER_BINLOG))
|
||||
{
|
||||
current_stmt_binlog_row_based=
|
||||
current_stmt_binlog_row_based=
|
||||
test(variables.binlog_format == BINLOG_FORMAT_ROW);
|
||||
}
|
||||
}
|
||||
|
@ -2165,8 +2161,8 @@ public:
|
|||
|
||||
#include <myisam.h>
|
||||
|
||||
/*
|
||||
Param to create temporary tables when doing SELECT:s
|
||||
/*
|
||||
Param to create temporary tables when doing SELECT:s
|
||||
NOTE
|
||||
This structure is copied using memcpy as a part of JOIN.
|
||||
*/
|
||||
|
@ -2194,8 +2190,8 @@ public:
|
|||
uint quick_group;
|
||||
bool using_indirect_summary_function;
|
||||
/* If >0 convert all blob fields to varchar(convert_blob_length) */
|
||||
uint convert_blob_length;
|
||||
CHARSET_INFO *table_charset;
|
||||
uint convert_blob_length;
|
||||
CHARSET_INFO *table_charset;
|
||||
bool schema_table;
|
||||
/*
|
||||
True if GROUP BY and its aggregate functions are already computed
|
||||
|
@ -2329,7 +2325,7 @@ public:
|
|||
else
|
||||
db= db_arg;
|
||||
}
|
||||
inline Table_ident(LEX_STRING table_arg)
|
||||
inline Table_ident(LEX_STRING table_arg)
|
||||
:table(table_arg), sel((SELECT_LEX_UNIT *)0)
|
||||
{
|
||||
db.str=0;
|
||||
|
@ -2375,7 +2371,7 @@ class user_var_entry
|
|||
};
|
||||
|
||||
/*
|
||||
Unique -- class for unique (removing of duplicates).
|
||||
Unique -- class for unique (removing of duplicates).
|
||||
Puts all values to the TREE. If the tree becomes too big,
|
||||
it's dumped to the file. User can request sorted values, or
|
||||
just iterate through them. In the last case tree merging is performed in
|
||||
|
@ -2409,9 +2405,9 @@ public:
|
|||
}
|
||||
|
||||
bool get(TABLE *table);
|
||||
static double get_use_cost(uint *buffer, uint nkeys, uint key_size,
|
||||
static double get_use_cost(uint *buffer, uint nkeys, uint key_size,
|
||||
ulonglong max_in_memory_size);
|
||||
inline static int get_cost_calc_buff_size(ulong nkeys, uint key_size,
|
||||
inline static int get_cost_calc_buff_size(ulong nkeys, uint key_size,
|
||||
ulonglong max_in_memory_size)
|
||||
{
|
||||
register ulonglong max_elems_in_tree=
|
||||
|
@ -2466,7 +2462,7 @@ class multi_update :public select_result_interceptor
|
|||
uint table_count;
|
||||
/*
|
||||
List of tables referenced in the CHECK OPTION condition of
|
||||
the updated view excluding the updated table.
|
||||
the updated view excluding the updated table.
|
||||
*/
|
||||
List <TABLE> unupdated_check_opt_tables;
|
||||
Copy_field *copy_field;
|
||||
|
|
|
@ -2168,9 +2168,11 @@ static st_bookmark *register_var(const char *plugin, const char *name,
|
|||
size= sizeof(int);
|
||||
break;
|
||||
case PLUGIN_VAR_LONG:
|
||||
case PLUGIN_VAR_ENUM:
|
||||
size= sizeof(long);
|
||||
break;
|
||||
case PLUGIN_VAR_LONGLONG:
|
||||
case PLUGIN_VAR_SET:
|
||||
size= sizeof(ulonglong);
|
||||
break;
|
||||
case PLUGIN_VAR_STR:
|
||||
|
|
|
@ -78,6 +78,32 @@ TYPELIB maria_stats_method_typelib=
|
|||
maria_stats_method_names, NULL
|
||||
};
|
||||
|
||||
static MYSQL_SYSVAR_ULONG(block_size, maria_block_size,
|
||||
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
||||
"Block size to be used for MARIA index pages.", 0, 0,
|
||||
MARIA_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH,
|
||||
MARIA_MAX_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH);
|
||||
|
||||
static MYSQL_SYSVAR_ULONGLONG(max_sort_file_size,
|
||||
maria_max_temp_length, PLUGIN_VAR_RQCMDARG,
|
||||
"Don't use the fast sort index method to created index if the "
|
||||
"temporary file would get bigger than this.",
|
||||
0, 0, MAX_FILE_SIZE, 0, MAX_FILE_SIZE, 1024*1024);
|
||||
|
||||
static MYSQL_THDVAR_ULONG(repair_threads, PLUGIN_VAR_RQCMDARG,
|
||||
"Number of threads to use when repairing maria tables. The value of 1 "
|
||||
"disables parallel repair.",
|
||||
0, 0, 1, 1, ~0L, 1);
|
||||
|
||||
static MYSQL_THDVAR_ULONG(sort_buffer_size, PLUGIN_VAR_RQCMDARG,
|
||||
"The buffer that is allocated when sorting the index when doing a "
|
||||
"REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.",
|
||||
0, 0, 8192*1024, 4, ~0L, 1);
|
||||
|
||||
static MYSQL_THDVAR_ENUM(stats_method, PLUGIN_VAR_RQCMDARG,
|
||||
"Specifies how maria index statistics collection code should threat "
|
||||
"NULLs. Possible values of name are \"nulls_unequal\", \"nulls_equal\", "
|
||||
"and \"nulls_ignored\".", 0, 0, 0, &maria_stats_method_typelib);
|
||||
|
||||
/*****************************************************************************
|
||||
** MARIA tables
|
||||
|
@ -843,8 +869,7 @@ int ha_maria::check(THD * thd, HA_CHECK_OPT * check_opt)
|
|||
param.db_name= table->s->db.str;
|
||||
param.table_name= table->alias;
|
||||
param.testflag= check_opt->flags | T_CHECK | T_SILENT;
|
||||
param.stats_method= (enum_handler_stats_method) thd->variables.
|
||||
maria_stats_method;
|
||||
param.stats_method= (enum_handler_stats_method)THDVAR(thd,stats_method);
|
||||
|
||||
if (!(table->db_stat & HA_READ_ONLY))
|
||||
param.testflag |= T_STATISTICS;
|
||||
|
@ -935,8 +960,7 @@ int ha_maria::analyze(THD *thd, HA_CHECK_OPT * check_opt)
|
|||
param.testflag= (T_FAST | T_CHECK | T_SILENT | T_STATISTICS |
|
||||
T_DONT_CHECK_CHECKSUM);
|
||||
param.using_global_keycache= 1;
|
||||
param.stats_method= (enum_handler_stats_method) thd->variables.
|
||||
maria_stats_method;
|
||||
param.stats_method= (enum_handler_stats_method)THDVAR(thd,stats_method);
|
||||
|
||||
if (!(share->state.changed & STATE_NOT_ANALYZED))
|
||||
return HA_ADMIN_ALREADY_DONE;
|
||||
|
@ -1205,7 +1229,7 @@ int ha_maria::repair(THD *thd, HA_CHECK ¶m, bool do_optimize)
|
|||
param.testflag |= T_STATISTICS; // We get this for free
|
||||
statistics_done= 1;
|
||||
/* TODO: Remove BLOCK_RECORD test when parallel works with blocks */
|
||||
if (thd->variables.maria_repair_threads > 1 &&
|
||||
if (THDVAR(thd,repair_threads) > 1 &&
|
||||
file->s->data_file_type != BLOCK_RECORD)
|
||||
{
|
||||
char buf[40];
|
||||
|
@ -1521,9 +1545,8 @@ int ha_maria::enable_indexes(uint mode)
|
|||
param.testflag= (T_SILENT | T_REP_BY_SORT | T_QUICK |
|
||||
T_CREATE_MISSING_KEYS);
|
||||
param.myf_rw &= ~MY_WAIT_IF_FULL;
|
||||
param.sort_buffer_length= thd->variables.maria_sort_buff_size;
|
||||
param.stats_method=
|
||||
(enum_handler_stats_method) thd->variables.maria_stats_method;
|
||||
param.sort_buffer_length= THDVAR(thd,sort_buffer_size);
|
||||
param.stats_method= (enum_handler_stats_method)THDVAR(thd,stats_method);
|
||||
param.tmpdir= &mysql_tmpdir_list;
|
||||
if ((error= (repair(thd, param, 0) != HA_ADMIN_OK)) && param.retry_repair)
|
||||
{
|
||||
|
@ -2461,6 +2484,16 @@ my_bool ha_maria::register_query_cache_table(THD *thd, char *table_name,
|
|||
}
|
||||
#endif
|
||||
|
||||
static struct st_mysql_sys_var* system_variables[]= {
|
||||
MYSQL_SYSVAR(block_size),
|
||||
MYSQL_SYSVAR(max_sort_file_size),
|
||||
MYSQL_SYSVAR(repair_threads),
|
||||
MYSQL_SYSVAR(sort_buffer_size),
|
||||
MYSQL_SYSVAR(stats_method),
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct st_mysql_storage_engine maria_storage_engine=
|
||||
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
|
||||
|
@ -2473,11 +2506,11 @@ mysql_declare_plugin(maria)
|
|||
"MySQL AB",
|
||||
"Traditional transactional MySQL tables",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
ha_maria_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
ha_maria_init, /* Plugin Init */
|
||||
NULL, /* Plugin Deinit */
|
||||
0x0100, /* 1.0 */
|
||||
NULL, /* status variables */
|
||||
NULL, /* system variables */
|
||||
NULL /* config options */
|
||||
system_variables, /* system variables */
|
||||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
|
Loading…
Reference in a new issue