On Mon, Dec 15, 2014 at 12:25 PM, Andrew Gierth
<and...@tao11.riddles.org.uk> wrote:
>>>>>> "Fujii" == Fujii Masao <masao.fu...@gmail.com> writes:
>
>  Fujii> Pushed.
>
> Bug found:
>
> regression=# select count(*) from generate_series(1::numeric,10) v, 
> generate_series(1,v) w;
>  count
> -------
>  99990
> (1 row)
>
> regression=# select count(*) from generate_series(1::numeric,10) v, 
> generate_series(1,v+0) w;
>  count
> -------
>     55
> (1 row)
>
> The error is in the use of PG_GETARG_NUMERIC and init_var_from_num
> when setting up the multi-call state; init_var_from_num points at the
> original num's digits rather than copying them, but start_num and
> stop_num have just been (potentially) detoasted in the per-call
> context, in which case the storage will have been freed by the next
> call.
>
> Obviously this could also be fixed by not detoasting the input until
> after switching to the multi-call context, but it looks to me like
> that would be unnecessarily complex.
>
> Suggested patch attached.

Pushed. Thanks!

Regards,

-- 
Fujii Masao


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to