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 @@ ...@@ -319,5 +319,5 @@
#define ER_INVALID_CHARACTER_STRING 1300 #define ER_INVALID_CHARACTER_STRING 1300
#define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301 #define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301
#define ER_CONFLICTING_DECLARATIONS 1302 #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 #define ER_ERROR_MESSAGES 303
...@@ -162,4 +162,3 @@ ER_WARN_DATA_TRUNCATED, "01000", "", ...@@ -162,4 +162,3 @@ ER_WARN_DATA_TRUNCATED, "01000", "",
ER_WRONG_NAME_FOR_INDEX, "42000", "", ER_WRONG_NAME_FOR_INDEX, "42000", "",
ER_WRONG_NAME_FOR_CATALOG, "42000", "", ER_WRONG_NAME_FOR_CATALOG, "42000", "",
ER_UNKNOWN_STORAGE_ENGINE, "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"; ...@@ -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 id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const str str 11 const 1 1 SIMPLE t1 const str str 11 const 1
explain select * from t1 use key (str,str,foo) where str="foo"; 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"; 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; drop table t1;
explain select 1; explain select 1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
......
...@@ -191,7 +191,7 @@ cache index t1 in unknown_key_cache; ...@@ -191,7 +191,7 @@ cache index t1 in unknown_key_cache;
ERROR HY000: Unknown key cache 'unknown_key_cache' ERROR HY000: Unknown key cache 'unknown_key_cache'
cache index t1 key (unknown_key) in keycache1; cache index t1 key (unknown_key) in keycache1;
Table Op Msg_type Msg_text 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 test.t1 assign_to_keycache status Operation failed
select @@keycache2.key_buffer_size; select @@keycache2.key_buffer_size;
@@keycache2.key_buffer_size @@keycache2.key_buffer_size
......
...@@ -158,7 +158,7 @@ Key_reads 0 ...@@ -158,7 +158,7 @@ Key_reads 0
load index into cache t3 key (b), t2 key (c) ; load index into cache t3 key (b), t2 key (c) ;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t3 preload_keys error Table 'test.t3' doesn't exist 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 test.t2 preload_keys status Operation failed
show status like "key_read%"; show status like "key_read%";
Variable_name Value Variable_name Value
......
...@@ -143,9 +143,9 @@ explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle'; ...@@ -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 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 1 SIMPLE t2 ref fld3 fld3 30 const 1 Using where; Using index
explain select fld3 from t2 ignore index (fld3,not_used); 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); 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; select t2.fld3 from t2 where fld3 >= 'honeysuckle' and fld3 <= 'honoring' order by fld3;
fld3 fld3
honeysuckle honeysuckle
...@@ -2720,7 +2720,7 @@ EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx); ...@@ -2720,7 +2720,7 @@ EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); 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); 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; DROP TABLE t1;
...@@ -15,9 +15,9 @@ explain select * from t1 ignore key (str) where str="foo"; ...@@ -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"; explain select * from t1 use key (str,str) where str="foo";
#The following should give errors #The following should give errors
--error 1303 --error 1176
explain select * from t1 use key (str,str,foo) where str="foo"; 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"; explain select * from t1 ignore key (str,str,foo) where str="foo";
drop table t1; drop table t1;
......
...@@ -1295,9 +1295,9 @@ explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle'; ...@@ -1295,9 +1295,9 @@ explain select fld3 from t2 use index (fld1,fld3) where fld3 = 'honeysuckle';
# The next should give an error # The next should give an error
# #
-- error 1303 -- error 1176
explain select fld3 from t2 ignore index (fld3,not_used); explain select fld3 from t2 ignore index (fld3,not_used);
-- error 1303 -- error 1176
explain select fld3 from t2 use index (not_used); explain select fld3 from t2 use index (not_used);
# #
...@@ -2256,9 +2256,9 @@ CREATE TABLE t1 (a int, INDEX idx(a)); ...@@ -2256,9 +2256,9 @@ CREATE TABLE t1 (a int, INDEX idx(a));
INSERT INTO t1 VALUES (2), (3), (1); INSERT INTO t1 VALUES (2), (3), (1);
EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx); EXPLAIN SELECT * FROM t1 IGNORE INDEX (idx);
--error 1303 --error 1176
EXPLAIN SELECT * FROM t1 IGNORE INDEX (a); EXPLAIN SELECT * FROM t1 IGNORE INDEX (a);
--error 1303 --error 1176
EXPLAIN SELECT * FROM t1 FORCE INDEX (a); EXPLAIN SELECT * FROM t1 FORCE INDEX (a);
DROP TABLE t1; DROP TABLE t1;
......
...@@ -331,4 +331,3 @@ character-set=latin2 ...@@ -331,4 +331,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +322,3 @@ character-set=latin1 ...@@ -322,4 +322,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +331,3 @@ character-set=latin1 ...@@ -331,4 +331,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=latin1 ...@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +324,3 @@ character-set=latin7 ...@@ -324,4 +324,3 @@ character-set=latin7
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=latin1 ...@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -332,4 +332,3 @@ character-set=latin1 ...@@ -332,4 +332,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=greek ...@@ -319,4 +319,3 @@ character-set=greek
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +324,3 @@ character-set=latin2 ...@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=latin1 ...@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +323,3 @@ character-set=sjis ...@@ -323,4 +323,3 @@ character-set=sjis
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +323,3 @@ character-set=ujis ...@@ -323,4 +323,3 @@ character-set=ujis
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=euckr ...@@ -319,4 +319,3 @@ character-set=euckr
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +321,3 @@ character-set=latin1 ...@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +321,3 @@ character-set=latin1 ...@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +324,3 @@ character-set=latin2 ...@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +321,3 @@ character-set=latin1 ...@@ -321,4 +321,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +324,3 @@ character-set=latin2 ...@@ -324,4 +324,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +324,3 @@ character-set=koi8r ...@@ -324,4 +324,3 @@ character-set=koi8r
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -312,4 +312,3 @@ character-set=cp1250 ...@@ -312,4 +312,3 @@ character-set=cp1250
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -327,4 +327,3 @@ character-set=latin2 ...@@ -327,4 +327,3 @@ character-set=latin2
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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,4 +323,3 @@ character-set=latin1 ...@@ -323,4 +323,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -319,4 +319,3 @@ character-set=latin1 ...@@ -319,4 +319,3 @@ character-set=latin1
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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'",
...@@ -325,4 +325,3 @@ character-set=koi8u ...@@ -325,4 +325,3 @@ character-set=koi8u
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
"Result of %s() was larger than max_allowed_packet (%ld) - truncated" "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, ...@@ -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)) <= if ((pos= find_type(&table->keynames, name->ptr(), name->length(), 1)) <=
0) 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); table->real_name);
map->set_all(); map->set_all();
return 1; 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