summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorunknown <gshchepa/uchum@host.loc>2008-03-27 15:54:45 +0400
committerunknown <gshchepa/uchum@host.loc>2008-03-27 15:54:45 +0400
commita451de2f5949cfb1109be2c8608c5aed65a074de (patch)
tree26a1228ee041cd494460792a2e5f3bff5c0f0b7b /sql/item.cc
parent321f392f629479eedf63062f85283e911ce05d7e (diff)
parentb90296c70ac526be823d76ffdb2ef2e8cac87179 (diff)
downloadmariadb-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.cc15
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?