merge of bug#35765 into mysql-next-mr-bugfixing

This commit is contained in:
Mattias Jonsson 2009-11-24 12:08:04 +01:00
parent ca59582149
commit f52280cc42
8 changed files with 83 additions and 19 deletions

View File

@ -247,13 +247,10 @@ set global general_log='OFF';
set global slow_query_log='OFF'; set global slow_query_log='OFF';
set @save_storage_engine= @@session.storage_engine; set @save_storage_engine= @@session.storage_engine;
set storage_engine= MEMORY; set storage_engine= MEMORY;
alter table mysql.slow_log engine=ndb; alter table mysql.slow_log engine=NonExistentEngine;
ERROR HY000: This storage engine cannot be used for log tables" Warnings:
alter table mysql.slow_log engine=innodb; Warning 1286 Unknown table engine 'NonExistentEngine'
ERROR HY000: This storage engine cannot be used for log tables" alter table mysql.slow_log engine=memory;
alter table mysql.slow_log engine=archive;
ERROR HY000: This storage engine cannot be used for log tables"
alter table mysql.slow_log engine=blackhole;
ERROR HY000: This storage engine cannot be used for log tables" ERROR HY000: This storage engine cannot be used for log tables"
set storage_engine= @save_storage_engine; set storage_engine= @save_storage_engine;
drop table mysql.slow_log; drop table mysql.slow_log;

View File

@ -81,6 +81,42 @@ INSERT INTO t1 VALUES (NULL);
SELECT * FROM t1 WHERE pk < 0 ORDER BY pk; SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
pk pk
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a INT)
ENGINE=NonExistentEngine;
Warnings:
Warning 1286 Unknown table engine 'NonExistentEngine'
Warning 1266 Using storage engine MyISAM for table 't1'
DROP TABLE t1;
CREATE TABLE t1 (a INT)
ENGINE=NonExistentEngine
PARTITION BY HASH (a);
Warnings:
Warning 1286 Unknown table engine 'NonExistentEngine'
Warning 1266 Using storage engine MyISAM for table 't1'
DROP TABLE t1;
CREATE TABLE t1 (a INT)
ENGINE=Memory;
ALTER TABLE t1 ENGINE=NonExistentEngine;
Warnings:
Warning 1286 Unknown table engine 'NonExistentEngine'
ALTER TABLE t1
PARTITION BY HASH (a)
(PARTITION p0 ENGINE=Memory,
PARTITION p1 ENGINE=NonExistentEngine);
Warnings:
Warning 1286 Unknown table engine 'NonExistentEngine'
ALTER TABLE t1 ENGINE=NonExistentEngine;
Warnings:
Warning 1286 Unknown table engine 'NonExistentEngine'
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1
/*!50100 PARTITION BY HASH (a)
(PARTITION p0 ENGINE = MEMORY,
PARTITION p1 ENGINE = MEMORY) */
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL, KEY(a)) CREATE TABLE t1 (a INT NOT NULL, KEY(a))
PARTITION BY RANGE(a) PARTITION BY RANGE(a)
(PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE); (PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE);

View File

@ -210,7 +210,8 @@ engine = innodb
partition by list (a) partition by list (a)
(partition p0 values in (0)); (partition p0 values in (0));
alter table t1 engine = x; alter table t1 engine = x;
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL Warnings:
Warning 1286 Unknown table engine 'x'
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -258,14 +258,21 @@ set global slow_query_log='OFF';
# check that alter table doesn't work for other engines # check that alter table doesn't work for other engines
set @save_storage_engine= @@session.storage_engine; set @save_storage_engine= @@session.storage_engine;
set storage_engine= MEMORY; set storage_engine= MEMORY;
# After fixing bug#35765 the error behaivor changed:
# If compiled in/enabled ER_UNSUPORTED_LOG_ENGINE
# If not (i.e. not existant) it will show a warning
# and use the current one.
alter table mysql.slow_log engine=NonExistentEngine;
--error ER_UNSUPORTED_LOG_ENGINE --error ER_UNSUPORTED_LOG_ENGINE
alter table mysql.slow_log engine=ndb; alter table mysql.slow_log engine=memory;
--error ER_UNSUPORTED_LOG_ENGINE #--error ER_UNSUPORTED_LOG_ENGINE
alter table mysql.slow_log engine=innodb; #alter table mysql.slow_log engine=ndb;
--error ER_UNSUPORTED_LOG_ENGINE #--error ER_UNSUPORTED_LOG_ENGINE
alter table mysql.slow_log engine=archive; #alter table mysql.slow_log engine=innodb;
--error ER_UNSUPORTED_LOG_ENGINE #--error ER_UNSUPORTED_LOG_ENGINE
alter table mysql.slow_log engine=blackhole; #alter table mysql.slow_log engine=archive;
#--error ER_UNSUPORTED_LOG_ENGINE
#alter table mysql.slow_log engine=blackhole;
set storage_engine= @save_storage_engine; set storage_engine= @save_storage_engine;
drop table mysql.slow_log; drop table mysql.slow_log;

View File

@ -97,6 +97,29 @@ INSERT INTO t1 VALUES (NULL);
SELECT * FROM t1 WHERE pk < 0 ORDER BY pk; SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#35765: ALTER TABLE produces wrong error when non-existent storage engine
# used
CREATE TABLE t1 (a INT)
ENGINE=NonExistentEngine;
DROP TABLE t1;
CREATE TABLE t1 (a INT)
ENGINE=NonExistentEngine
PARTITION BY HASH (a);
DROP TABLE t1;
CREATE TABLE t1 (a INT)
ENGINE=Memory;
ALTER TABLE t1 ENGINE=NonExistentEngine;
# OK to only specify one partitions engine, since it is already assigned at
# table level (after create, it is specified on all levels and all parts).
ALTER TABLE t1
PARTITION BY HASH (a)
(PARTITION p0 ENGINE=Memory,
PARTITION p1 ENGINE=NonExistentEngine);
ALTER TABLE t1 ENGINE=NonExistentEngine;
SHOW CREATE TABLE t1;
DROP TABLE t1;
# #
# Bug#40494: Crash MYSQL server crashes on range access with partitioning # Bug#40494: Crash MYSQL server crashes on range access with partitioning
# and order by # and order by

View File

@ -250,7 +250,6 @@ engine = innodb
partition by list (a) partition by list (a)
(partition p0 values in (0)); (partition p0 values in (0));
-- error ER_MIX_HANDLER_ERROR
alter table t1 engine = x; alter table t1 engine = x;
show create table t1; show create table t1;
drop table t1; drop table t1;

View File

@ -411,8 +411,8 @@ bool net_send_error_packet(THD *thd, uint sql_errno, const char *err,
thd->variables.character_set_results, thd->variables.character_set_results,
err, strlen(err), err, strlen(err),
system_charset_info, &error); system_charset_info, &error);
length= (uint) (strmake((char*) pos, (char*)converted_err, MYSQL_ERRMSG_SIZE) - length= (uint) (strmake((char*) pos, (char*)converted_err,
(char*) buff); MYSQL_ERRMSG_SIZE - 1) - (char*) buff);
err= (char*) buff; err= (char*) buff;
DBUG_RETURN(net_write_command(net,(uchar) 255, (uchar*) "", 0, (uchar*) err, DBUG_RETURN(net_write_command(net,(uchar) 255, (uchar*) "", 0, (uchar*) err,
length)); length));

View File

@ -4820,6 +4820,7 @@ create_table_option:
ENGINE_SYM opt_equal storage_engines ENGINE_SYM opt_equal storage_engines
{ {
Lex->create_info.db_type= $3; Lex->create_info.db_type= $3;
if ($3)
Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE;
} }
| TYPE_SYM opt_equal storage_engines | TYPE_SYM opt_equal storage_engines