Commit 7773523f authored by igor@olga.mysql.com's avatar igor@olga.mysql.com

Merge olga.mysql.com:/home/igor/mysql-5.0-opt

into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug27229
parents 081f43cc 18ea8068
...@@ -449,7 +449,6 @@ void Item_sum::update_used_tables () ...@@ -449,7 +449,6 @@ void Item_sum::update_used_tables ()
used_tables_cache&= PSEUDO_TABLE_BITS; used_tables_cache&= PSEUDO_TABLE_BITS;
/* the aggregate function is aggregated into its local context */ /* the aggregate function is aggregated into its local context */
if (aggr_level == nest_level)
used_tables_cache |= (1 << aggr_sel->join->tables) - 1; used_tables_cache |= (1 << aggr_sel->join->tables) - 1;
} }
} }
......
...@@ -9196,9 +9196,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -9196,9 +9196,12 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
Item::Type type=item->type(); Item::Type type=item->type();
if (not_all_columns) if (not_all_columns)
{ {
if (item->with_sum_func && type != Item::SUM_FUNC_ITEM && if (item->with_sum_func && type != Item::SUM_FUNC_ITEM)
(type == Item::SUBSELECT_ITEM || {
(item->used_tables() & ~PSEUDO_TABLE_BITS))) if (item->used_tables() & OUTER_REF_TABLE_BIT)
item->update_used_tables();
if (type == Item::SUBSELECT_ITEM ||
(item->used_tables() & ~OUTER_REF_TABLE_BIT))
{ {
/* /*
Mark that the we have ignored an item that refers to a summary Mark that the we have ignored an item that refers to a summary
...@@ -9208,6 +9211,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -9208,6 +9211,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
param->using_indirect_summary_function=1; param->using_indirect_summary_function=1;
continue; continue;
} }
}
if (item->const_item() && (int) hidden_field_count <= 0) if (item->const_item() && (int) hidden_field_count <= 0)
continue; // We don't have to store this continue; // We don't have to store this
} }
...@@ -9391,6 +9395,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields, ...@@ -9391,6 +9395,7 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List<Item> &fields,
table->s->default_values= table->record[1]+alloc_length; table->s->default_values= table->record[1]+alloc_length;
} }
copy_func[0]=0; // End marker copy_func[0]=0; // End marker
param->func_count= copy_func - param->items_to_copy;
recinfo=param->start_recinfo; recinfo=param->start_recinfo;
null_flags=(uchar*) table->record[0]; null_flags=(uchar*) table->record[0];
...@@ -13571,6 +13576,7 @@ count_field_types(TMP_TABLE_PARAM *param, List<Item> &fields, ...@@ -13571,6 +13576,7 @@ count_field_types(TMP_TABLE_PARAM *param, List<Item> &fields,
if (!sum_item->quick_group) if (!sum_item->quick_group)
param->quick_group=0; // UDF SUM function param->quick_group=0; // UDF SUM function
param->sum_func_count++; param->sum_func_count++;
param->func_count++;
for (uint i=0 ; i < sum_item->arg_count ; i++) for (uint i=0 ; i < sum_item->arg_count ; i++)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment