summaryrefslogtreecommitdiff
path: root/sql/table.cc
diff options
context:
space:
mode:
authorunknown <jani@ua141d10.elisa.omakaista.fi>2006-11-16 14:38:45 +0200
committerunknown <jani@ua141d10.elisa.omakaista.fi>2006-11-16 14:38:45 +0200
commit0b3eee81df5a6311c34d5e1010b3fc3f2d8a7899 (patch)
treefbfd8ce3fe966d9fea0eb430ffc945cd4d6c9212 /sql/table.cc
parenta0672f0674a03125498b345cb8e562982ff1e258 (diff)
parent990b106b634aa5970ad58f7d4a52776763c598de (diff)
downloadmariadb-git-0b3eee81df5a6311c34d5e1010b3fc3f2d8a7899.tar.gz
Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1-marvel
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-lex-string BUILD/SETUP.sh: Auto merged mysql-test/r/create.result: Auto merged mysql-test/t/create.test: Auto merged sql/mysql_priv.h: Auto merged sql/sql_class.h: Auto merged sql/sql_db.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged tests/mysql_client_test.c: Auto merged sql/item_timefunc.cc: Manual merge. sql/mysqld.cc: Manual merge. sql/mysqld.cc.rej: manual merge
Diffstat (limited to 'sql/table.cc')
-rw-r--r--sql/table.cc42
1 files changed, 21 insertions, 21 deletions
diff --git a/sql/table.cc b/sql/table.cc
index 7f80b95c954..e09b31bd8ad 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -2258,7 +2258,7 @@ char *get_field(MEM_ROOT *mem, Field *field)
SYNPOSIS
check_db_name()
- name Name of database
+ org_name Name of database and length
NOTES
If lower_case_table_names is set then database is converted to lower case
@@ -2268,35 +2268,35 @@ char *get_field(MEM_ROOT *mem, Field *field)
1 error
*/
-bool check_db_name(char *name)
+bool check_db_name(LEX_STRING *org_name)
{
- char *start= name;
- /* Used to catch empty names and names with end space */
- bool last_char_is_space= TRUE;
+ char *name= org_name->str;
+
+ if (!org_name->length || org_name->length > NAME_LEN)
+ return 1;
if (lower_case_table_names && name != any_db)
my_casedn_str(files_charset_info, name);
- while (*name)
- {
#if defined(USE_MB) && defined(USE_MB_IDENT)
- last_char_is_space= my_isspace(system_charset_info, *name);
- if (use_mb(system_charset_info))
+ if (use_mb(system_charset_info))
+ {
+ bool last_char_is_space= TRUE;
+ char *end= name + org_name->length;
+ while (name < end)
{
- int len=my_ismbchar(system_charset_info, name,
- name+system_charset_info->mbmaxlen);
- if (len)
- {
- name += len;
- continue;
- }
+ int len;
+ last_char_is_space= my_isspace(system_charset_info, *name);
+ len= my_ismbchar(system_charset_info, name, end);
+ if (!len)
+ len= 1;
+ name+= len;
}
-#else
- last_char_is_space= *name==' ';
-#endif
- name++;
+ return last_char_is_space;
}
- return last_char_is_space || (uint) (name - start) > NAME_LEN;
+ else
+#endif
+ return org_name->str[org_name->length - 1] != ' '; /* purecov: inspected */
}