Commit 1ff580fe authored by unknown's avatar unknown
Browse files

Fix for bug #6166: index prefix length of 0 not rejected

parent dc734355
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -305,3 +305,5 @@ check table t1;
Table	Op	Msg_type	Msg_text
test.t1	check	status	OK
drop table t1;
create table t1 (c char(10), index (c(0)));
ERROR HY000: Key part 'c' length cannot be 0
+11 −0
Original line number Diff line number Diff line
@@ -285,3 +285,14 @@ check table t1;

drop table t1;

#
# Bug 6166: index prefix length of 0 not rejected
#
# this test should fail in 5.0
# to fix it, remove #ifdef in 
# file sql_yacc.yy(key_part)
# create dedicated error code for this and
# and change my_printf_error() to my_error

--error 1105
create table t1 (c char(10), index (c(0)));
+13 −1
Original line number Diff line number Diff line
@@ -1817,7 +1817,19 @@ key_list:

key_part:
	ident			{ $$=new key_part_spec($1.str); }
	| ident '(' NUM ')'	{ $$=new key_part_spec($1.str,(uint) atoi($3.str)); };
	| ident '(' NUM ')'	
        {
          int key_part_len= atoi($3.str);
#ifdef MYSQL_VERSION_ID < 50000
          if (!key_part_len)
          {
            my_printf_error(ER_UNKNOWN_ERROR,
                            "Key part '%s' length cannot be 0",
                            MYF(0), $1.str);
          }
#endif
          $$=new key_part_spec($1.str,(uint) key_part_len);
        };

opt_ident:
	/* empty */	{ $$=(char*) 0; }	/* Defaultlength */