diff options
-rw-r--r-- | mysql-test/suite/sys_vars/r/default_tmp_storage_engine_rocksdb.result | 51 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/t/default_tmp_storage_engine_rocksdb.test | 34 | ||||
-rw-r--r-- | sql/sys_vars.cc | 2 |
3 files changed, 87 insertions, 0 deletions
diff --git a/mysql-test/suite/sys_vars/r/default_tmp_storage_engine_rocksdb.result b/mysql-test/suite/sys_vars/r/default_tmp_storage_engine_rocksdb.result index a93be903deb..9ec7b900ccf 100644 --- a/mysql-test/suite/sys_vars/r/default_tmp_storage_engine_rocksdb.result +++ b/mysql-test/suite/sys_vars/r/default_tmp_storage_engine_rocksdb.result @@ -49,3 +49,54 @@ DROP TABLE t2; CREATE TEMPORARY TABLE t2 LIKE t1; ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TEMPORARY' DROP TABLE t1; +# +# MDEV-26242: Assertion `i >= 0' failed on setting +# default_tmp_storage_engine to 'DEFAULT' in 10.7 +# +SHOW VARIABLES like '%storage_engine'; +Variable_name Value +default_storage_engine ROCKSDB +default_tmp_storage_engine Aria +enforce_storage_engine +storage_engine ROCKSDB +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; +@@GLOBAL.default_tmp_storage_engine @@GLOBAL.default_storage_engine @@GLOBAL.storage_engine @@SESSION.default_tmp_storage_engine @@SESSION.default_storage_engine @@SESSION.storage_engine +NULL MyISAM MyISAM Aria ROCKSDB ROCKSDB +SELECT @@GLOBAL.table_type; +ERROR HY000: Unknown system variable 'table_type' +SET default_storage_engine=DEFAULT; +SET default_tmp_storage_engine=innodb; +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; +@@GLOBAL.default_tmp_storage_engine @@GLOBAL.default_storage_engine @@GLOBAL.storage_engine @@SESSION.default_tmp_storage_engine @@SESSION.default_storage_engine @@SESSION.storage_engine +NULL MyISAM MyISAM InnoDB MyISAM MyISAM +CREATE TABLE t (t int); +CREATE TEMPORARY TABLE t1 (t int); +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `t` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TEMPORARY TABLE `t1` ( + `t` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1, t; +SET GLOBAL default_tmp_storage_engine='default'; +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; +@@GLOBAL.default_tmp_storage_engine @@GLOBAL.default_storage_engine @@GLOBAL.storage_engine @@SESSION.default_tmp_storage_engine @@SESSION.default_storage_engine @@SESSION.storage_engine +MyISAM MyISAM MyISAM InnoDB MyISAM MyISAM +CREATE TABLE t (t int); +CREATE TEMPORARY TABLE t1 (t int); +SHOW CREATE TABLE t; +Table Create Table +t CREATE TABLE `t` ( + `t` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TEMPORARY TABLE `t1` ( + `t` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 +DROP TABLE t1, t; +SET GLOBAL default_tmp_storage_engine=NULL; diff --git a/mysql-test/suite/sys_vars/t/default_tmp_storage_engine_rocksdb.test b/mysql-test/suite/sys_vars/t/default_tmp_storage_engine_rocksdb.test index a3436059e39..3454e5d6fc4 100644 --- a/mysql-test/suite/sys_vars/t/default_tmp_storage_engine_rocksdb.test +++ b/mysql-test/suite/sys_vars/t/default_tmp_storage_engine_rocksdb.test @@ -4,6 +4,8 @@ --source include/have_rocksdb.inc --source include/not_embedded.inc +--source include/have_innodb.inc + --error ER_UNKNOWN_STORAGE_ENGINE SET default_tmp_storage_engine = engine_doesnt_exist; --error ER_ILLEGAL_HA_CREATE_OPTION @@ -50,3 +52,35 @@ DROP TABLE t2; CREATE TEMPORARY TABLE t2 LIKE t1; DROP TABLE t1; + +--echo # +--echo # MDEV-26242: Assertion `i >= 0' failed on setting +--echo # default_tmp_storage_engine to 'DEFAULT' in 10.7 +--echo # + + +SHOW VARIABLES like '%storage_engine'; +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; +--error ER_UNKNOWN_SYSTEM_VARIABLE +SELECT @@GLOBAL.table_type; + +SET default_storage_engine=DEFAULT; +SET default_tmp_storage_engine=innodb; +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; + +CREATE TABLE t (t int); +CREATE TEMPORARY TABLE t1 (t int); +SHOW CREATE TABLE t; +SHOW CREATE TABLE t1; +DROP TABLE t1, t; + +SET GLOBAL default_tmp_storage_engine='default'; +SELECT @@GLOBAL.default_tmp_storage_engine, @@GLOBAL.default_storage_engine, @@GLOBAL.storage_engine, @@SESSION.default_tmp_storage_engine, @@SESSION.default_storage_engine, @@SESSION.storage_engine; + +CREATE TABLE t (t int); +CREATE TEMPORARY TABLE t1 (t int); +SHOW CREATE TABLE t; +SHOW CREATE TABLE t1; +DROP TABLE t1, t; + +SET GLOBAL default_tmp_storage_engine=NULL;
\ No newline at end of file diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 3ce01ebe3c2..ccac0344433 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -751,6 +751,8 @@ static bool check_engine_supports_temporary(sys_var *self, THD *thd, set_var *va res->get_value(&name); plugin_ref plugin= ha_resolve_by_name(thd, &name, true); DBUG_ASSERT(plugin); + if (thd->lex->plugins.elements == 0) + return 0; handlerton *hton= plugin_hton(plugin); DBUG_ASSERT(hton); if (ha_check_storage_engine_flag(hton, HTON_TEMPORARY_NOT_SUPPORTED)) |