summaryrefslogtreecommitdiff
path: root/sql/item_sum.cc
diff options
context:
space:
mode:
authorunknown <gluh@eagle.(none)>2007-10-23 18:51:43 +0500
committerunknown <gluh@eagle.(none)>2007-10-23 18:51:43 +0500
commit8479eb1db7d1c8ccfbaa62077c54b7f5af714324 (patch)
treed36465f86e78c442a44942849b7280eab8d10bf8 /sql/item_sum.cc
parentfb9a562b1cc2b9048eff094bb7004fb3db0e7fd0 (diff)
parentc448d2ed5d2a7efd1f77b956f46d8f1e48b17350 (diff)
downloadmariadb-git-8479eb1db7d1c8ccfbaa62077c54b7f5af714324.tar.gz
Merge mysql.com:/home/gluh/MySQL/Merge/5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-opt client/mysqldump.c: Auto merged include/config-win.h: Auto merged libmysql/libmysql.c: Auto merged myisam/sort.c: Auto merged mysql-test/r/func_sapdb.result: Auto merged mysql-test/r/variables.result: Auto merged mysql-test/t/variables.test: Auto merged sql/field.cc: Auto merged sql/ha_innodb.cc: Auto merged sql/item_func.cc: Auto merged sql/item_sum.cc: Auto merged sql/item_timefunc.h: Auto merged sql/mysql_priv.h: Auto merged sql/set_var.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_base.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.cc: Auto merged sql/sql_yacc.yy: Auto merged tests/mysql_client_test.c: Auto merged mysql-test/r/type_datetime.result: manual merge mysql-test/r/type_decimal.result: manual merge mysql-test/t/type_datetime.test: manual merge mysql-test/t/type_decimal.test: manual merge sql/item.cc: manual merge
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r--sql/item_sum.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc
index 48ad53fbf75..30cbe872101 100644
--- a/sql/item_sum.cc
+++ b/sql/item_sum.cc
@@ -905,7 +905,9 @@ bool Item_sum_distinct::setup(THD *thd)
List<create_field> field_list;
create_field field_def; /* field definition */
DBUG_ENTER("Item_sum_distinct::setup");
- DBUG_ASSERT(tree == 0);
+ /* It's legal to call setup() more than once when in a subquery */
+ if (tree)
+ DBUG_RETURN(FALSE);
/*
Virtual table and the tree are created anew on each re-execution of
@@ -913,7 +915,7 @@ bool Item_sum_distinct::setup(THD *thd)
mem_root.
*/
if (field_list.push_back(&field_def))
- return TRUE;
+ DBUG_RETURN(TRUE);
null_value= maybe_null= 1;
quick_group= 0;
@@ -925,7 +927,7 @@ bool Item_sum_distinct::setup(THD *thd)
args[0]->unsigned_flag);
if (! (table= create_virtual_tmp_table(thd, field_list)))
- return TRUE;
+ DBUG_RETURN(TRUE);
/* XXX: check that the case of CHAR(0) works OK */
tree_key_length= table->s->reclength - table->s->null_bytes;
@@ -2443,6 +2445,7 @@ bool Item_sum_count_distinct::setup(THD *thd)
/*
Setup can be called twice for ROLLUP items. This is a bug.
Please add DBUG_ASSERT(tree == 0) here when it's fixed.
+ It's legal to call setup() more than once when in a subquery
*/
if (tree || table || tmp_table_param)
return FALSE;