diff options
author | unknown <gluh@mysql.com/eagle.(none)> | 2007-04-03 16:13:27 +0500 |
---|---|---|
committer | unknown <gluh@mysql.com/eagle.(none)> | 2007-04-03 16:13:27 +0500 |
commit | fe074a726fae715912a94630ac5301c60e868e98 (patch) | |
tree | 43cf3af5e63ac68035fb4a0461b4e0e7da5d00bb /sql/sp_head.cc | |
parent | 6e5ca12b6a6f6404246f398456371a81a228070e (diff) | |
download | mariadb-git-fe074a726fae715912a94630ac5301c60e868e98.tar.gz |
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
client/mysqldump.c:
fixed typo
include/mysql_com.h:
added new constants SYSTEM_CHARSET_MBMAXLEN, NAME_CHAR_LEN, USERNAME_CHAR_LENGTH
increased NAME_LEN, USERNAME_LENGTH
mysql-test/r/create.result:
result fix
mysql-test/r/grant.result:
result fix
mysql-test/r/mysql.result:
result fix
mysql-test/r/sp.result:
result fix
mysql-test/t/create.test:
test case
mysql-test/t/grant.test:
test case
sql/events.cc:
NAME_LEN is replaced with NAME_CHAR_LEN
sql/item_strfunc.h:
fixed calculation of max_length
sql/mysql_priv.h:
check_string_length function is replaced with check_string_byte_length
added new function check_string_char_length
sql/sp.cc:
NAME_LEN is replaced with NAME_CHAR_LEN
sql/sp_head.cc:
NAME_LEN is replaced with NAME_CHAR_LEN
sql/sp_head.h:
changed parameter of 'check_routine_name' function
sql/sql_class.cc:
NAME_LEN is replaced with NAME_CHAR_LEN
sql/share/errmsg.txt:
increased argument lengths according to new constants
sql/sql_parse.cc:
removed unnecessary checks
added function 'check_string_char_length'
sql/sql_plugin.cc:
check that name is not longer than NAME_CHAR_LEN symbols
sql/sql_show.cc:
NAME_LEN is replaced with NAME_CHAR_LEN
sql/sql_table.cc:
check that key name is not longer than NAME_LEN symbols
sql/sql_udf.cc:
check that udf name is not longer than NAME_CHAR_LEN symbols
sql/sql_yacc.yy:
check that user name is not longer than USERNAME_CHAR_LENGTH symbols
sql/table.cc:
check that db or table or column name is not longer than NAME_LEN symbols
storage/innobase/handler/ha_innodb.cc:
removed unnecessary multiplication
tests/mysql_client_test.c:
NAME_LEN is replaced with NAME_CHAR_LEN
Diffstat (limited to 'sql/sp_head.cc')
-rw-r--r-- | sql/sp_head.cc | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/sql/sp_head.cc b/sql/sp_head.cc index f5e32847fb0..cb4a50eefe8 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -408,9 +408,22 @@ sp_name::init_qname(THD *thd) */ bool -check_routine_name(LEX_STRING ident) +check_routine_name(LEX_STRING *ident) { - return (!ident.str || !ident.str[0] || ident.str[ident.length-1] == ' '); + if (!ident || !ident->str || !ident->str[0] || + ident->str[ident->length-1] == ' ') + { + my_error(ER_SP_WRONG_NAME, MYF(0), ident->str); + return TRUE; + } + if (check_string_char_length(ident, "", NAME_CHAR_LEN, + system_charset_info, 1)) + { + my_error(ER_TOO_LONG_IDENT, MYF(0), ident->str); + return TRUE; + } + + return FALSE; } /* ------------------------------------------------------------------ */ @@ -2121,7 +2134,7 @@ sp_head::show_create_procedure(THD *thd) sys_var_thd_sql_mode::symbolic_mode_representation(thd, m_sql_mode, &sql_mode_len); - field_list.push_back(new Item_empty_string("Procedure", NAME_LEN)); + field_list.push_back(new Item_empty_string("Procedure", NAME_CHAR_LEN)); field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len)); // 1024 is for not to confuse old clients Item_empty_string *definition= @@ -2192,7 +2205,7 @@ sp_head::show_create_function(THD *thd) sys_var_thd_sql_mode::symbolic_mode_representation(thd, m_sql_mode, &sql_mode_len); - field_list.push_back(new Item_empty_string("Function",NAME_LEN)); + field_list.push_back(new Item_empty_string("Function",NAME_CHAR_LEN)); field_list.push_back(new Item_empty_string("sql_mode", sql_mode_len)); Item_empty_string *definition= new Item_empty_string("Create Function", max(buffer.length(),1024)); |