From 69cee79246feab6844f52a1e1244704d3741bde3 Mon Sep 17 00:00:00 2001 From: unknown <antony@ltantony.rdg.cyberkinetica.homeunix.net> Date: Wed, 17 Dec 2003 22:52:03 +0000 Subject: [PATCH] WorkLog #1323 (part 2) New Statement: SHOW [STORAGE] ENGINES New System Variable: storage_engine New mysqld Argument: --default-storage-engine= include/mysqld_error.h: We now call handlers STORAGE ENGINEs include/sql_state.h: We now call handlers STORAGE ENGINEs mysql-test/r/create.result: table_type system variable becomes storage_engine mysql-test/r/key_cache.result: table_type system variable becomes storage_engine mysql-test/r/variables.result: table_type system variable becomes storage_engine mysql-test/r/warnings.result: Test for deprecated table_type system variable mysql-test/t/create.test: table_type system variable becomes storage_engine mysql-test/t/key_cache.test: table_type system variable becomes storage_engine mysql-test/t/variables.test: table_type system variable becomes storage_engine mysql-test/t/warnings.test: Test for deprecated table_type system variable sql/handler.cc: change name for consistency sql/handler.h: change name for consistency sql/lex.h: New keywords - ENGINES and STORAGE sql/mysql_priv.h: change name for consistency sql/mysqld.cc: New command like argument for default-storage-engine sql/set_var.cc: New system variable for storage_engine sql/set_var.h: New system variable for storage_engine sql/sql_lex.h: Change for consistancy sql/sql_parse.cc: Change for consistancy sql/sql_show.cc: Change for consistancy sql/sql_table.cc: Change for consistancy sql/sql_yacc.yy: New keywords: STORAGE and ENGINES Change table_types to storage_engines New statement: SHOW [STORAGE] ENGINES --- include/mysqld_error.h | 2 +- include/sql_state.h | 2 +- mysql-test/r/create.result | 28 +++++++++++++------------- mysql-test/r/key_cache.result | 4 ++-- mysql-test/r/variables.result | 24 +++++++++++------------ mysql-test/r/warnings.result | 3 +++ mysql-test/t/create.test | 20 +++++++++---------- mysql-test/t/key_cache.test | 2 +- mysql-test/t/variables.test | 16 +++++++-------- mysql-test/t/warnings.test | 5 +++++ sql/handler.cc | 2 +- sql/handler.h | 2 +- sql/lex.h | 2 ++ sql/mysql_priv.h | 2 +- sql/mysqld.cc | 13 +++++++----- sql/set_var.cc | 37 ++++++++++++++++++++++++++++------- sql/set_var.h | 14 +++++++++++-- sql/sql_lex.h | 2 +- sql/sql_parse.cc | 4 ++-- sql/sql_show.cc | 6 +++--- sql/sql_table.cc | 4 ++-- sql/sql_yacc.yy | 29 ++++++++++++++++++++------- 22 files changed, 142 insertions(+), 81 deletions(-) diff --git a/include/mysqld_error.h b/include/mysqld_error.h index 40169cf73c..6a484d0419 100644 --- a/include/mysqld_error.h +++ b/include/mysqld_error.h @@ -301,6 +301,6 @@ #define ER_BAD_FT_COLUMN 1282 #define ER_UNKNOWN_KEY_CACHE 1283 #define ER_WARN_HOSTNAME_WONT_WORK 1284 -#define ER_UNKNOWN_TABLE_ENGINE 1285 +#define ER_UNKNOWN_STORAGE_ENGINE 1285 #define ER_WARN_DEPRECATED_SYNTAX 1286 #define ER_ERROR_MESSAGES 287 diff --git a/include/sql_state.h b/include/sql_state.h index ad62ddeb67..5c4b1c5074 100644 --- a/include/sql_state.h +++ b/include/sql_state.h @@ -161,4 +161,4 @@ ER_WARN_DATA_OUT_OF_RANGE, "01000", "", ER_WARN_DATA_TRUNCATED, "01000", "", ER_WRONG_NAME_FOR_INDEX, "42000", "", ER_WRONG_NAME_FOR_CATALOG, "42000", "", -ER_UNKNOWN_TABLE_ENGINE, "42000", "", +ER_UNKNOWN_STORAGE_ENGINE, "42000", "", diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 78433c1001..940c9e9a50 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -189,9 +189,9 @@ select * from t1; if('2002'='2002','Y','N') Y drop table if exists t1; -SET SESSION table_type="heap"; -SELECT @@table_type; -@@table_type +SET SESSION storage_engine="heap"; +SELECT @@storage_engine; +@@storage_engine HEAP CREATE TABLE t1 (a int not null); show create table t1; @@ -200,10 +200,10 @@ t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL default '0' ) ENGINE=HEAP DEFAULT CHARSET=latin1 drop table t1; -SET SESSION table_type="gemini"; +SET SESSION storage_engine="gemini"; ERROR 42000: Unknown table engine 'gemini' -SELECT @@table_type; -@@table_type +SELECT @@storage_engine; +@@storage_engine HEAP CREATE TABLE t1 (a int not null); show create table t1; @@ -211,7 +211,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL default '0' ) ENGINE=HEAP DEFAULT CHARSET=latin1 -SET SESSION table_type=default; +SET SESSION storage_engine=default; drop table t1; create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2)); insert into t1 values ("a", 1), ("b", 2); @@ -334,9 +334,9 @@ ERROR 42000: Incorrect table name 'a/a' drop table t1, t2, t3; drop table t3; drop database test_$1; -SET SESSION table_type="heap"; -SELECT @@table_type; -@@table_type +SET SESSION storage_engine="heap"; +SELECT @@storage_engine; +@@storage_engine HEAP CREATE TABLE t1 (a int not null); show create table t1; @@ -345,10 +345,10 @@ t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL default '0' ) ENGINE=HEAP DEFAULT CHARSET=latin1 drop table t1; -SET SESSION table_type="gemini"; +SET SESSION storage_engine="gemini"; ERROR 42000: Unknown table engine 'gemini' -SELECT @@table_type; -@@table_type +SELECT @@storage_engine; +@@storage_engine HEAP CREATE TABLE t1 (a int not null); show create table t1; @@ -356,7 +356,7 @@ Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL default '0' ) ENGINE=HEAP DEFAULT CHARSET=latin1 -SET SESSION table_type=default; +SET SESSION storage_engine=default; drop table t1; create table t1(a int,b int,c int unsigned,d date,e char,f datetime,g time,h blob); insert into t1(a)values(1); diff --git a/mysql-test/r/key_cache.result b/mysql-test/r/key_cache.result index 394099b363..af3cf95622 100644 --- a/mysql-test/r/key_cache.result +++ b/mysql-test/r/key_cache.result @@ -40,8 +40,8 @@ SELECT @@medium.key_buffer_size; SET @@global.key_buffer_size=@save_key_buffer; SELECT @@default.key_buffer_size; ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'default.key_buffer_size' at line 1 -SELECT @@skr.table_type="test"; -ERROR HY000: Variable 'table_type' is not a variable component (Can't be used as XXXX.variable_name) +SELECT @@skr.storage_engine="test"; +ERROR HY000: Variable 'storage_engine' is not a variable component (Can't be used as XXXX.variable_name) select @@keycache1.key_cache_block_size; @@keycache1.key_cache_block_size 0 diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 8face0ce2b..c0f1bc5df0 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -115,13 +115,13 @@ set global concurrent_insert=DEFAULT; show variables like 'concurrent_insert'; Variable_name Value concurrent_insert ON -set table_type=MYISAM, table_type="HEAP", global table_type="INNODB"; -show local variables like 'table_type'; +set storage_engine=MYISAM, storage_engine="HEAP", global storage_engine="INNODB"; +show local variables like 'storage_engine'; Variable_name Value -table_type HEAP -show global variables like 'table_type'; +storage_engine HEAP +show global variables like 'storage_engine'; Variable_name Value -table_type InnoDB +storage_engine InnoDB set GLOBAL query_cache_size=100000; set GLOBAL myisam_max_sort_file_size=2000000; show global variables like 'myisam_max_sort_file_size'; @@ -218,17 +218,17 @@ set unknown_variable=1; ERROR HY000: Unknown system variable 'unknown_variable' set max_join_size="hello"; ERROR 42000: Wrong argument type to variable 'max_join_size' -set table_type=UNKNOWN_TABLE_TYPE; +set storage_engine=UNKNOWN_TABLE_TYPE; ERROR 42000: Unknown table engine 'UNKNOWN_TABLE_TYPE' -set table_type=INNODB, big_tables=2; +set storage_engine=INNODB, big_tables=2; ERROR 42000: Variable 'big_tables' can't be set to the value of '2' -show local variables like 'table_type'; +show local variables like 'storage_engine'; Variable_name Value -table_type HEAP +storage_engine HEAP set SESSION query_cache_size=10000; ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -set GLOBAL table_type=DEFAULT; -ERROR 42000: Variable 'table_type' doesn't have a default value +set GLOBAL storage_engine=DEFAULT; +ERROR 42000: Variable 'storage_engine' doesn't have a default value set character_set_client=UNKNOWN_CHARACTER_SET; ERROR 42000: Unknown character set: 'UNKNOWN_CHARACTER_SET' set collation_connection=UNKNOWN_COLLATION; @@ -348,7 +348,7 @@ set sql_select_limit=1; set global sql_slave_skip_counter=100; set sql_warnings=1; set global table_cache=100; -set table_type=myisam; +set storage_engine=myisam; set global thread_cache_size=100; set timestamp=1, timestamp=default; set tmp_table_size=100; diff --git a/mysql-test/r/warnings.result b/mysql-test/r/warnings.result index 2769e284a9..39435d24ee 100644 --- a/mysql-test/r/warnings.result +++ b/mysql-test/r/warnings.result @@ -133,3 +133,6 @@ alter table t1 type=myisam; Warnings: Warning 1286 'TYPE=database_engine' is deprecated. Use 'ENGINE=database_engine' instead. drop table t1; +set table_type=MYISAM; +Warnings: +Warning 1286 'table_type' is deprecated. Use 'storage_engine' instead. diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 35b6070d10..64134fe999 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -152,17 +152,17 @@ drop table if exists t1; # # Test default table type # -SET SESSION table_type="heap"; -SELECT @@table_type; +SET SESSION storage_engine="heap"; +SELECT @@storage_engine; CREATE TABLE t1 (a int not null); show create table t1; drop table t1; --error 1285 -SET SESSION table_type="gemini"; -SELECT @@table_type; +SET SESSION storage_engine="gemini"; +SELECT @@storage_engine; CREATE TABLE t1 (a int not null); show create table t1; -SET SESSION table_type=default; +SET SESSION storage_engine=default; drop table t1; @@ -272,17 +272,17 @@ drop database test_$1; # # Test default table type # -SET SESSION table_type="heap"; -SELECT @@table_type; +SET SESSION storage_engine="heap"; +SELECT @@storage_engine; CREATE TABLE t1 (a int not null); show create table t1; drop table t1; --error 1285 -SET SESSION table_type="gemini"; -SELECT @@table_type; +SET SESSION storage_engine="gemini"; +SELECT @@storage_engine; CREATE TABLE t1 (a int not null); show create table t1; -SET SESSION table_type=default; +SET SESSION storage_engine=default; drop table t1; # diff --git a/mysql-test/t/key_cache.test b/mysql-test/t/key_cache.test index df16e11daa..b2bc57f380 100644 --- a/mysql-test/t/key_cache.test +++ b/mysql-test/t/key_cache.test @@ -42,7 +42,7 @@ SET @@global.key_buffer_size=@save_key_buffer; --error 1064 SELECT @@default.key_buffer_size; --error 1271 -SELECT @@skr.table_type="test"; +SELECT @@skr.storage_engine="test"; select @@keycache1.key_cache_block_size; select @@keycache1.key_buffer_size; diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index b5c402fe96..e2537532eb 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -70,9 +70,9 @@ show variables like 'concurrent_insert'; set global concurrent_insert=DEFAULT; show variables like 'concurrent_insert'; -set table_type=MYISAM, table_type="HEAP", global table_type="INNODB"; -show local variables like 'table_type'; -show global variables like 'table_type'; +set storage_engine=MYISAM, storage_engine="HEAP", global storage_engine="INNODB"; +show local variables like 'storage_engine'; +show global variables like 'storage_engine'; set GLOBAL query_cache_size=100000; set GLOBAL myisam_max_sort_file_size=2000000; @@ -125,14 +125,14 @@ set unknown_variable=1; --error 1232 set max_join_size="hello"; --error 1285 -set table_type=UNKNOWN_TABLE_TYPE; +set storage_engine=UNKNOWN_TABLE_TYPE; --error 1231 -set table_type=INNODB, big_tables=2; -show local variables like 'table_type'; +set storage_engine=INNODB, big_tables=2; +show local variables like 'storage_engine'; --error 1229 set SESSION query_cache_size=10000; --error 1230 -set GLOBAL table_type=DEFAULT; +set GLOBAL storage_engine=DEFAULT; --error 1115 set character_set_client=UNKNOWN_CHARACTER_SET; --error 1272 @@ -235,7 +235,7 @@ set sql_select_limit=1; set global sql_slave_skip_counter=100; set sql_warnings=1; set global table_cache=100; -set table_type=myisam; +set storage_engine=myisam; set global thread_cache_size=100; set timestamp=1, timestamp=default; set tmp_table_size=100; diff --git a/mysql-test/t/warnings.test b/mysql-test/t/warnings.test index a94380db22..0456ca8c1f 100644 --- a/mysql-test/t/warnings.test +++ b/mysql-test/t/warnings.test @@ -91,3 +91,8 @@ create table t1 (id int) type=heap; alter table t1 type=myisam; drop table t1; +# +# Test for deprecated table_type variable +# +set table_type=MYISAM; + diff --git a/sql/handler.cc b/sql/handler.cc index fe168d12fc..e9eecabaa8 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -104,7 +104,7 @@ enum db_type ha_resolve_by_name(const char *name, uint namelen) return DB_TYPE_UNKNOWN; } -const char *ha_get_table_type(enum db_type db_type) +const char *ha_get_storage_engine(enum db_type db_type) { show_table_type_st *types; for (types= sys_table_types; types->type; types++) diff --git a/sql/handler.h b/sql/handler.h index 2183b8fa99..3670069540 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -392,7 +392,7 @@ extern TYPELIB tx_isolation_typelib; #define ha_supports_generate(T) (T != DB_TYPE_INNODB) enum db_type ha_resolve_by_name(const char *name, uint namelen); -const char *ha_get_table_type(enum db_type db_type); +const char *ha_get_storage_engine(enum db_type db_type); handler *get_new_handler(TABLE *table, enum db_type db_type); my_off_t ha_get_ptr(byte *ptr, uint pack_length); void ha_store_ptr(byte *buff, uint pack_length, my_off_t pos); diff --git a/sql/lex.h b/sql/lex.h index a7c8735e19..6e69df6f96 100644 --- a/sql/lex.h +++ b/sql/lex.h @@ -146,6 +146,7 @@ static SYMBOL symbols[] = { { "ENCLOSED", SYM(ENCLOSED),0,0}, { "END", SYM(END),0,0}, { "ENGINE", SYM(ENGINE_SYM),0,0}, + { "ENGINES", SYM(ENGINES_SYM),0,0}, { "ENUM", SYM(ENUM),0,0}, { "ERRORS", SYM(ERRORS),0,0}, { "ESCAPE", SYM(ESCAPE_SYM),0,0}, @@ -379,6 +380,7 @@ static SYMBOL symbols[] = { { "STARTING", SYM(STARTING),0,0}, { "STATUS", SYM(STATUS_SYM),0,0}, { "STOP", SYM(STOP_SYM),0,0}, + { "STORAGE", SYM(STORAGE_SYM),0,0}, { "STRAIGHT_JOIN", SYM(STRAIGHT_JOIN),0,0}, { "STRING", SYM(STRING_SYM),0,0}, { "STRIPED", SYM(RAID_STRIPED_SYM),0,0}, diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 7164a4e496..7f003d0ce1 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -606,7 +606,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables, pthread_mutex_t *mutex); int mysqld_show_charsets(THD *thd,const char *wild); int mysqld_show_collations(THD *thd,const char *wild); -int mysqld_show_table_types(THD *thd); +int mysqld_show_storage_engines(THD *thd); int mysqld_show_privileges(THD *thd); int mysqld_show_column_types(THD *thd); int mysqld_help (THD *thd, const char *text); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 49f0b75354..f90e653b44 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3547,7 +3547,7 @@ enum options_mysqld OPT_SKIP_HOST_CACHE, OPT_SHORT_LOG_FORMAT, OPT_FLUSH, OPT_SAFE, OPT_BOOTSTRAP, OPT_SKIP_SHOW_DB, - OPT_TABLE_TYPE, OPT_INIT_FILE, + OPT_STORAGE_ENGINE, OPT_INIT_FILE, OPT_DELAY_KEY_WRITE_ALL, OPT_SLOW_QUERY_LOG, OPT_DELAY_KEY_WRITE, OPT_CHARSETS_DIR, OPT_BDB_HOME, OPT_BDB_LOG, @@ -3756,8 +3756,11 @@ Disable with --skip-bdb (will save memory).", {"default-collation", OPT_DEFAULT_COLLATION, "Set the default collation.", (gptr*) &default_collation_name, (gptr*) &default_collation_name, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 }, - {"default-table-type", OPT_TABLE_TYPE, - "Set the default table type for tables.", 0, 0, + {"default-storage-engine", OPT_STORAGE_ENGINE, + "Set the default storage engine (table tyoe) for tables.", 0, 0, + 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, + {"default-table-type", OPT_STORAGE_ENGINE, + "(deprecated) Use default-storage-engine.", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"delay-key-write", OPT_DELAY_KEY_WRITE, "Type of DELAY_KEY_WRITE.", 0,0,0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, @@ -4734,8 +4737,8 @@ struct show_var_st status_vars[]= { {"Com_show_slave_hosts", (char*) (com_stat+(uint) SQLCOM_SHOW_SLAVE_HOSTS),SHOW_LONG}, {"Com_show_slave_status", (char*) (com_stat+(uint) SQLCOM_SHOW_SLAVE_STAT),SHOW_LONG}, {"Com_show_status", (char*) (com_stat+(uint) SQLCOM_SHOW_STATUS),SHOW_LONG}, + {"Com_show_storage_engines", (char*) (com_stat+(uint) SQLCOM_SHOW_STORAGE_ENGINES),SHOW_LONG}, {"Com_show_tables", (char*) (com_stat+(uint) SQLCOM_SHOW_TABLES),SHOW_LONG}, - {"Com_show_table_types", (char*) (com_stat+(uint) SQLCOM_SHOW_TABLE_TYPES),SHOW_LONG}, {"Com_show_variables", (char*) (com_stat+(uint) SQLCOM_SHOW_VARIABLES),SHOW_LONG}, {"Com_show_warnings", (char*) (com_stat+(uint) SQLCOM_SHOW_WARNS),SHOW_LONG}, {"Com_slave_start", (char*) (com_stat+(uint) SQLCOM_SLAVE_START),SHOW_LONG}, @@ -5422,7 +5425,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case OPT_BOOTSTRAP: opt_noacl=opt_bootstrap=1; break; - case OPT_TABLE_TYPE: + case OPT_STORAGE_ENGINE: { if ((enum db_type)((global_system_variables.table_type= ha_resolve_by_name(argument, strlen(argument)))) == DB_TYPE_UNKNOWN) diff --git a/sql/set_var.cc b/sql/set_var.cc index 66f8c3327a..f9d5377b89 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -294,6 +294,8 @@ sys_var_thd_sql_mode sys_sql_mode("sql_mode", &SV::sql_mode); sys_var_thd_table_type sys_table_type("table_type", &SV::table_type); +sys_var_thd_storage_engine sys_storage_engine("storage_engine", + &SV::table_type); sys_var_long_ptr sys_table_cache_size("table_cache", &table_cache_size); sys_var_long_ptr sys_thread_cache_size("thread_cache_size", @@ -526,6 +528,7 @@ sys_var *sys_variables[]= &sys_sql_max_join_size, &sys_sql_mode, &sys_sql_warnings, + &sys_storage_engine, &sys_table_cache_size, &sys_table_type, &sys_thread_cache_size, @@ -731,6 +734,7 @@ struct show_var_st init_vars[]= { #endif {sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS}, {sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS}, + {sys_storage_engine.name, (char*) &sys_storage_engine, SHOW_SYS}, {"table_cache", (char*) &table_cache_size, SHOW_LONG}, {sys_table_type.name, (char*) &sys_table_type, SHOW_SYS}, {sys_thread_cache_size.name,(char*) &sys_thread_cache_size, SHOW_SYS}, @@ -2484,7 +2488,7 @@ int set_var_password::update(THD *thd) /* Based upon sys_var::check_enum() */ -bool sys_var_thd_table_type::check(THD *thd, set_var *var) +bool sys_var_thd_storage_engine::check(THD *thd, set_var *var) { char buff[80]; const char *value; @@ -2503,23 +2507,23 @@ bool sys_var_thd_table_type::check(THD *thd, set_var *var) } err: - my_error(ER_UNKNOWN_TABLE_ENGINE, MYF(0), value); + my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), value); return 1; } -byte *sys_var_thd_table_type::value_ptr(THD *thd, enum_var_type type, - LEX_STRING *base) +byte *sys_var_thd_storage_engine::value_ptr(THD *thd, enum_var_type type, + LEX_STRING *base) { ulong val; val= ((type == OPT_GLOBAL) ? global_system_variables.*offset : thd->variables.*offset); - const char *table_type= ha_get_table_type((enum db_type)val); + const char *table_type= ha_get_storage_engine((enum db_type)val); return (byte *) table_type; } -void sys_var_thd_table_type::set_default(THD *thd, enum_var_type type) +void sys_var_thd_storage_engine::set_default(THD *thd, enum_var_type type) { if (type == OPT_GLOBAL) global_system_variables.*offset= (ulong) DB_TYPE_MYISAM; @@ -2528,7 +2532,7 @@ void sys_var_thd_table_type::set_default(THD *thd, enum_var_type type) } -bool sys_var_thd_table_type::update(THD *thd, set_var *var) +bool sys_var_thd_storage_engine::update(THD *thd, set_var *var) { if (var->type == OPT_GLOBAL) global_system_variables.*offset= var->save_result.ulong_value; @@ -2537,6 +2541,25 @@ bool sys_var_thd_table_type::update(THD *thd, set_var *var) return 0; } +void sys_var_thd_table_type::warn_deprecated(THD *thd) +{ + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_WARN_DEPRECATED_SYNTAX, + ER(ER_WARN_DEPRECATED_SYNTAX), "table_type", "storage_engine"); +} + +void sys_var_thd_table_type::set_default(THD *thd, enum_var_type type) +{ + warn_deprecated(thd); + sys_var_thd_storage_engine::set_default(thd, type); +} + +bool sys_var_thd_table_type::update(THD *thd, set_var *var) +{ + warn_deprecated(thd); + return sys_var_thd_storage_engine::update(thd, var); +} + /**************************************************************************** Functions to handle sql_mode diff --git a/sql/set_var.h b/sql/set_var.h index fc7610ee50..85871c90eb 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -344,12 +344,12 @@ public: }; -class sys_var_thd_table_type :public sys_var_thd +class sys_var_thd_storage_engine :public sys_var_thd { protected: ulong SV::*offset; public: - sys_var_thd_table_type(const char *name_arg, ulong SV::*offset_arg) + sys_var_thd_storage_engine(const char *name_arg, ulong SV::*offset_arg) :sys_var_thd(name_arg), offset(offset_arg) {} bool check(THD *thd, set_var *var); @@ -363,6 +363,16 @@ SHOW_TYPE type() { return SHOW_CHAR; } byte *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base); }; +class sys_var_thd_table_type :public sys_var_thd_storage_engine +{ +public: + sys_var_thd_table_type(const char *name_arg, ulong SV::*offset_arg) + :sys_var_thd_storage_engine(name_arg, offset_arg) + {} + void warn_deprecated(THD *thd); + void set_default(THD *thd, enum_var_type type); + bool update(THD *thd, set_var *var); +}; class sys_var_thd_bit :public sys_var_thd { diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 15da6ca57a..a3403ff5ed 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -73,7 +73,7 @@ enum enum_sql_command { SQLCOM_SHOW_SLAVE_HOSTS, SQLCOM_DELETE_MULTI, SQLCOM_UPDATE_MULTI, SQLCOM_SHOW_BINLOG_EVENTS, SQLCOM_SHOW_NEW_MASTER, SQLCOM_DO, SQLCOM_SHOW_WARNS, SQLCOM_EMPTY_QUERY, SQLCOM_SHOW_ERRORS, - SQLCOM_SHOW_COLUMN_TYPES, SQLCOM_SHOW_TABLE_TYPES, SQLCOM_SHOW_PRIVILEGES, + SQLCOM_SHOW_COLUMN_TYPES, SQLCOM_SHOW_STORAGE_ENGINES, SQLCOM_SHOW_PRIVILEGES, SQLCOM_HELP, SQLCOM_DROP_USER, SQLCOM_REVOKE_ALL, SQLCOM_CHECKSUM, /* This should be the last !!! */ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 92a21b5982..1d49c2fa21 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2831,8 +2831,8 @@ mysql_execute_command(THD *thd) #endif ,lex->verbose); break; - case SQLCOM_SHOW_TABLE_TYPES: - res= mysqld_show_table_types(thd); + case SQLCOM_SHOW_STORAGE_ENGINES: + res= mysqld_show_storage_engines(thd); break; case SQLCOM_SHOW_PRIVILEGES: res= mysqld_show_privileges(thd); diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 781ee2e708..c3996f142a 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -173,11 +173,11 @@ int mysqld_show_tables(THD *thd,const char *db,const char *wild) ** List all table types supported ***************************************************************************/ -int mysqld_show_table_types(THD *thd) +int mysqld_show_storage_engines(THD *thd) { List<Item> field_list; Protocol *protocol= thd->protocol; - DBUG_ENTER("mysqld_show_table_types"); + DBUG_ENTER("mysqld_show_storage_engines"); field_list.push_back(new Item_empty_string("Type",10)); field_list.push_back(new Item_empty_string("Support",10)); @@ -187,7 +187,7 @@ int mysqld_show_table_types(THD *thd) DBUG_RETURN(1); const char *default_type_name= - ha_get_table_type((enum db_type)thd->variables.table_type); + ha_get_storage_engine((enum db_type)thd->variables.table_type); show_table_type_st *types; for (types= sys_table_types; types->type; types++) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 3a579986b6..a7a3e325bd 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -404,7 +404,7 @@ int mysql_create_table(THD *thd,const char *db, const char *table_name, push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_USING_OTHER_HANDLER, ER(ER_WARN_USING_OTHER_HANDLER), - ha_get_table_type(new_db_type), + ha_get_storage_engine(new_db_type), table_name); } db_options=create_info->table_options; @@ -2016,7 +2016,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_USING_OTHER_HANDLER, ER(ER_WARN_USING_OTHER_HANDLER), - ha_get_table_type(new_db_type), + ha_get_storage_engine(new_db_type), new_name); } if (create_info->row_type == ROW_TYPE_NOT_USED) diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 3e013d8999..6fb7173055 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -361,6 +361,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token SSL_SYM %token STARTING %token STATUS_SYM +%token STORAGE_SYM %token STRAIGHT_JOIN %token SUBJECT_SYM %token TABLES @@ -473,6 +474,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %token ELT_FUNC %token ENCODE_SYM %token ENGINE_SYM +%token ENGINES_SYM %token ENCRYPT %token EXPORT_SET %token EXTRACT_SYM @@ -654,7 +656,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); %type <date_time_type> date_time_type; %type <interval> interval -%type <db_type> table_types +%type <db_type> storage_engines %type <row_type> row_types @@ -1074,8 +1076,8 @@ create_table_options: | create_table_option ',' create_table_options; create_table_option: - ENGINE_SYM opt_equal table_types { Lex->create_info.db_type= $3; } - | TYPE_SYM opt_equal table_types { Lex->create_info.db_type= $3; WARN_DEPRECATED("TYPE=database_engine","ENGINE=database_engine"); } + ENGINE_SYM opt_equal storage_engines { Lex->create_info.db_type= $3; } + | TYPE_SYM opt_equal storage_engines { Lex->create_info.db_type= $3; WARN_DEPRECATED("TYPE=database_engine","ENGINE=database_engine"); } | MAX_ROWS opt_equal ulonglong_num { Lex->create_info.max_rows= $3; Lex->create_info.used_fields|= HA_CREATE_USED_MAX_ROWS;} | MIN_ROWS opt_equal ulonglong_num { Lex->create_info.min_rows= $3; Lex->create_info.used_fields|= HA_CREATE_USED_MIN_ROWS;} | AVG_ROW_LENGTH opt_equal ULONG_NUM { Lex->create_info.avg_row_length=$3; Lex->create_info.used_fields|= HA_CREATE_USED_AVG_ROW_LENGTH;} @@ -1128,12 +1130,12 @@ create_table_option: { Lex->create_info.data_file_name= $4.str; } | INDEX DIRECTORY_SYM opt_equal TEXT_STRING_sys { Lex->create_info.index_file_name= $4.str; }; -table_types: +storage_engines: ident_or_text { $$ = ha_resolve_by_name($1.str,$1.length); if ($$ == DB_TYPE_UNKNOWN) { - net_printf(YYTHD, ER_UNKNOWN_TABLE_ENGINE, $1.str); + net_printf(YYTHD, ER_UNKNOWN_STORAGE_ENGINE, $1.str); YYABORT; } }; @@ -3971,7 +3973,7 @@ show_param: lex->select_lex.db= $3; lex->select_lex.options= 0; } - | ENGINE_SYM table_types + | ENGINE_SYM storage_engines { Lex->create_info.db_type= $2; } show_engine_param | opt_full COLUMNS from_or_in table_ident opt_db wild @@ -4021,7 +4023,13 @@ show_param: | TABLE_SYM TYPES_SYM { LEX *lex=Lex; - lex->sql_command= SQLCOM_SHOW_TABLE_TYPES; + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; + WARN_DEPRECATED("SHOW TABLE TYPES", "SHOW [STORAGE] ENGINES"); + } + | opt_storage ENGINES_SYM + { + LEX *lex=Lex; + lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; } | PRIVILEGES { @@ -4112,6 +4120,10 @@ master_or_binary: MASTER_SYM | BINARY; +opt_storage: + /* empty */ + | STORAGE_SYM; + opt_db: /* empty */ { $$= 0; } | from_or_in ident { $$= $2.str; }; @@ -4664,6 +4676,7 @@ keyword: | END {} | ENUM {} | ENGINE_SYM {} + | ENGINES_SYM {} | ERRORS {} | ESCAPE_SYM {} | EVENTS_SYM {} @@ -4790,6 +4803,7 @@ keyword: | START_SYM {} | STATUS_SYM {} | STOP_SYM {} + | STORAGE_SYM {} | STRING_SYM {} | SUBDATE_SYM {} | SUBJECT_SYM {} @@ -4802,6 +4816,7 @@ keyword: | TIMESTAMP {} | TIME_SYM {} | TYPE_SYM {} + | TYPES_SYM {} | UDF_SYM {} | UNCOMMITTED_SYM {} | UNICODE_SYM {} -- 2.30.9