Thanks for continuing to look into this.
On 05.10.2008, at 03:35, Sergey Petrunia wrote:
> mysql> PREPARE stmt1 AS 'EXPLAIN SELECT 1 FROM (SELECT
> COUNT( x_func( ...';
> mysql> EXECUTE stmt1;
> * Some code substitutes the item object that corresponds to
> x_func(..) with
> $transient_item. $transient_item is allocated on the per-statement
> mem_root. The change is recorded with change_item_tree().
> * Execution enters Item_sum::set_arg, the "if (!orig_args)" branch
> is taken.
How can this call take place assuming that somebody substituted the
x_func() call to some other item (if I interpret what you've said
above correctly) ? Can you please point me out to such places in code
that construct transient Item_sum's ?
If you mean substituting Item_sum's arguments I've specifically made
sure that all the substitutions of these go through ::set_arg().
Please grab me on IRC to discuss this.
Engineering Manager, MySQL Server 5.1 release
Sun Microsystems, Inc.
Phone +35 32 634397
Mobile +359 887 700566