Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX
refers to a column name. Added a new error message ER_INDEX_DOES_NOT_EXIST.
This commit is contained in:
parent
6d285f8a29
commit
377b3e0306
@ -319,4 +319,5 @@
|
||||
#define ER_INVALID_CHARACTER_STRING 1300
|
||||
#define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301
|
||||
#define ER_CONFLICTING_DECLARATIONS 1302
|
||||
#define ER_INDEX_DOES_NOT_EXIST 1303
|
||||
#define ER_ERROR_MESSAGES 303
|
||||
|
@ -162,3 +162,4 @@ ER_WARN_DATA_TRUNCATED, "01000", "",
|
||||
ER_WRONG_NAME_FOR_INDEX, "42000", "",
|
||||
ER_WRONG_NAME_FOR_CATALOG, "42000", "",
|
||||
ER_UNKNOWN_STORAGE_ENGINE, "42000", "",
|
||||
ER_INDEX_DOES_NOT_EXIST, "42000", "",
|
||||
|
@ -24,9 +24,9 @@ explain select * from t1 use key (str,str) where str="foo";
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 const str str 11 const 1
|
||||
explain select * from t1 use key (str,str,foo) where str="foo";
|
||||
ERROR 42000: Key column 'foo' doesn't exist in table
|
||||
ERROR 42000: Index 'foo' is not defined for table 't1'
|
||||
explain select * from t1 ignore key (str,str,foo) where str="foo";
|
||||
ERROR 42000: Key column 'foo' doesn't exist in table
|
||||
ERROR 42000: Index 'foo' is not defined for table 't1'
|
||||
drop table t1;
|
||||
explain select 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
|
@ -191,7 +191,7 @@ cache index t1 in unknown_key_cache;
|
||||
ERROR HY000: Unknown key cache 'unknown_key_cache'
|
||||
cache index t1 key (unknown_key) in keycache1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 assign_to_keycache error Key column 'unknown_key' doesn't exist in table
|
||||
test.t1 assign_to_keycache error Index 'unknown_key' is not defined for table 't1'
|
||||
test.t1 assign_to_keycache status Operation failed
|
||||
select @@keycache2.key_buffer_size;
|
||||
@@keycache2.key_buffer_size
|
||||
|
@ -158,7 +158,7 @@ Key_reads 0
|
||||
load index into cache t3 key (b), t2 key (c) ;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t3 preload_keys error Table 'test.t3' doesn't exist
|
||||
test.t2 preload_keys error Key column 'c' doesn't exist in table
|
||||
test.t2 preload_keys error Index 'c' is not defined for table 't2'
|
||||
test.t2 preload_keys status Operation failed
|
||||
show status like "key_read%";
|
||||
Variable_name Value
|
||||
|
@ -143,9 +143,9 @@ explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ref fld3 fld3 30 const 1 Using where; Using index
|
||||
explain select fld3 from t2 ignore index (fld3,not_used);
|
||||
ERROR 42000: Key column 'not_used' doesn't exist in table
|
||||
ERROR 42000: Index 'not_used' is not defined for table 't2'
|
||||
explain select fld3 from t2 use index (not_used);
|
||||
ERROR 42000: Key column 'not_used' doesn't exist in table
|
||||
ERROR 42000: Index 'not_used' is not defined for table 't2'
|
||||
select t2.fld3 from t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
|
||||
fld3
|
||||
honeysuckle
|
||||
@ -2714,3 +2714,13 @@ select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 fro
|
||||
f1 f2
|
||||
1 1
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (a int, INDEX idx(a));
|
||||
INSERT INTO t1 VALUES (2), (3), (1);
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a);
|
||||
ERROR 42000: Index 'a' is not defined for table 't1'
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
|
||||
ERROR 42000: Index 'a' is not defined for table 't1'
|
||||
DROP TABLE t1;
|
||||
|
@ -15,9 +15,9 @@ explain select * from t1 ignore key (str) where str="foo";
|
||||
explain select * from t1 use key (str,str) where str="foo";
|
||||
|
||||
#The following should give errors
|
||||
--error 1072
|
||||
--error 1303
|
||||
explain select * from t1 use key (str,str,foo) where str="foo";
|
||||
--error 1072
|
||||
--error 1303
|
||||
explain select * from t1 ignore key (str,str,foo) where str="foo";
|
||||
drop table t1;
|
||||
|
||||
|
@ -1295,9 +1295,9 @@ explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle';
|
||||
# The next should give an error
|
||||
#
|
||||
|
||||
-- error 1072
|
||||
-- error 1303
|
||||
explain select fld3 from t2 ignore index (fld3,not_used);
|
||||
-- error 1072
|
||||
-- error 1303
|
||||
explain select fld3 from t2 use index (not_used);
|
||||
|
||||
#
|
||||
@ -2248,4 +2248,19 @@ insert into t2 values(1,1);
|
||||
select * from t1 where f1 in (select f3 from t2 where (f3,f4)= (select f3,f4 from t2));
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Bug #17873: confusing error message when IGNORE INDEX refers a column name
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, INDEX idx(a));
|
||||
INSERT INTO t1 VALUES (2), (3), (1);
|
||||
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
|
||||
--error 1303
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a);
|
||||
--error 1303
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -330,5 +330,5 @@ character-set=latin2
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -321,5 +321,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -330,5 +330,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -323,5 +323,5 @@ character-set=latin7
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -331,5 +331,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=greek
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -323,5 +323,5 @@ character-set=latin2
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -322,5 +322,5 @@ character-set=sjis
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -322,5 +322,5 @@ character-set=ujis
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=euckr
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -320,5 +320,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -320,5 +320,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -323,5 +323,5 @@ character-set=latin2
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -320,5 +320,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -323,5 +323,5 @@ character-set=latin2
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -323,5 +323,5 @@ character-set=koi8r
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -311,5 +311,5 @@ character-set=cp1250
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -326,5 +326,5 @@ character-set=latin2
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -322,5 +322,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -318,5 +318,5 @@ character-set=latin1
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -324,5 +324,5 @@ character-set=koi8u
|
||||
"Invalid TIMESTAMP value in column '%s' at row %ld",
|
||||
"Invalid %s character string: '%.64s'",
|
||||
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
|
||||
"Conflicting declarations: '%s%s' and '%s%s'"
|
||||
|
||||
"Conflicting declarations: '%s%s' and '%s%s'",
|
||||
"Index '%-.100s' is not defined for table '%-.100s'",
|
||||
|
@ -2633,7 +2633,7 @@ bool get_key_map_from_key_list(key_map *map, TABLE *table,
|
||||
if ((pos= find_type(&table->keynames, name->ptr(), name->length(), 1)) <=
|
||||
0)
|
||||
{
|
||||
my_error(ER_KEY_COLUMN_DOES_NOT_EXITS, MYF(0), name->c_ptr(),
|
||||
my_error(ER_INDEX_DOES_NOT_EXIST, MYF(0), name->c_ptr(),
|
||||
table->real_name);
|
||||
map->set_all();
|
||||
return 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user