diff options
author | bell@sanja.is.com.ua <> | 2004-11-24 20:01:34 +0200 |
---|---|---|
committer | bell@sanja.is.com.ua <> | 2004-11-24 20:01:34 +0200 |
commit | 3fa511ff54339df057f164217f896738a568c4e3 (patch) | |
tree | 4683f9b0bafdfc81a512c163214a6e6e30e28121 /sql/item.cc | |
parent | 9e467cc009a02cab2cb42d9f8f22eb9df6a70a3d (diff) | |
parent | 6d5d5ff9410481f9f0eb6b08fd0cc00ca9621f14 (diff) | |
download | mariadb-git-3fa511ff54339df057f164217f896738a568c4e3.tar.gz |
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0
into sanja.is.com.ua:/home/bell/mysql/bk/work-error-5.0
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sql/item.cc b/sql/item.cc index 6ebe34f91dc..f05a0b30db4 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -138,7 +138,7 @@ bool Item::cleanup_processor(byte *arg) Item_ident::Item_ident(const char *db_name_par,const char *table_name_par, const char *field_name_par) :orig_db_name(db_name_par), orig_table_name(table_name_par), - orig_field_name(field_name_par), + orig_field_name(field_name_par), alias_name_used(FALSE), db_name(db_name_par), table_name(table_name_par), field_name(field_name_par), cached_field_index(NO_CACHED_FIELD_INDEX), cached_table(0), depended_from(0) @@ -152,6 +152,7 @@ Item_ident::Item_ident(THD *thd, Item_ident *item) orig_db_name(item->orig_db_name), orig_table_name(item->orig_table_name), orig_field_name(item->orig_field_name), + alias_name_used(item->alias_name_used), db_name(item->db_name), table_name(item->table_name), field_name(item->field_name), @@ -609,6 +610,7 @@ void Item_field::set_field(Field *field_par) table_name=field_par->table_name; field_name=field_par->field_name; db_name=field_par->table->table_cache_key; + alias_name_used= field_par->table->alias_name_used; unsigned_flag=test(field_par->flags & UNSIGNED_FLAG); collation.set(field_par->charset(), DERIVATION_IMPLICIT); fixed= 1; @@ -658,7 +660,8 @@ void Item_ident::print(String *str) THD *thd= current_thd; char d_name_buff[MAX_ALIAS_NAME], t_name_buff[MAX_ALIAS_NAME]; const char *d_name= db_name, *t_name= table_name; - if (lower_case_table_names) + if (lower_case_table_names== 1 || + (lower_case_table_names == 2 && !alias_name_used)) { if (table_name && table_name[0]) { @@ -680,7 +683,7 @@ void Item_ident::print(String *str) append_identifier(thd, str, nm, strlen(nm)); return; } - if (db_name && db_name[0]) + if (db_name && db_name[0] && !alias_name_used) { append_identifier(thd, str, d_name, strlen(d_name)); str->append('.'); @@ -2937,6 +2940,10 @@ bool Item_ref::fix_fields(THD *thd, TABLE_LIST *tables, Item **reference) decimals= (*ref)->decimals; collation.set((*ref)->collation); with_sum_func= (*ref)->with_sum_func; + if ((*ref)->type() == FIELD_ITEM) + alias_name_used= ((Item_ident *) (*ref))->alias_name_used; + else + alias_name_used= TRUE; // it is not field, so it is was resolved by alias fixed= 1; if (ref && (*ref)->check_cols(1)) |