diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result index 47c5dec3dd4..78948e47562 100644 --- a/mysql-test/r/warnings.result +++ b/mysql-test/r/warnings.result @@ -166,6 +166,20 @@ show variables like 'max_error_count'; Variable_name Value max_error_count 10 drop table t1; +create table t1 (id int) engine=merge; +Warnings: +Warning 1266 Using storage engine MyISAM for table 't1' +alter table t1 engine=merge; +Warnings: +Warning 1266 Using storage engine MyISAM for table 't1' +drop table t1; +create table t1 (id int) type=heap; +Warnings: +Warning 1287 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead +alter table t1 type=myisam; +Warnings: +Warning 1287 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead +drop table t1; set table_type=MYISAM; Warnings: Warning 1541 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead. diff --git a/mysql-test/t/warnings-master.opt b/mysql-test/t/warnings-master.opt index 3b8baeddb14..e924a22e2ce 100644 --- a/mysql-test/t/warnings-master.opt +++ b/mysql-test/t/warnings-master.opt @@ -1 +1 @@ ---skip-isam +--skip-isam --skip-merge diff --git a/mysql-test/t/warnings.test b/mysql-test/t/warnings.test index a1a38298345..c20763f203f 100644 --- a/mysql-test/t/warnings.test +++ b/mysql-test/t/warnings.test @@ -116,6 +116,9 @@ drop table t1; #create table t1 (id int) engine=isam; #alter table t1 engine=isam; #drop table t1; +create table t1 (id int) engine=merge; +alter table t1 engine=merge; +drop table t1; # # Test for deprecated table_type variable diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 0b3a76a71cf..a9ecbb23a27 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1669,6 +1669,10 @@ extern handlerton partition_hton; extern SHOW_COMP_OPTION have_partition_db; #endif +extern handlerton myisammrg_hton; +/* MRG_MYISAM handler is always built, but may be skipped */ +#define have_merge_db myisammrg_hton.state + extern handlerton myisam_hton; extern handlerton myisammrg_hton; extern handlerton heap_hton; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7561943d197..a8fcee4cce3 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -310,7 +310,7 @@ static bool lower_case_table_names_used= 0; static bool volatile select_thread_in_use, signal_thread_in_use; static bool volatile ready_to_exit; static my_bool opt_debugging= 0, opt_external_locking= 0, opt_console= 0; -static my_bool opt_bdb, opt_isam, opt_ndbcluster; +static my_bool opt_bdb, opt_isam, opt_ndbcluster, opt_merge; static my_bool opt_short_log_format= 0; static uint kill_cached_threads, wake_thread; static ulong killed_threads, thread_created; @@ -4838,7 +4838,8 @@ enum options_mysqld OPT_LOG_OUTPUT, OPT_PORT_OPEN_TIMEOUT, OPT_GENERAL_LOG, - OPT_SLOW_LOG + OPT_SLOW_LOG, + OPT_MERGE }; @@ -5346,6 +5347,9 @@ master-ssl", #endif /* HAVE_REPLICATION */ {"memlock", OPT_MEMLOCK, "Lock mysqld in memory.", (gptr*) &locked_in_memory, (gptr*) &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, + {"merge", OPT_MERGE, "Enable Merge storage engine. Disable with \ +--skip-merge.", + (gptr*) &opt_merge, (gptr*) &opt_merge, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0}, {"myisam-recover", OPT_MYISAM_RECOVER, "Syntax: myisam-recover[=option[,option...]], where option can be DEFAULT, BACKUP, FORCE or QUICK.", (gptr*) &myisam_recover_options_str, (gptr*) &myisam_recover_options_str, 0, @@ -7556,6 +7560,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), global_system_variables.tx_isolation= (type-1); break; } + case OPT_MERGE: + if (opt_merge) + have_merge_db= SHOW_OPTION_YES; + else + have_merge_db= SHOW_OPTION_DISABLED; #ifdef WITH_BERKELEY_STORAGE_ENGINE case OPT_BDB_NOSYNC: /* Deprecated option */ diff --git a/sql/set_var.cc b/sql/set_var.cc index 5c07ce166d7..75a419019b8 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -681,6 +681,7 @@ sys_var_have_variable sys_have_federated_db("have_federated_engine", &have_federated_db); sys_var_have_variable sys_have_geometry("have_geometry", &have_geometry); sys_var_have_variable sys_have_innodb("have_innodb", &have_innodb); +sys_var_have_variable sys_have_merge_db("have_merge", &have_merge_db); sys_var_have_variable sys_have_ndbcluster("have_ndbcluster", &have_ndbcluster); sys_var_have_variable sys_have_openssl("have_openssl", &have_openssl); sys_var_have_variable sys_have_partition_db("have_partitioning", @@ -821,6 +822,7 @@ SHOW_VAR init_vars[]= { {sys_have_federated_db.name,(char*) &have_federated_db, SHOW_HAVE}, {sys_have_geometry.name, (char*) &have_geometry, SHOW_HAVE}, {sys_have_innodb.name, (char*) &have_innodb, SHOW_HAVE}, + {sys_have_merge_db.name, (char*) &have_merge_db, SHOW_HAVE}, {sys_have_ndbcluster.name, (char*) &have_ndbcluster, SHOW_HAVE}, {sys_have_openssl.name, (char*) &have_openssl, SHOW_HAVE}, {sys_have_partition_db.name,(char*) &have_partition_db, SHOW_HAVE},