summaryrefslogtreecommitdiff
path: root/sql/sp_head.cc
diff options
context:
space:
mode:
authorunknown <gluh@mysql.com/eagle.(none)>2007-04-03 16:13:27 +0500
committerunknown <gluh@mysql.com/eagle.(none)>2007-04-03 16:13:27 +0500
commitfe074a726fae715912a94630ac5301c60e868e98 (patch)
tree43cf3af5e63ac68035fb4a0461b4e0e7da5d00bb /sql/sp_head.cc
parent6e5ca12b6a6f6404246f398456371a81a228070e (diff)
downloadmariadb-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.cc21
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));