Commit 6051e0f9 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX

refers to a column name.
parent cb4c6a0d
......@@ -319,5 +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
/* Attention: 1302 must be the last error code in 4.1 */
#define ER_ERROR_MESSAGES 303
......@@ -162,4 +162,3 @@ 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: Index 'foo' is not defined for table 't1'
ERROR HY000: Key 'foo' doesn't exist in table 't1'
explain select * from t1 ignore key (str,str,foo) where str="foo";
ERROR 42000: Index 'foo' is not defined for table 't1'
ERROR HY000: Key 'foo' doesn't exist in 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 Index 'unknown_key' is not defined for table 't1'
test.t1 assign_to_keycache error Key 'unknown_key' doesn't exist in 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 Index 'c' is not defined for table 't2'
test.t2 preload_keys error Key 'c' doesn't exist in 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: Index 'not_used' is not defined for table 't2'
ERROR HY000: Key 'not_used' doesn't exist in table 't2'
explain select fld3 from t2 use index (not_used);
ERROR 42000: Index 'not_used' is not defined for table 't2'
ERROR HY000: Key 'not_used' doesn't exist in table 't2'
select t2.fld3 from t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
fld3
honeysuckle
......@@ -2720,7 +2720,7 @@ 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'
ERROR HY000: Key 'a' doesn't exist in table 't1'
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
ERROR 42000: Index 'a' is not defined for table 't1'
ERROR HY000: Key 'a' doesn't exist in 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 1303
--error 1176
explain select * from t1 use key (str,str,foo) where str="foo";
--error 1303
--error 1176
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 1303
-- error 1176
explain select fld3 from t2 ignore index (fld3,not_used);
-- error 1303
-- error 1176
explain select fld3 from t2 use index (not_used);
#
......@@ -2256,9 +2256,9 @@ CREATE TABLE t1 (a int, INDEX idx(a));
INSERT INTO t1 VALUES (2), (3), (1);
EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
--error 1303
--error 1176
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a);
--error 1303
--error 1176
EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
DROP TABLE t1;
......
......@@ -331,4 +331,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -322,4 +322,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -331,4 +331,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -324,4 +324,3 @@ character-set=latin7
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -332,4 +332,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=greek
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -323,4 +323,3 @@ character-set=sjis
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -323,4 +323,3 @@ character-set=ujis
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=euckr
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -324,4 +324,3 @@ character-set=koi8r
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -312,4 +312,3 @@ character-set=cp1250
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -327,4 +327,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -323,4 +323,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"Conflicting declarations: '%s%s' and '%s%s'",
"Index '%-.100s' is not defined for table '%-.100s'",
......@@ -325,4 +325,3 @@ character-set=koi8u
"Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated"
"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_INDEX_DOES_NOT_EXIST, MYF(0), name->c_ptr(),
my_error(ER_KEY_DOES_NOT_EXITS, MYF(0), name->c_ptr(),
table->real_name);
map->set_all();
return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment