MDEV-4450 misleading error messages from init_from_sql_statement_string()
This commit is contained in:
parent
0973b7a8d2
commit
a2d795c185
@ -4336,8 +4336,13 @@ static my_bool discover_handlerton(THD *thd, plugin_ref plugin,
|
||||
{
|
||||
if (error)
|
||||
{
|
||||
DBUG_ASSERT(share->error); // MUST be always set for get_cached_table_share to work
|
||||
my_error(ER_GET_ERRNO, MYF(0), error, plugin_name(plugin)->str);
|
||||
DBUG_ASSERT(share->error); // get_cached_table_share needs that
|
||||
/*
|
||||
report an error, unless it is "generic" and a more
|
||||
specific one was already reported
|
||||
*/
|
||||
if (error != HA_ERR_GENERIC || !thd->is_error())
|
||||
my_error(ER_GET_ERRNO, MYF(0), error, plugin_name(plugin)->str);
|
||||
share->db_plugin= 0;
|
||||
}
|
||||
else
|
||||
|
16
sql/table.cc
16
sql/table.cc
@ -2085,16 +2085,10 @@ int TABLE_SHARE::init_from_sql_statement_string(THD *thd, bool write,
|
||||
|
||||
lex_start(thd);
|
||||
|
||||
if ((error= parse_sql(thd, & parser_state, NULL)))
|
||||
if ((error= parse_sql(thd, & parser_state, NULL) ||
|
||||
sql_unusable_for_discovery(thd, sql_copy)))
|
||||
goto ret;
|
||||
|
||||
if (sql_unusable_for_discovery(thd, sql_copy))
|
||||
{
|
||||
my_error(ER_SQL_DISCOVER_ERROR, MYF(0), plugin_name(db_plugin)->str,
|
||||
db.str, table_name.str, sql_copy);
|
||||
goto ret;
|
||||
}
|
||||
|
||||
thd->lex->create_info.db_type= plugin_hton(db_plugin);
|
||||
|
||||
if (tabledef_version.str)
|
||||
@ -2125,8 +2119,10 @@ ret:
|
||||
if (thd->is_error() || error)
|
||||
{
|
||||
thd->clear_error();
|
||||
my_error(ER_NO_SUCH_TABLE, MYF(0), db.str, table_name.str);
|
||||
DBUG_RETURN(HA_ERR_NOT_A_TABLE);
|
||||
my_error(ER_SQL_DISCOVER_ERROR, MYF(0),
|
||||
plugin_name(db_plugin)->str, db.str, table_name.str,
|
||||
sql_copy);
|
||||
DBUG_RETURN(HA_ERR_GENERIC);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
@ -11,92 +11,79 @@ set @@test_sql_discovery_statement='t1:foobar bwa-ha-ha';
|
||||
select * from t0;
|
||||
ERROR 42S02: Table 'test.t0' doesn't exist
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'foobar bwa-ha-ha'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'foobar bwa-ha-ha' at line 1
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'foobar bwa-ha-ha'
|
||||
set @@test_sql_discovery_statement='t1:select 1';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'select 1'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'select 1'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int primary key) partition by hash(id) partitions 2';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int primary key) partition by hash(id) partitions 2'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1290 The MariaDB server is running with the --skip-partition option so it cannot execute this statement
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int primary key) partition by hash(id) partitions 2'
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) union=(t3,t4)';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) union=(t3,t4)'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) union=(t3,t4)'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 like t2';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 like t2'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 like t2'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 select * from t2';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 select * from t2'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 select * from t2'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) index directory="/tmp"';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) index directory="/tmp"'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) index directory="/tmp"'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) data directory="/tmp"';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) data directory="/tmp"'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) data directory="/tmp"'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) engine=myisam';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) engine=myisam'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a int) engine=myisam'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create temporary table t1 (a int)';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create temporary table t1 (a int)'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create temporary table t1 (a int)'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table if not exists t1 (a int)';
|
||||
select * from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table if not exists t1 (a int)'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table if not exists t1 (a int)'
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
Error 1030 Got error 130 "Incorrect file format" from storage engine TEST_SQL_DISCOVERY
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a uint)';
|
||||
select * from t1;
|
||||
ERROR HY000: Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a uint)'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'uint)' at line 1
|
||||
Error 1939 Engine TEST_SQL_DISCOVERY failed to discover table `test`.`t1` with 'create table t1 (a uint)'
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int)';
|
||||
select * from t1;
|
||||
a
|
||||
@ -127,7 +114,7 @@ create table t1 (
|
||||
) comment="abc" default character set utf8 max_rows=100 min_rows=10 checksum=1';
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 13
|
||||
Handler_discover 14
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE t1 (
|
||||
@ -145,7 +132,7 @@ t1 CREATE TABLE t1 (
|
||||
) ENGINE=TEST_SQL_DISCOVERY DEFAULT CHARSET=utf8 MIN_ROWS=10 MAX_ROWS=100 CHECKSUM=1 COMMENT='abc'
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 14
|
||||
Handler_discover 15
|
||||
----
|
||||
t1.frm
|
||||
----
|
||||
@ -156,19 +143,19 @@ select * from t1;
|
||||
a b c d e f
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 14
|
||||
Handler_discover 15
|
||||
flush tables;
|
||||
select * from t1;
|
||||
a b c d e f
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 14
|
||||
Handler_discover 15
|
||||
drop table t1;
|
||||
set @@test_sql_discovery_write_frm=0;
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int)';
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 14
|
||||
Handler_discover 15
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE t1 (
|
||||
@ -176,7 +163,7 @@ t1 CREATE TABLE t1 (
|
||||
) ENGINE=TEST_SQL_DISCOVERY DEFAULT CHARSET=latin1
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 15
|
||||
Handler_discover 16
|
||||
----
|
||||
----
|
||||
show open tables from test;
|
||||
@ -186,14 +173,14 @@ select * from t1;
|
||||
a
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 15
|
||||
Handler_discover 16
|
||||
flush tables;
|
||||
select * from t1;
|
||||
a
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 16
|
||||
Handler_discover 17
|
||||
drop table t1;
|
||||
show status like 'handler_discover';
|
||||
Variable_name Value
|
||||
Handler_discover 16
|
||||
Handler_discover 17
|
||||
|
@ -13,7 +13,7 @@ select * from t1;
|
||||
set @@test_sql_discovery_statement='t1:foobar bwa-ha-ha';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
select * from t0;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
@ -22,52 +22,57 @@ show warnings;
|
||||
#
|
||||
|
||||
set @@test_sql_discovery_statement='t1:select 1';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int primary key) partition by hash(id) partitions 2';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) union=(t3,t4)';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 like t2';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 select * from t2';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) index directory="/tmp"';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) data directory="/tmp"';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a int) engine=myisam';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create temporary table t1 (a int)';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table if not exists t1 (a int)';
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
set @@test_sql_discovery_statement='t1:create table t1 (a uint)';
|
||||
--error ER_SQL_DISCOVER_ERROR
|
||||
select * from t1;
|
||||
show warnings;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user