Thread: 8.4, 9.0 bug (doesn't exist in 9.1) related to window functions

8.4, 9.0 bug (doesn't exist in 9.1) related to window functions

From
Jeff Davis
Date:
In REL8_4_STABLE and REL9_0_STABLE:

=> select ntile(3) OVER ( ORDER BY CASE WHEN count(i) = 0 THEN NULL ELSE
count(i) END asc ) from ( SELECT NULL::integer as i limit 0 ) s ;
ERROR:  cannot extract attribute from empty tuple slot

A different error appears in 9.1.0 ("could not find pathkey item to
sort"), but it's fixed sometime later in the 9.1 series.

If you get rid of the CASE statement, then it still fails in 8.4 and
9.0, but it succeeds in 9.1.0 and beyond.

Regards,
    Jeff Davis

Re: 8.4, 9.0 bug (doesn't exist in 9.1) related to window functions

From
Tom Lane
Date:
Jeff Davis <pgsql@j-davis.com> writes:
> In REL8_4_STABLE and REL9_0_STABLE:

> => select ntile(3) OVER ( ORDER BY CASE WHEN count(i) = 0 THEN NULL ELSE
> count(i) END asc ) from ( SELECT NULL::integer as i limit 0 ) s ;
> ERROR:  cannot extract attribute from empty tuple slot

I believe this is the same case fixed here:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=c1d9579dd

and as noted in that commit message, it didn't appear worth the risk
of fixing it in released branches.

            regards, tom lane

Re: 8.4, 9.0 bug (doesn't exist in 9.1) related to window functions

From
Jeff Davis
Date:
On Thu, 2012-01-26 at 20:43 -0500, Tom Lane wrote:
> Jeff Davis <pgsql@j-davis.com> writes:
> > => select ntile(3) OVER ( ORDER BY CASE WHEN count(i) = 0 THEN NULL ELSE
> > count(i) END asc ) from ( SELECT NULL::integer as i limit 0 ) s ;
> > ERROR:  cannot extract attribute from empty tuple slot
>
> I believe this is the same case fixed here:
> http://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=c1d9579dd
>
> and as noted in that commit message, it didn't appear worth the risk
> of fixing it in released branches.

Thank you. For the record, it looks like the one that fixed the similar
problem in early 9.1 was here:

http://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=269c5dd2f46e3490da05d5dd5dad07828df281d9

Regards,
    Jeff Davis