From ab71860161d1a492165defcc7afdaa96a4ab7cc7 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 21 Apr 2025 15:03:55 +0200 Subject: [PATCH] cleanup: check_column_name(const Lex_ident &name) --- sql/sql_lex.h | 2 +- sql/sql_select.cc | 2 +- sql/sql_table.cc | 4 ++-- sql/sql_view.cc | 2 +- sql/sql_yacc.yy | 2 +- sql/table.cc | 13 +++---------- sql/table.h | 3 +-- 7 files changed, 10 insertions(+), 18 deletions(-) diff --git a/sql/sql_lex.h b/sql/sql_lex.h index 6312102e076..d53dd8057a5 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -4681,7 +4681,7 @@ public: int add_period(Lex_ident name, Lex_ident_sys_st start, Lex_ident_sys_st end) { - if (check_period_name(name.str)) { + if (check_column_name(name)) { my_error(ER_WRONG_COLUMN_NAME, MYF(0), name.str); return 1; } diff --git a/sql/sql_select.cc b/sql/sql_select.cc index b4edf8a3050..5a98220fab3 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -30629,7 +30629,7 @@ void st_select_lex::print_item_list(THD *thd, String *str, */ if (top_level || item->is_explicit_name() || - !check_column_name(item->name.str)) + !check_column_name(item->name)) item->print_item_w_name(str, query_type); else item->print(str, query_type); diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 06501449ab7..d9ba09fd2a2 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -3107,7 +3107,7 @@ static bool mysql_prepare_create_table_stage1(THD *thd, DBUG_ASSERT(sql_field->charset); - if (check_column_name(sql_field->field_name.str)) + if (check_column_name(sql_field->field_name)) { my_error(ER_WRONG_COLUMN_NAME, MYF(0), sql_field->field_name.str); DBUG_RETURN(TRUE); @@ -3745,7 +3745,7 @@ mysql_prepare_create_table_finalize(THD *thd, HA_CREATE_INFO *create_info, key_part_info++; } - if (!key_info->name.str || check_column_name(key_info->name.str)) + if (!key_info->name.str || check_column_name(key_info->name)) { my_error(ER_WRONG_NAME_FOR_INDEX, MYF(0), key_info->name.str); DBUG_RETURN(TRUE); diff --git a/sql/sql_view.cc b/sql/sql_view.cc index 316e4242553..58da2833ec1 100644 --- a/sql/sql_view.cc +++ b/sql/sql_view.cc @@ -183,7 +183,7 @@ void make_valid_column_names(THD *thd, List &item_list) for (uint column_no= 1; (item= it++); column_no++) { - if (item->is_explicit_name() || !check_column_name(item->name.str)) + if (item->is_explicit_name() || !check_column_name(item->name)) continue; name_len= my_snprintf(buff, NAME_LEN, "Name_exp_%u", column_no); item->orig_name= item->name.str; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 2abd0a529af..be7e918706a 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -9107,7 +9107,7 @@ select_item: if ($4.str) { if (unlikely(Lex->sql_command == SQLCOM_CREATE_VIEW && - check_column_name($4.str))) + check_column_name($4))) my_yyabort_error((ER_WRONG_COLUMN_NAME, MYF(0), $4.str)); $2->base_flags|= item_base_t::IS_EXPLICIT_NAME; $2->set_name(thd, $4); diff --git a/sql/table.cc b/sql/table.cc index 3fbac639ecb..3a51228d1f3 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -5320,9 +5320,10 @@ bool check_table_name(const char *name, size_t length, bool check_for_path_chars } -bool check_column_name(const char *name) +bool check_column_name(const Lex_ident &ident) { // name length in symbols + const char *name= ident.str, *end= ident.str + ident.length; size_t name_length= 0; bool last_char_is_space= TRUE; @@ -5332,9 +5333,7 @@ bool check_column_name(const char *name) last_char_is_space= my_isspace(system_charset_info, *name); if (system_charset_info->use_mb()) { - int len=my_ismbchar(system_charset_info, name, - name+system_charset_info->mbmaxlen); - if (len) + if (int len= my_ismbchar(system_charset_info, name, end)) { name += len; name_length++; @@ -5354,12 +5353,6 @@ bool check_column_name(const char *name) } -bool check_period_name(const char *name) -{ - return check_column_name(name); -} - - /** Checks whether a table is intact. Should be done *just* after the table has been opened. diff --git a/sql/table.h b/sql/table.h index 137cb537587..d249a84d8cc 100644 --- a/sql/table.h +++ b/sql/table.h @@ -3388,8 +3388,7 @@ void open_table_error(TABLE_SHARE *share, enum open_frm_error error, int db_errno); void update_create_info_from_table(HA_CREATE_INFO *info, TABLE *form); bool check_db_name(LEX_STRING *db); -bool check_column_name(const char *name); -bool check_period_name(const char *name); +bool check_column_name(const Lex_ident &name); bool check_table_name(const char *name, size_t length, bool check_for_path_chars); int rename_file_ext(const char * from,const char * to,const char * ext); char *get_field(MEM_ROOT *mem, Field *field);