So I'm testing a patch to make the planner use measured all-visible-page
counts for index-only scans.  I was expecting to possibly see some plan
changes in the regression tests, but this diff scared me:

***************
*** 906,921 ****
  FROM tenk1 WHERE unique1 < 10;
   sum | unique1 
  -----+---------
!    4 |       4
!    6 |       2
!    3 |       1
!    7 |       6
!   15 |       9
!   17 |       8
!   13 |       5
!    8 |       3
!   10 |       7
!    7 |       0
  (10 rows)
  
  CREATE TEMP VIEW v_window AS
--- 906,921 ----
  FROM tenk1 WHERE unique1 < 10;
   sum | unique1 
  -----+---------
!    0 |       0
!    1 |       1
!    3 |       2
!    5 |       3
!    7 |       4
!    9 |       5
!   11 |       6
!   13 |       7
!   15 |       8
!   17 |       9
  (10 rows)
  
  CREATE TEMP VIEW v_window AS

On inspection, though, there's no bug.  The plan did change, and that
affected the order in which the rows are fetched, and that changed the
window function outputs because this test case is effectively using
SUM(x) OVER (ROWS 1 PRECEDING) without any ordering specifier.
There are several adjacent tests that are underspecified in the same
way, but their results didn't change because they aren't candidates for
index-only scans.

We could hack around this by adding more columns to the result so that
an index-only scan doesn't work.  But I wonder whether it wouldn't be
smarter to add ORDER BY clauses to the window function calls.  I've been
known to argue against adding just-in-case ORDER BYs to the regression
tests in the past; but these cases bother me more because a plan change
will not just rearrange the result rows but change their contents,
making it really difficult to verify that nothing's seriously wrong.

I can't recall whether there was some good reason for underspecifying
these test queries.  It looks like all the problematic ones were added in
commit ec4be2ee6827b6bd85e0813c7a8993cfbb0e6fa7 "Extend the set of frame
options supported for window functions", which means it was either me or
Hitoshi-san who wrote them that way, but memory is not serving this
afternoon.

Opinions?

                        regards, tom lane

-- 
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