Обсуждение: BUG #15262: "unexpected end of tuplestore" error when using newGROUPS window function clause

Поиск
Список
Период
Сортировка

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

От
PG Bug reporting form
Дата:
The following bug has been logged on the website:

Bug reference:      15262
Logged by:          Lukas Eder
Email address:      lukas.eder@gmail.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)


=?utf-8?q?PG_Bug_reporting_form?= <noreply@postgresql.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

https://www.postgresql.org/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




Am Di., 10. Juli 2018 um 00:29 Uhr schrieb Tom Lane <tgl@sss.pgh.pa.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.