mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
MDEV-26242: Assertion `i >= 0' failed on setting default_tmp_storage_engine to 'DEFAULT' in 10.7
Locking / unlocking plugins is already handled by Sys_var_plugin::check method. No need to do that in the specialized checking code, use var->save_value instead to get the plugin handle.
This commit is contained in:
committed by
Vicențiu Ciorbaru
parent
d7af7bfc2b
commit
12eb8ad7b9
@@ -49,3 +49,54 @@ DROP TABLE t2;
|
|||||||
CREATE TEMPORARY TABLE t2 LIKE t1;
|
CREATE TEMPORARY TABLE t2 LIKE t1;
|
||||||
ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TEMPORARY'
|
ERROR HY000: Table storage engine 'ROCKSDB' does not support the create option 'TEMPORARY'
|
||||||
DROP TABLE t1;
|
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;
|
||||||
|
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
--source include/have_rocksdb.inc
|
--source include/have_rocksdb.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
--error ER_UNKNOWN_STORAGE_ENGINE
|
--error ER_UNKNOWN_STORAGE_ENGINE
|
||||||
SET default_tmp_storage_engine = engine_doesnt_exist;
|
SET default_tmp_storage_engine = engine_doesnt_exist;
|
||||||
--error ER_ILLEGAL_HA_CREATE_OPTION
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
@@ -50,3 +52,35 @@ DROP TABLE t2;
|
|||||||
CREATE TEMPORARY TABLE t2 LIKE t1;
|
CREATE TEMPORARY TABLE t2 LIKE t1;
|
||||||
|
|
||||||
DROP TABLE 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;
|
@@ -742,13 +742,9 @@ static Sys_var_charptr_fscs Sys_character_sets_dir(
|
|||||||
|
|
||||||
static bool check_engine_supports_temporary(sys_var *self, THD *thd, set_var *var)
|
static bool check_engine_supports_temporary(sys_var *self, THD *thd, set_var *var)
|
||||||
{
|
{
|
||||||
String str, *res;
|
plugin_ref plugin= var->save_result.plugin;
|
||||||
LEX_CSTRING name;
|
if (!plugin)
|
||||||
if (!var->value || var->value->is_null())
|
|
||||||
return false;
|
return false;
|
||||||
res= var->value->val_str(&str);
|
|
||||||
res->get_value(&name);
|
|
||||||
plugin_ref plugin= ha_resolve_by_name(thd, &name, true);
|
|
||||||
DBUG_ASSERT(plugin);
|
DBUG_ASSERT(plugin);
|
||||||
handlerton *hton= plugin_hton(plugin);
|
handlerton *hton= plugin_hton(plugin);
|
||||||
DBUG_ASSERT(hton);
|
DBUG_ASSERT(hton);
|
||||||
@@ -756,10 +752,8 @@ static bool check_engine_supports_temporary(sys_var *self, THD *thd, set_var *va
|
|||||||
{
|
{
|
||||||
my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0), hton_name(hton)->str,
|
my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0), hton_name(hton)->str,
|
||||||
"TEMPORARY");
|
"TEMPORARY");
|
||||||
plugin_unlock(thd, plugin);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
plugin_unlock(thd, plugin);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user