Loading mysql-test/r/key.result +2 −0 Original line number Diff line number Diff line Loading @@ -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 mysql-test/t/key.test +11 −0 Original line number Diff line number Diff line Loading @@ -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))); sql/sql_yacc.yy +13 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading Loading
mysql-test/r/key.result +2 −0 Original line number Diff line number Diff line Loading @@ -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
mysql-test/t/key.test +11 −0 Original line number Diff line number Diff line Loading @@ -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)));
sql/sql_yacc.yy +13 −1 Original line number Diff line number Diff line Loading @@ -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 */ Loading