Re: review: More frame options in window functions

Erik Rijkers <er@xs4all.nl>

From: "Erik Rijkers" <er@xs4all.nl>
To: "Hitoshi Harada" <umi.tanuki@gmail.com>
Cc: "PostgreSQL-development" <pgsql-hackers@postgresql.org>
Date: 2010-01-15T23:12:47Z
Lists: pgsql-hackers
> Thanks for the review. I've found another crash today and attached is
> fixed version. The case is:
>
> SELECT four, sum(ten) over (PARTITION BY four ORDER BY four RANGE 1
> PRECEDING) FROM tenk1 WHERE unique1 < 10;
>

Hi,

The patch (more_frame_options.20100115.patch.gz) applies cleanly, but the regression test gives:


***
/var/data1/pg_stuff/pg_sandbox/pgsql.rows_frame_types/src/test/regress/expected/window.out	2010-01-15
22:36:01.000000000 +0100
---
/var/data1/pg_stuff/pg_sandbox/pgsql.rows_frame_types/src/test/regress/results/window.out	2010-01-15
22:37:01.000000000 +0100
***************
*** 934,953 ****

  SELECT four, ten, sum(ten) over (partition by four order by four range 1 preceding)
  FROM tenk1 WHERE unique1 < 10;
!  four | ten | sum
! ------+-----+-----
!     0 |   0 |  12
!     0 |   8 |  12
!     0 |   4 |  12
!     1 |   5 |  15
!     1 |   9 |  15
!     1 |   1 |  15
!     2 |   6 |   8
!     2 |   2 |   8
!     3 |   3 |  10
!     3 |   7 |  10
! (10 rows)
!
  CREATE VIEW v_window AS
  	SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following) as sum_rows,
  	sum(i) over (order by i / 3 range between 1 preceding and 1 following) as sum_range
--- 934,940 ----

  SELECT four, ten, sum(ten) over (partition by four order by four range 1 preceding)
  FROM tenk1 WHERE unique1 < 10;
! ERROR:  cannot extract system attribute from minimal tuple
  CREATE VIEW v_window AS
  	SELECT i, sum(i) over (order by i rows between 1 preceding and 1 following) as sum_rows,
  	sum(i) over (order by i / 3 range between 1 preceding and 1 following) as sum_range

======================================================================



regards,


Erik Rijkers