diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-07-23 17:36:56 +0300 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-07-23 17:36:56 +0300 |
commit | d289accb0af491ae0d241fa801c291da07fabd77 (patch) | |
tree | c86141acb72a64939e0945c908f3b8a6b6027840 /sql | |
parent | b3021da20a193b297b1c592cf05a475ff5e94a32 (diff) | |
download | mariadb-git-d289accb0af491ae0d241fa801c291da07fabd77.tar.gz |
Fuller implementation of lower case table names.
Bug record #828
Diffstat (limited to 'sql')
-rw-r--r-- | sql/mysql_priv.h | 6 | ||||
-rw-r--r-- | sql/sql_class.h | 12 | ||||
-rw-r--r-- | sql/sql_parse.cc | 2 | ||||
-rw-r--r-- | sql/sql_table.cc | 2 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 4 |
5 files changed, 23 insertions, 3 deletions
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 0a4728ef325..adbf344fda6 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -862,3 +862,9 @@ inline void mark_as_null_row(TABLE *table) table->status|=STATUS_NULL_ROW; bfill(table->null_flags,table->null_bytes,255); } + +inline void table_case_convert(char * name, uint length) +{ + if (lower_case_table_names) + casedn(name, length); +} diff --git a/sql/sql_class.h b/sql/sql_class.h index dcc839e13b1..5e4e6184328 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -33,7 +33,7 @@ enum enum_duplicates { DUP_ERROR, DUP_REPLACE, DUP_IGNORE }; enum enum_log_type { LOG_CLOSED, LOG_TO_BE_OPENED, LOG_NORMAL, LOG_NEW, LOG_BIN}; enum enum_delay_key_write { DELAY_KEY_WRITE_NONE, DELAY_KEY_WRITE_ON, DELAY_KEY_WRITE_ALL }; - +extern inline void table_case_convert(char * name, uint length); /* log info errors */ #define LOG_INFO_EOF -1 #define LOG_INFO_IO -2 @@ -758,7 +758,6 @@ typedef struct st_sort_buffer { SORT_FIELD *sortorder; } SORT_BUFFER; - /* Structure for db & table in sql_yacc */ class Table_ident :public Sql_alloc { @@ -772,8 +771,15 @@ class Table_ident :public Sql_alloc { db.str=0; else db= db_arg; + if (db.str) + table_case_convert(db.str,db.length); + table_case_convert(table.str,table.length); + } + inline Table_ident(LEX_STRING table_arg) :table(table_arg) + { + db.str=0; + table_case_convert(table.str,table.length); } - inline Table_ident(LEX_STRING table_arg) :table(table_arg) {db.str=0;} inline void change_db(char *db_name) { db.str= db_name; db.length=(uint) strlen(db_name); } }; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 70c0f772d7d..509f3ee5736 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3385,8 +3385,10 @@ TABLE_LIST *add_table_to_list(Table_ident *table, LEX_STRING *alias, } ptr->alias= alias_str; +#ifdef TO_BE_DELETED if (lower_case_table_names) casedn_str(table->table.str); +#endif ptr->real_name=table->table.str; ptr->real_name_length=table->table.length; ptr->lock_type= lock_type; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index cf430aec35d..b2b8c7d7140 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -1459,8 +1459,10 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, { strmov(new_name_buff,new_name); fn_same(new_name_buff,table_name,3); +#ifdef TO_BE_DELETED if (lower_case_table_names) casedn_str(new_name); +#endif if ((lower_case_table_names && !my_strcasecmp(new_name_buff,table_name)) || (!lower_case_table_names && diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index b07dca91a20..d67f76ea66b 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3221,16 +3221,20 @@ simple_ident: | ident '.' ident { SELECT_LEX *sel=Select; + table_case_convert($1.str, $1.length); $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field(NullS,$1.str,$3.str) : (Item*) new Item_ref(NullS,$1.str,$3.str); } | '.' ident '.' ident { SELECT_LEX *sel=Select; + table_case_convert($2.str,$2.length); $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field(NullS,$2.str,$4.str) : (Item*) new Item_ref(NullS,$2.str,$4.str); } | ident '.' ident '.' ident { SELECT_LEX *sel=Select; + table_case_convert($1.str,$1.length); + table_case_convert($3.str,$3.length); $$ = !sel->create_refs || sel->in_sum_expr > 0 ? (Item*) new Item_field((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str) : (Item*) new Item_ref((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? NullS :$1.str),$3.str,$5.str); }; |