Range Types regression failure
Hi,
I can't explain why I'm seeing a range type installcheck failure as I
don't see the same problem on the buildfarm, but out of all the tests
run, the range types test is the only one to fail.
I've attached the diff and the rangetypes.out file. It appears that
while the rows output are the same, they aren't in the same order.
What I can't explain is why the ordering on my system is different to
all the buildfarm animals.
This is on Ubuntu 11.10 64-bit (Linux kernel 3.0.0) and the following
build options:
--enable-depend
--enable-cassert
--enable-debug
--with-ossp-uuid
--with-libxml
--with-libxslt
--
Thom
Attachments:
regression.diffsapplication/octet-stream; name=regression.diffsDownload
*** /home/thom/Development/postgresql/src/test/regress/expected/rangetypes.out 2012-04-06 10:31:54.361663200 +0100
--- /home/thom/Development/postgresql/src/test/regress/results/rangetypes.out 2012-04-06 21:52:24.196572345 +0100
***************
*** 263,306 ****
select * from numrange_test where nr < numrange(-1000.0, -1000.0,'[]');
nr
-------
- (,)
- (,5)
empty
(3 rows)
select * from numrange_test where nr < numrange(0.0, 1.0,'[]');
nr
-------
- (,)
- (,5)
empty
(3 rows)
select * from numrange_test where nr < numrange(1000.0, 1001.0,'[]');
nr
-----------
! (,)
! [3,)
(,5)
[1.1,2.2)
- empty
[1.7,1.7]
(6 rows)
select * from numrange_test where nr > numrange(-1001.0, -1000.0,'[]');
nr
-----------
- [3,)
[1.1,2.2)
[1.7,1.7]
(3 rows)
select * from numrange_test where nr > numrange(0.0, 1.0,'[]');
nr
-----------
- [3,)
[1.1,2.2)
[1.7,1.7]
(3 rows)
select * from numrange_test where nr > numrange(1000.0, 1000.0,'[]');
--- 263,306 ----
select * from numrange_test where nr < numrange(-1000.0, -1000.0,'[]');
nr
-------
empty
+ (,5)
+ (,)
(3 rows)
select * from numrange_test where nr < numrange(0.0, 1.0,'[]');
nr
-------
empty
+ (,5)
+ (,)
(3 rows)
select * from numrange_test where nr < numrange(1000.0, 1001.0,'[]');
nr
-----------
! empty
(,5)
+ (,)
[1.1,2.2)
[1.7,1.7]
+ [3,)
(6 rows)
select * from numrange_test where nr > numrange(-1001.0, -1000.0,'[]');
nr
-----------
[1.1,2.2)
[1.7,1.7]
+ [3,)
(3 rows)
select * from numrange_test where nr > numrange(0.0, 1.0,'[]');
nr
-----------
[1.1,2.2)
[1.7,1.7]
+ [3,)
(3 rows)
select * from numrange_test where nr > numrange(1000.0, 1000.0,'[]');
======================================================================
Thom Brown <thom@linux.com> writes:
I can't explain why I'm seeing a range type installcheck failure as I
don't see the same problem on the buildfarm, but out of all the tests
run, the range types test is the only one to fail.
I can duplicate that output ordering if I force it to use indexscans,
but it's quite unclear why it would do so by default for a six-row
table. Are you using weird planner cost parameters? (I'd have expected
such to result in a lot more diffs than this, though.)
regards, tom lane
On 6 April 2012 22:35, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Thom Brown <thom@linux.com> writes:
I can't explain why I'm seeing a range type installcheck failure as I
don't see the same problem on the buildfarm, but out of all the tests
run, the range types test is the only one to fail.I can duplicate that output ordering if I force it to use indexscans,
but it's quite unclear why it would do so by default for a six-row
table. Are you using weird planner cost parameters? (I'd have expected
such to result in a lot more diffs than this, though.)
Ah, you've nailed it. It's performing an index-only scan:
thom@regression=# explain select * from numrange_test where nr <
numrange(-1000.0, -1000.0,'[]');
QUERY PLAN
--------------------------------------------------------------------------------------------------
Index Only Scan using numrange_test_btree on numrange_test
(cost=0.00..20.00 rows=437 width=32)
Index Cond: (nr < '[-1000.0,-1000.0]'::numrange)
(2 rows)
And you are right about my cost settings. I have random_page_cost set
to 1.1 as I'm using an SSD. Setting it back to 4.0 and re-running the
tests removes the issue. My fault for swapping in my edited conf file
prior to tests.
Thanks.
--
Thom