diff options
author | unknown <gshchepa/uchum@host.loc> | 2008-03-27 15:54:45 +0400 |
---|---|---|
committer | unknown <gshchepa/uchum@host.loc> | 2008-03-27 15:54:45 +0400 |
commit | a451de2f5949cfb1109be2c8608c5aed65a074de (patch) | |
tree | 26a1228ee041cd494460792a2e5f3bff5c0f0b7b /sql/item.cc | |
parent | 321f392f629479eedf63062f85283e911ce05d7e (diff) | |
parent | b90296c70ac526be823d76ffdb2ef2e8cac87179 (diff) | |
download | mariadb-git-a451de2f5949cfb1109be2c8608c5aed65a074de.tar.gz |
Merge host.loc:/home/uchum/work/mysql-5.1
into host.loc:/home/uchum/work/5.1-opt
client/mysqltest.c:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
sql/item.cc:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_delete.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sql/item.cc b/sql/item.cc index 0a1db55761f..883c293f645 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -5605,13 +5605,16 @@ bool Item_ref::fix_fields(THD *thd, Item **reference) DBUG_ASSERT(*ref); /* Check if this is an incorrect reference in a group function or forward - reference. Do not issue an error if this is an unnamed reference inside an - aggregate function. + reference. Do not issue an error if this is: + 1. outer reference (will be fixed later by the fix_inner_refs function); + 2. an unnamed reference inside an aggregate function. */ - if (((*ref)->with_sum_func && name && - !(current_sel->linkage != GLOBAL_OPTIONS_TYPE && - current_sel->having_fix_field)) || - !(*ref)->fixed) + if (!((*ref)->type() == REF_ITEM && + ((Item_ref *)(*ref))->ref_type() == OUTER_REF) && + (((*ref)->with_sum_func && name && + !(current_sel->linkage != GLOBAL_OPTIONS_TYPE && + current_sel->having_fix_field)) || + !(*ref)->fixed)) { my_error(ER_ILLEGAL_REFERENCE, MYF(0), name, ((*ref)->with_sum_func? |