BUG #15262: "unexpected end of tuplestore" error when using new GROUPS window function clause

Lists: pgsql-bugs
From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: lukas(dot)eder(at)gmail(dot)com
Subject: BUG #15262: "unexpected end of tuplestore" error when using new GROUPS window function clause
Date: 2018-07-06 09:04:46
Message-ID: 153086788677.17476.8002640580496698831@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 15262
Logged by: Lukas Eder
Email address: lukas(dot)eder(at)gmail(dot)com
PostgreSQL version: 11beta2
Operating system: Debian 6.3.0-18+deb9u1
Description:

This error can be reproduced easily as follows

postgres=# SELECT count(*) OVER (GROUPS 1 PRECEDING) FROM (VALUES (1),
(2), (2)) t(v);
ERROR: unexpected end of tuplestore

Notice the missing ORDER BY clause in the window specification. This works
as expected:

postgres=# SELECT count(*) OVER (ORDER BY v GROUPS 1 PRECEDING) FROM
(VALUES (1), (2), (2)) t(v);
count
-------
1
3
3
(3 rows)

I used the latest 11 beta 2 version on Docker:

postgres=# select version();
version

-----------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 11beta2 (Debian 11~beta2-1.pgdg90+1) on x86_64-pc-linux-gnu,
compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit
(1 row)


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: lukas(dot)eder(at)gmail(dot)com
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15262: "unexpected end of tuplestore" error when using new GROUPS window function clause
Date: 2018-07-09 22:29:34
Message-ID: 13420.1531175374@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

=?utf-8?q?PG_Bug_reporting_form?= <noreply(at)postgresql(dot)org> writes:
> This error can be reproduced easily as follows

> postgres=# SELECT count(*) OVER (GROUPS 1 PRECEDING) FROM (VALUES (1),
> (2), (2)) t(v);
> ERROR: unexpected end of tuplestore

In an assert-enabled build I get an assert failure from this. I think
this is the same problem Masahiko Sawada noted in

/message-id/CAD21AoDrWqycq-w_+Bx1cjc+YUhZ11XTj9rfxNiNDojjBx8Fjw@mail.gmail.com

and as in that thread, I think what we really should be doing here is
giving a parse error. What would you expect GROUPS mode to do without
an ORDER BY to define the grouping?

regards, tom lane


From: Lukas Eder <lukas(dot)eder(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15262: "unexpected end of tuplestore" error when using new GROUPS window function clause
Date: 2018-07-10 07:29:51
Message-ID: CAB4ELO6eoBx=PcwuFkHFq-_diRK-opcmZc5V9avhFZmxyWzB8A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

Am Di., 10. Juli 2018 um 00:29 Uhr schrieb Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>:

> I think what we really should be doing here is giving a parse error.

Yes, I agree. That's also what the SQL standard says.

ISO/IEC 9075-2:2016(E)
7.15 <window clause>
13 c) If GROUPS is specified, then:
i) Either WDEF shall contain a <window order clause>, or WDEF shall specify
an <existing window name> that identifies a window structure descriptor
that includes a window ordering clause.

> What would you expect GROUPS mode to do without an ORDER BY to define the
> grouping?

I had no expectations, was just playing around with the new syntax.