summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/maria.h11
-rw-r--r--include/mysql/plugin.h4
-rw-r--r--mysql-test/suite/maria/r/compat_aliases.result58
-rw-r--r--mysql-test/suite/maria/suite.pm8
-rw-r--r--mysql-test/suite/maria/t/compat_aliases-master.opt1
-rw-r--r--mysql-test/suite/maria/t/compat_aliases.test57
-rw-r--r--storage/maria/Makefile.am4
-rw-r--r--storage/maria/compat_aliases.cc245
-rw-r--r--storage/maria/compat_aliases.h27
-rw-r--r--storage/maria/ha_maria.cc69
-rw-r--r--storage/maria/ha_maria.h6
-rw-r--r--storage/maria/ma_loghandler.h8
12 files changed, 443 insertions, 55 deletions
diff --git a/include/maria.h b/include/maria.h
index 106aa61ddbb..0e406d747be 100644
--- a/include/maria.h
+++ b/include/maria.h
@@ -21,12 +21,9 @@
#ifdef __cplusplus
extern "C" {
#endif
-#ifndef _my_base_h
#include <my_base.h>
-#endif
-#ifndef _m_ctype_h
+#include <my_sys.h>
#include <m_ctype.h>
-#endif
#include "../storage/maria/ma_pagecache.h"
#include "my_handler.h"
#include "ft_global.h"
@@ -334,6 +331,12 @@ extern int maria_begin(MARIA_HA *info);
extern void maria_disable_logging(MARIA_HA *info);
extern void maria_enable_logging(MARIA_HA *info);
+#define HA_RECOVER_NONE 0 /* No automatic recover */
+#define HA_RECOVER_DEFAULT 1 /* Automatic recover active */
+#define HA_RECOVER_BACKUP 2 /* Make a backupfile on recover */
+#define HA_RECOVER_FORCE 4 /* Recover even if we loose rows */
+#define HA_RECOVER_QUICK 8 /* Don't check rows in data file */
+
/* this is used to pass to mysql_mariachk_table */
#define MARIA_CHK_REPAIR 1 /* equivalent to mariachk -r */
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index ad3427a3ab5..8490d59643b 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -257,7 +257,7 @@ typedef void (*mysql_var_update_func)(MYSQL_THD thd,
#define DECLARE_MYSQL_SYSVAR_BASIC(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
type *value; \
- const type def_val; \
+ type def_val; \
} MYSQL_SYSVAR_NAME(name)
#define DECLARE_MYSQL_SYSVAR_SIMPLE(name, type) struct { \
@@ -279,7 +279,7 @@ typedef void (*mysql_var_update_func)(MYSQL_THD thd,
#define DECLARE_MYSQL_THDVAR_BASIC(name, type) struct { \
MYSQL_PLUGIN_VAR_HEADER; \
int offset; \
- const type def_val; \
+ type def_val; \
DECLARE_THDVAR_FUNC(type); \
} MYSQL_SYSVAR_NAME(name)
diff --git a/mysql-test/suite/maria/r/compat_aliases.result b/mysql-test/suite/maria/r/compat_aliases.result
new file mode 100644
index 00000000000..db33737ebbc
--- /dev/null
+++ b/mysql-test/suite/maria/r/compat_aliases.result
@@ -0,0 +1,58 @@
+select * from information_schema.plugins where plugin_name like '%aria';
+PLUGIN_NAME PLUGIN_VERSION PLUGIN_STATUS PLUGIN_TYPE PLUGIN_TYPE_VERSION PLUGIN_LIBRARY PLUGIN_LIBRARY_VERSION PLUGIN_AUTHOR PLUGIN_DESCRIPTION PLUGIN_LICENSE PLUGIN_MATURITY PLUGIN_AUTH_VERSION
+Maria 1.5 ACTIVE DAEMON 50202.0 NULL NULL Monty Program Ab Compatibility aliases for the Aria engine GPL Gamma 1.5
+Aria 1.5 ACTIVE STORAGE ENGINE 50202.0 NULL NULL Monty Program Ab Crash-safe tables with MyISAM heritage GPL Gamma 1.5
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_variables as maria_vars left join
+information_schema.session_variables as aria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_status as maria_vars left join
+information_schema.session_status as aria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_variables as aria_vars left join
+information_schema.session_variables as maria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+select maria_vars.variable_name, aria_vars.variable_name from
+information_schema.session_status as aria_vars left join
+information_schema.session_status as maria_vars
+on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+variable_name variable_name
+set @old_checkpoint_interval=@@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=10;
+select @@global.aria_checkpoint_interval;
+@@global.aria_checkpoint_interval
+10
+set global maria_checkpoint_interval=@old_checkpoint_interval;
+set @old_sort_buffer_size=@@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=1024;
+select @@global.maria_sort_buffer_size;
+@@global.maria_sort_buffer_size
+1024
+set global aria_sort_buffer_size=@old_sort_buffer_size;
+set @old_sort_buffer_size=@@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=2048;
+select @@session.maria_sort_buffer_size;
+@@session.maria_sort_buffer_size
+2048
+set session aria_sort_buffer_size=@old_sort_buffer_size;
+set @old_max_sort_file_size=@@global.maria_max_sort_file_size,
+@old_repair_threads=@@global.aria_repair_threads;
+set @@global.maria_max_sort_file_size=default, @@global.aria_repair_threads=default;
+select @@global.maria_max_sort_file_size, @@global.aria_repair_threads;
+@@global.maria_max_sort_file_size @@global.aria_repair_threads
+9223372036853727232 1
+set @@global.aria_max_sort_file_size=@old_max_sort_file_size,
+@@global.maria_repair_threads=@old_repair_threads;
diff --git a/mysql-test/suite/maria/suite.pm b/mysql-test/suite/maria/suite.pm
new file mode 100644
index 00000000000..e6efcdca829
--- /dev/null
+++ b/mysql-test/suite/maria/suite.pm
@@ -0,0 +1,8 @@
+package My::Suite::Maria;
+
+@ISA = qw(My::Suite);
+
+return "Need Aria engine" unless $::mysqld_variables{'aria'} eq "ON";
+
+bless { };
+
diff --git a/mysql-test/suite/maria/t/compat_aliases-master.opt b/mysql-test/suite/maria/t/compat_aliases-master.opt
new file mode 100644
index 00000000000..73f18586361
--- /dev/null
+++ b/mysql-test/suite/maria/t/compat_aliases-master.opt
@@ -0,0 +1 @@
+--maria-max-sort-file-size=100M --aria-repair-threads=10000
diff --git a/mysql-test/suite/maria/t/compat_aliases.test b/mysql-test/suite/maria/t/compat_aliases.test
new file mode 100644
index 00000000000..33ab4c55205
--- /dev/null
+++ b/mysql-test/suite/maria/t/compat_aliases.test
@@ -0,0 +1,57 @@
+#
+# test for maria* aliases (system variables, status variables,
+# command-line options). They should match aria* variables.
+#
+
+select * from information_schema.plugins where plugin_name like '%aria';
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_variables as maria_vars left join
+ information_schema.session_variables as aria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_status as maria_vars left join
+ information_schema.session_status as aria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where maria_vars.variable_name like 'maria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_variables as aria_vars left join
+ information_schema.session_variables as maria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+select maria_vars.variable_name, aria_vars.variable_name from
+ information_schema.session_status as aria_vars left join
+ information_schema.session_status as maria_vars
+ on (maria_vars.variable_name = concat('m', aria_vars.variable_name))
+ where aria_vars.variable_name like 'aria_%'
+ and not (maria_vars.variable_value <=> aria_vars.variable_value);
+
+set @old_checkpoint_interval=@@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=10;
+select @@global.aria_checkpoint_interval;
+set global maria_checkpoint_interval=@old_checkpoint_interval;
+
+set @old_sort_buffer_size=@@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=1024;
+select @@global.maria_sort_buffer_size;
+set global aria_sort_buffer_size=@old_sort_buffer_size;
+
+set @old_sort_buffer_size=@@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=2048;
+select @@session.maria_sort_buffer_size;
+set session aria_sort_buffer_size=@old_sort_buffer_size;
+
+set @old_max_sort_file_size=@@global.maria_max_sort_file_size,
+ @old_repair_threads=@@global.aria_repair_threads;
+set @@global.maria_max_sort_file_size=default, @@global.aria_repair_threads=default;
+select @@global.maria_max_sort_file_size, @@global.aria_repair_threads;
+set @@global.aria_max_sort_file_size=@old_max_sort_file_size,
+ @@global.maria_repair_threads=@old_repair_threads;
+
diff --git a/storage/maria/Makefile.am b/storage/maria/Makefile.am
index a1fe37fc396..a83063a0226 100644
--- a/storage/maria/Makefile.am
+++ b/storage/maria/Makefile.am
@@ -77,7 +77,7 @@ noinst_HEADERS = maria_def.h ma_rt_index.h ma_rt_key.h ma_rt_mbr.h \
ma_checkpoint.h ma_recovery.h ma_commit.h ma_state.h \
trnman_public.h ma_check_standalone.h \
ma_key_recover.h ma_recovery_util.h \
- ma_servicethread.h
+ ma_servicethread.h compat_aliases.h
ma_test1_DEPENDENCIES= $(LIBRARIES)
ma_test1_LDADD= @CLIENT_EXTRA_LDFLAGS@ libaria.a \
$(top_builddir)/storage/myisam/libmyisam.a \
@@ -140,7 +140,7 @@ libaria_a_SOURCES = ma_init.c ma_open.c ma_extra.c ma_info.c ma_rkey.c \
ma_pagecache.c ma_pagecaches.c \
ma_checkpoint.c ma_recovery.c ma_commit.c \
ma_pagecrc.c ma_recovery_util.c \
- ha_maria.cc ma_servicethread.c
+ ha_maria.cc compat_aliases.cc ma_servicethread.c
CLEANFILES = test?.MA? FT?.MA? isam.log ma_test_all ma_rt_test.MA? sp_test.MA? aria_log_control aria_log.0000*
SUFFIXES = .sh
diff --git a/storage/maria/compat_aliases.cc b/storage/maria/compat_aliases.cc
new file mode 100644
index 00000000000..2d3c67d69a7
--- /dev/null
+++ b/storage/maria/compat_aliases.cc
@@ -0,0 +1,245 @@
+/* Copyright (C) 2010 Monty Program Ab
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+/*
+ compatibility aliases for system and static variables
+*/
+#include <my_global.h>
+#include <maria.h>
+#include <mysql/plugin.h>
+#include "ma_loghandler.h"
+#include "compat_aliases.h"
+
+ulong block_size_alias;
+static MYSQL_SYSVAR_ULONG(block_size, block_size_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-block-size instead", 0, 0,
+ MARIA_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH,
+ MARIA_MAX_KEY_BLOCK_LENGTH, MARIA_MIN_KEY_BLOCK_LENGTH);
+
+ulong checkpoint_interval_alias;
+static MYSQL_SYSVAR_ULONG(checkpoint_interval, checkpoint_interval_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-checkpoint-interval instead",
+ NULL, NULL, 30, 0, UINT_MAX, 1);
+
+ulong force_start_after_recovery_failures_alias;
+static MYSQL_SYSVAR_ULONG(force_start_after_recovery_failures, force_start_after_recovery_failures_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-force-start-after-recovery-failures instead",
+ NULL, NULL, 0, 0, UINT_MAX8, 1);
+
+my_bool page_checksum_alias;
+static MYSQL_SYSVAR_BOOL(page_checksum, page_checksum_alias, 0,
+ "Deprecated, use --aria-page-checksum instead", 0, 0, 1);
+
+char *log_dir_path_alias;
+static MYSQL_SYSVAR_STR(log_dir_path, log_dir_path_alias,
+ PLUGIN_VAR_NOSYSVAR | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-log-dir-path instead",
+ NULL, NULL, mysql_real_data_home);
+
+ulong log_file_size_alias;
+static MYSQL_SYSVAR_ULONG(log_file_size, log_file_size_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-log-file-size instead",
+ NULL, NULL, TRANSLOG_FILE_SIZE,
+ TRANSLOG_MIN_FILE_SIZE, 0xffffffffL, TRANSLOG_PAGE_SIZE);
+
+ulong group_commit_alias;
+static MYSQL_SYSVAR_ENUM(group_commit, group_commit_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-group-commit instead",
+ NULL, NULL,
+ TRANSLOG_GCOMMIT_NONE, &maria_group_commit_typelib);
+
+ulong group_commit_interval_alias;
+static MYSQL_SYSVAR_ULONG(group_commit_interval, group_commit_interval_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-group-commit-interval instead",
+ NULL, NULL, 0, 0, UINT_MAX, 1);
+
+ulong log_purge_type_alias;
+static MYSQL_SYSVAR_ENUM(log_purge_type, log_purge_type_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-log-purge-type instead",
+ NULL, NULL, TRANSLOG_PURGE_IMMIDIATE,
+ &maria_translog_purge_type_typelib);
+
+ulonglong max_sort_file_size_alias;
+static MYSQL_SYSVAR_ULONGLONG(max_sort_file_size, max_sort_file_size_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-max-temp-length instead",
+ 0, 0, MAX_FILE_SIZE, 0, MAX_FILE_SIZE, 1024*1024);
+
+ulong pagecache_age_threshold_alias;
+static MYSQL_SYSVAR_ULONG(pagecache_age_threshold, pagecache_age_threshold_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-pagecache-age-threshold instead",
+ 0, 0, 300, 100, ~0L, 100);
+
+ulonglong pagecache_buffer_size_alias;
+static MYSQL_SYSVAR_ULONGLONG(pagecache_buffer_size, pagecache_buffer_size_alias,
+ PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
+ "Deprecated, use --aria-pagecache-buffer-size instead",
+ 0, 0, KEY_CACHE_SIZE, MALLOC_OVERHEAD, ~0UL, IO_SIZE);
+
+ulong pagecache_division_limit_alias;
+static MYSQL_SYSVAR_ULONG(pagecache_division_limit, pagecache_division_limit_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-pagecache-division-limit instead",
+ 0, 0, 100, 1, 100, 1);
+
+ulong recover_alias;
+static MYSQL_SYSVAR_ENUM(recover, recover_alias, PLUGIN_VAR_OPCMDARG,
+ "Deprecated, use --aria-recover instead",
+ NULL, NULL, HA_RECOVER_DEFAULT, &maria_recover_typelib);
+
+ulong repair_threads_alias;
+static MYSQL_THDVAR_ULONG(repair_threads, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-repair-threads instead",
+ 0, 0, 1, 1, ~0L, 1);
+
+ulong sort_buffer_size_alias;
+static MYSQL_THDVAR_ULONG(sort_buffer_size, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-sort-buffer-size instead",
+ 0, 0, 128L*1024L*1024L, 4, ~0L, 1);
+
+ulong stats_method_alias;
+static MYSQL_THDVAR_ENUM(stats_method, PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-stats-method instead",
+ 0, 0, 0, &maria_stats_method_typelib);
+
+ulong sync_log_dir_alias;
+static MYSQL_SYSVAR_ENUM(sync_log_dir, sync_log_dir_alias,
+ PLUGIN_VAR_RQCMDARG,
+ "Deprecated, use --aria-sync-log-dir instead",
+ NULL, NULL, TRANSLOG_SYNC_DIR_NEWFILE,
+ &maria_sync_log_dir_typelib);
+
+my_bool used_for_temp_tables_alias= 1;
+static MYSQL_SYSVAR_BOOL(used_for_temp_tables,
+ used_for_temp_tables_alias, PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT,
+ NULL, 0, 0, 1);
+
+static struct st_mysql_show_var status_variables_aliases[]= {
+ {"Maria", (char*) &status_variables, SHOW_ARRAY},
+ {NullS, NullS, SHOW_LONG}
+};
+
+/*
+ There is one problem with aliases for command-line options.
+ Plugin initialization works like this
+
+ for all plugins:
+ prepare command-line options
+ initialize command-line option variables to the default values
+ parse command line, assign values as necessary
+
+ for all plugins:
+ call the plugin initialization function
+
+ it means, we cannot have maria* and aria* command-line options to use
+ the same underlying variables - because after assigning maria* values,
+ MySQL will put there default values again preparing for parsing aria*
+ values. So, maria* values will be lost.
+
+ So, we create separate set of variables for maria* options,
+ and take both values into account in ha_maria_init().
+
+ When the command line was parsed, we patch maria* options
+ to use the same variables as aria* options so that
+ set @@maria_some_var would have the same value as @@aria_some_var
+ without forcing us to copy the values around all the time.
+*/
+
+static struct st_mysql_sys_var* system_variables_aliases[]= {
+ MYSQL_SYSVAR(block_size),
+ MYSQL_SYSVAR(checkpoint_interval),
+ MYSQL_SYSVAR(force_start_after_recovery_failures),
+ MYSQL_SYSVAR(group_commit),
+ MYSQL_SYSVAR(group_commit_interval),
+ MYSQL_SYSVAR(log_dir_path),
+ MYSQL_SYSVAR(log_file_size),
+ MYSQL_SYSVAR(log_purge_type),
+ MYSQL_SYSVAR(max_sort_file_size),
+ MYSQL_SYSVAR(page_checksum),
+ MYSQL_SYSVAR(pagecache_age_threshold),
+ MYSQL_SYSVAR(pagecache_buffer_size),
+ MYSQL_SYSVAR(pagecache_division_limit),
+ MYSQL_SYSVAR(recover),
+ MYSQL_SYSVAR(repair_threads),
+ MYSQL_SYSVAR(sort_buffer_size),
+ MYSQL_SYSVAR(stats_method),
+ MYSQL_SYSVAR(sync_log_dir),
+ MYSQL_SYSVAR(used_for_temp_tables),
+ NULL
+};
+
+#define COPY_SYSVAR(name) \
+ memcpy(&MYSQL_SYSVAR_NAME(name), system_variables[i++], \
+ sizeof(MYSQL_SYSVAR_NAME(name))); \
+ if (name ## _alias != MYSQL_SYSVAR_NAME(name).def_val && \
+ *MYSQL_SYSVAR_NAME(name).value == MYSQL_SYSVAR_NAME(name).def_val) \
+ *MYSQL_SYSVAR_NAME(name).value= name ## _alias;
+
+#define COPY_THDVAR(name) \
+ name ## _alias= THDVAR(0, name); \
+ memcpy(&MYSQL_SYSVAR_NAME(name), system_variables[i++], \
+ sizeof(MYSQL_SYSVAR_NAME(name))); \
+ if (name ## _alias != MYSQL_SYSVAR_NAME(name).def_val && \
+ THDVAR(0, name) == MYSQL_SYSVAR_NAME(name).def_val) \
+ THDVAR(0, name)= name ## _alias;
+
+void copy_variable_aliases()
+{
+ int i= 0;
+ COPY_SYSVAR(block_size);
+ COPY_SYSVAR(checkpoint_interval);
+ COPY_SYSVAR(force_start_after_recovery_failures);
+ COPY_SYSVAR(group_commit);
+ COPY_SYSVAR(group_commit_interval);
+ COPY_SYSVAR(log_dir_path);
+ COPY_SYSVAR(log_file_size);
+ COPY_SYSVAR(log_purge_type);
+ COPY_SYSVAR(max_sort_file_size);
+ COPY_SYSVAR(page_checksum);
+ COPY_SYSVAR(pagecache_age_threshold);
+ COPY_SYSVAR(pagecache_buffer_size);
+ COPY_SYSVAR(pagecache_division_limit);
+ COPY_SYSVAR(recover);
+ COPY_THDVAR(repair_threads);
+ COPY_THDVAR(sort_buffer_size);
+ COPY_THDVAR(stats_method);
+ COPY_SYSVAR(sync_log_dir);
+ COPY_SYSVAR(used_for_temp_tables);
+}
+
+struct st_maria_plugin compat_aliases= {
+ MYSQL_DAEMON_PLUGIN,
+ &maria_storage_engine,
+ "Maria",
+ "Monty Program Ab",
+ "Compatibility aliases for the Aria engine",
+ PLUGIN_LICENSE_GPL,
+ NULL,
+ NULL,
+ 0x0105,
+ status_variables_aliases,
+ system_variables_aliases,
+ "1.5",
+ MariaDB_PLUGIN_MATURITY_GAMMA
+};
+
diff --git a/storage/maria/compat_aliases.h b/storage/maria/compat_aliases.h
new file mode 100644
index 00000000000..46a4da74eec
--- /dev/null
+++ b/storage/maria/compat_aliases.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 2010 Monty Program Ab
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+extern struct st_maria_plugin compat_aliases;
+extern char mysql_real_data_home[FN_REFLEN];
+extern TYPELIB maria_recover_typelib;
+extern TYPELIB maria_stats_method_typelib;
+extern TYPELIB maria_translog_purge_type_typelib;
+extern TYPELIB maria_sync_log_dir_typelib;
+extern TYPELIB maria_group_commit_typelib;
+extern struct st_mysql_storage_engine maria_storage_engine;
+extern my_bool use_maria_for_temp_tables;
+extern struct st_mysql_sys_var* system_variables[];
+extern st_mysql_show_var status_variables[];
+void copy_variable_aliases();
diff --git a/storage/maria/ha_maria.cc b/storage/maria/ha_maria.cc
index 8dd6b33190e..0d42a693002 100644
--- a/storage/maria/ha_maria.cc
+++ b/storage/maria/ha_maria.cc
@@ -29,6 +29,7 @@
#include "ha_maria.h"
#include "trnman_public.h"
#include "trnman.h"
+#include "compat_aliases.h"
C_MODE_START
#include "maria_def.h"
@@ -202,7 +203,7 @@ static MYSQL_SYSVAR_ULONG(group_commit_interval, maria_group_commit_interval,
static MYSQL_SYSVAR_ENUM(log_purge_type, log_purge_type,
PLUGIN_VAR_RQCMDARG,
- "Specifies how aria transactional log will be purged. "
+ "Specifies how Aria transactional log will be purged. "
"Possible values of name are \"immediate\", \"external\" "
"and \"at_flush\"",
NULL, NULL, TRANSLOG_PURGE_IMMIDIATE,
@@ -212,7 +213,7 @@ 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);
+ 0, 0, MAX_FILE_SIZE & ~(1*MB-1), 0, MAX_FILE_SIZE, 1*MB);
static MYSQL_SYSVAR_ULONG(pagecache_age_threshold,
pagecache_age_threshold, PLUGIN_VAR_RQCMDARG,
@@ -227,7 +228,7 @@ static MYSQL_SYSVAR_ULONGLONG(pagecache_buffer_size, pagecache_buffer_size,
"The size of the buffer used for index blocks for Aria tables. "
"Increase this to get better index handling (for all reads and "
"multiple writes) to as much as you can afford.", 0, 0,
- KEY_CACHE_SIZE, MALLOC_OVERHEAD, ~(ulong) 0, IO_SIZE);
+ KEY_CACHE_SIZE, 0, ~(ulong) 0, 1);
static MYSQL_SYSVAR_ULONG(pagecache_division_limit, pagecache_division_limit,
PLUGIN_VAR_RQCMDARG,
@@ -262,10 +263,11 @@ static MYSQL_SYSVAR_ENUM(sync_log_dir, sync_log_dir, PLUGIN_VAR_RQCMDARG,
&maria_sync_log_dir_typelib);
#ifdef USE_MARIA_FOR_TMP_TABLES
-static my_bool use_maria_for_temp_tables= 1;
+#define USE_MARIA_FOR_TMP_TABLES_VAL 1
#else
-static my_bool use_maria_for_temp_tables= 0;
+#define USE_MARIA_FOR_TMP_TABLES_VAL 0
#endif
+my_bool use_maria_for_temp_tables= USE_MARIA_FOR_TMP_TABLES_VAL;
static MYSQL_SYSVAR_BOOL(used_for_temp_tables,
use_maria_for_temp_tables, PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT,
@@ -3272,6 +3274,7 @@ bool ha_maria::is_changed() const
static int ha_maria_init(void *p)
{
int res;
+ copy_variable_aliases();
const char *log_dir= maria_data_root;
maria_hton= (handlerton *)p;
maria_hton->state= SHOW_OPTION_YES;
@@ -3388,7 +3391,7 @@ my_bool ha_maria::register_query_cache_table(THD *thd, char *table_name,
}
#endif
-static struct st_mysql_sys_var* system_variables[]= {
+struct st_mysql_sys_var* system_variables[]= {
MYSQL_SYSVAR(block_size),
MYSQL_SYSVAR(checkpoint_interval),
MYSQL_SYSVAR(force_start_after_recovery_failures),
@@ -3524,38 +3527,28 @@ static void update_log_file_size(MYSQL_THD thd,
}
-static SHOW_VAR status_variables[]= {
- {"Aria_pagecache_blocks_not_flushed", (char*) &maria_pagecache_var.global_blocks_changed, SHOW_LONG_NOFLUSH},
- {"Aria_pagecache_blocks_unused", (char*) &maria_pagecache_var.blocks_unused, SHOW_LONG_NOFLUSH},
- {"Aria_pagecache_blocks_used", (char*) &maria_pagecache_var.blocks_used, SHOW_LONG_NOFLUSH},
- {"Aria_pagecache_read_requests", (char*) &maria_pagecache_var.global_cache_r_requests, SHOW_LONGLONG},
- {"Aria_pagecache_reads", (char*) &maria_pagecache_var.global_cache_read, SHOW_LONGLONG},
- {"Aria_pagecache_write_requests", (char*) &maria_pagecache_var.global_cache_w_requests, SHOW_LONGLONG},
- {"Aria_pagecache_writes", (char*) &maria_pagecache_var.global_cache_write, SHOW_LONGLONG},
- {"Aria_transaction_log_syncs", (char*) &translog_syncs, SHOW_LONGLONG},
+SHOW_VAR status_variables[]= {
+ {"pagecache_blocks_not_flushed", (char*) &maria_pagecache_var.global_blocks_changed, SHOW_LONG_NOFLUSH},
+ {"pagecache_blocks_unused", (char*) &maria_pagecache_var.blocks_unused, SHOW_LONG_NOFLUSH},
+ {"pagecache_blocks_used", (char*) &maria_pagecache_var.blocks_used, SHOW_LONG_NOFLUSH},
+ {"pagecache_read_requests", (char*) &maria_pagecache_var.global_cache_r_requests, SHOW_LONGLONG},
+ {"pagecache_reads", (char*) &maria_pagecache_var.global_cache_read, SHOW_LONGLONG},
+ {"pagecache_write_requests", (char*) &maria_pagecache_var.global_cache_w_requests, SHOW_LONGLONG},
+ {"pagecache_writes", (char*) &maria_pagecache_var.global_cache_write, SHOW_LONGLONG},
+ {"transaction_log_syncs", (char*) &translog_syncs, SHOW_LONGLONG},
+ {NullS, NullS, SHOW_LONG}
+};
+
+static struct st_mysql_show_var aria_status_variables[]= {
+ {"Aria", (char*) &status_variables, SHOW_ARRAY},
{NullS, NullS, SHOW_LONG}
};
struct st_mysql_storage_engine maria_storage_engine=
{ MYSQL_HANDLERTON_INTERFACE_VERSION };
-mysql_declare_plugin(aria)
-{
- MYSQL_STORAGE_ENGINE_PLUGIN,
- &maria_storage_engine,
- "Aria",
- "Monty Program Ab",
- "Crash-safe tables with MyISAM heritage",
- PLUGIN_LICENSE_GPL,
- ha_maria_init, /* Plugin Init */
- NULL, /* Plugin Deinit */
- 0x0105, /* 1.5 */
- status_variables, /* status variables */
- system_variables, /* system variables */
- NULL
-}
-mysql_declare_plugin_end;
maria_declare_plugin(aria)
+compat_aliases,
{
MYSQL_STORAGE_ENGINE_PLUGIN,
&maria_storage_engine,
@@ -3563,12 +3556,12 @@ maria_declare_plugin(aria)
"Monty Program Ab",
"Crash-safe tables with MyISAM heritage",
PLUGIN_LICENSE_GPL,
- ha_maria_init, /* Plugin Init */
- NULL, /* Plugin Deinit */
- 0x0105, /* 1.5 */
- status_variables, /* status variables */
- system_variables, /* system variables */
- "1.5", /* string version */
- MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
+ ha_maria_init, /* Plugin Init */
+ NULL, /* Plugin Deinit */
+ 0x0105, /* 1.5 */
+ aria_status_variables, /* status variables */
+ system_variables, /* system variables */
+ "1.5", /* string version */
+ MariaDB_PLUGIN_MATURITY_GAMMA /* maturity */
}
maria_declare_plugin_end;
diff --git a/storage/maria/ha_maria.h b/storage/maria/ha_maria.h
index 09e59435c2a..251e4069d59 100644
--- a/storage/maria/ha_maria.h
+++ b/storage/maria/ha_maria.h
@@ -22,12 +22,6 @@
#include <maria.h>
-#define HA_RECOVER_NONE 0 /* No automatic recover */
-#define HA_RECOVER_DEFAULT 1 /* Automatic recover active */
-#define HA_RECOVER_BACKUP 2 /* Make a backupfile on recover */
-#define HA_RECOVER_FORCE 4 /* Recover even if we loose rows */
-#define HA_RECOVER_QUICK 8 /* Don't check rows in data file */
-
extern ulong maria_sort_buffer_size;
extern TYPELIB maria_recover_typelib;
extern ulong maria_recover_options;
diff --git a/storage/maria/ma_loghandler.h b/storage/maria/ma_loghandler.h
index 7bb38e628da..7291c9811d7 100644
--- a/storage/maria/ma_loghandler.h
+++ b/storage/maria/ma_loghandler.h
@@ -16,12 +16,14 @@
#ifndef _ma_loghandler_h
#define _ma_loghandler_h
+#define MB (1024UL*1024)
+
/* transaction log default cache size (TODO: make it global variable) */
-#define TRANSLOG_PAGECACHE_SIZE (1024U*1024*2)
+#define TRANSLOG_PAGECACHE_SIZE (2*MB)
/* transaction log default file size */
-#define TRANSLOG_FILE_SIZE (1024U*1024*1024)
+#define TRANSLOG_FILE_SIZE (1024U*MB)
/* minimum possible transaction log size */
-#define TRANSLOG_MIN_FILE_SIZE (1024U*1024*8)
+#define TRANSLOG_MIN_FILE_SIZE (8*MB)
/* transaction log default flags (TODO: make it global variable) */
#define TRANSLOG_DEFAULT_FLAGS 0