Union test case broken in make check?

Started by Emmanuel Cecchetabout 16 years ago8 messages
#1Emmanuel Cecchet
manu@asterdata.com

Hi,

Is it just me or the union test case fails in CVS head?

manu

--
Emmanuel Cecchet
Aster Data
Web: http://www.asterdata.com

#2Andrew Dunstan
andrew@dunslane.net
In reply to: Emmanuel Cecchet (#1)
Re: Union test case broken in make check?

Emmanuel Cecchet wrote:

Hi,

Is it just me or the union test case fails in CVS head?

The buildfarm is pretty much all green:
<http://www.pgbuildfarm.org/cgi-bin/show_status.pl&gt;

So it looks like it's you :-)

cheers

andrew

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrew Dunstan (#2)
Re: Union test case broken in make check?

Andrew Dunstan <andrew@dunslane.net> writes:

Emmanuel Cecchet wrote:

Is it just me or the union test case fails in CVS head?

The buildfarm is pretty much all green:
<http://www.pgbuildfarm.org/cgi-bin/show_status.pl&gt;
So it looks like it's you :-)

When in doubt, try "make distclean" and a full rebuild before assuming
you've got a problem worth tracking down ...

regards, tom lane

#4Emmanuel Cecchet
manu@asterdata.com
In reply to: Tom Lane (#3)
1 attachment(s)
Re: Union test case broken in make check?

Tom Lane wrote:

Andrew Dunstan <andrew@dunslane.net> writes:

Emmanuel Cecchet wrote:

Is it just me or the union test case fails in CVS head?

The buildfarm is pretty much all green:
<http://www.pgbuildfarm.org/cgi-bin/show_status.pl&gt;
So it looks like it's you :-)

When in doubt, try "make distclean" and a full rebuild before assuming
you've got a problem worth tracking down ...

Well, I did:
1. make distclean
2. configure with CFLAGS=-O0 --enable-cassert --enable-debug
--without-perl --without-python --without-tcl --without-openssl
3. make (everything normal)
4. make check
And it still fails for me. I am attaching my regression.diffs if someone
thinks it is worth tracking down ...

Emmanuel

Attachments:

regression.diffstext/plain; name=regression.diffsDownload
*** /home/manu/workspace/PG-HEAD/src/test/regress/expected/union.out	2009-02-09 16:18:28.000000000 -0500
--- /home/manu/workspace/PG-HEAD/src/test/regress/results/union.out	2009-11-19 19:37:32.000000000 -0500
***************
*** 198,208 ****
    WHERE f1 BETWEEN 0 AND 1000000;
           five          
  -----------------------
-                -1004.3
-                 -34.84
-  -1.2345678901234e-200
                       0
                  123456
  (5 rows)
  
  SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
--- 198,208 ----
    WHERE f1 BETWEEN 0 AND 1000000;
           five          
  -----------------------
                       0
                  123456
+                 -34.84
+  -1.2345678901234e-200
+                -1004.3
  (5 rows)
  
  SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
***************
*** 263,278 ****
  SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
          q2        
  ------------------
-  4567890123456789
                123
  (2 rows)
  
  SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
          q2        
  ------------------
   4567890123456789
   4567890123456789
-               123
  (3 rows)
  
  SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
--- 263,278 ----
  SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
          q2        
  ------------------
                123
+  4567890123456789
  (2 rows)
  
  SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
          q2        
  ------------------
+               123
   4567890123456789
   4567890123456789
  (3 rows)
  
  SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
***************
*** 305,320 ****
  SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
          q1        
  ------------------
-  4567890123456789
                123
  (2 rows)
  
  SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
          q1        
  ------------------
   4567890123456789
   4567890123456789
-               123
  (3 rows)
  
  --
--- 305,320 ----
  SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
          q1        
  ------------------
                123
+  4567890123456789
  (2 rows)
  
  SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
          q1        
  ------------------
+               123
   4567890123456789
   4567890123456789
  (3 rows)
  
  --
***************
*** 341,348 ****
  SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
          q1         
  -------------------
-   4567890123456789
                 123
                 456
    4567890123456789
                 123
--- 341,348 ----
  SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
          q1         
  -------------------
                 123
+   4567890123456789
                 456
    4567890123456789
                 123
***************
*** 353,367 ****
  SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
          q1        
  ------------------
-  4567890123456789
                123
  (2 rows)
  
  (((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
          q1         
  -------------------
-   4567890123456789
                 123
                 456
    4567890123456789
                 123
--- 353,367 ----
  SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
          q1        
  ------------------
                123
+  4567890123456789
  (2 rows)
  
  (((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
          q1         
  -------------------
                 123
+   4567890123456789
                 456
    4567890123456789
                 123
***************
*** 416,423 ****
  SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
          q1        
  ------------------
-  4567890123456789
                123
  (2 rows)
  
  --
--- 416,423 ----
  SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
          q1        
  ------------------
                123
+  4567890123456789
  (2 rows)
  
  --

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

#5Kenneth Marshall
ktm@rice.edu
In reply to: Emmanuel Cecchet (#4)
Re: Union test case broken in make check?

Without an order by, the order is not defined. The answers are the
same but the test gives a false failure because of the lack of
ordering.

Regards,
Ken

Show quoted text

On Thu, Nov 19, 2009 at 07:54:30PM -0500, Emmanuel Cecchet wrote:

Tom Lane wrote:

Andrew Dunstan <andrew@dunslane.net> writes:

Emmanuel Cecchet wrote:

Is it just me or the union test case fails in CVS head?

The buildfarm is pretty much all green:
<http://www.pgbuildfarm.org/cgi-bin/show_status.pl&gt;
So it looks like it's you :-)

When in doubt, try "make distclean" and a full rebuild before assuming
you've got a problem worth tracking down ...

Well, I did:
1. make distclean
2. configure with CFLAGS=-O0 --enable-cassert --enable-debug --without-perl
--without-python --without-tcl --without-openssl
3. make (everything normal)
4. make check
And it still fails for me. I am attaching my regression.diffs if someone
thinks it is worth tracking down ...

Emmanuel

*** /home/manu/workspace/PG-HEAD/src/test/regress/expected/union.out	2009-02-09 16:18:28.000000000 -0500
--- /home/manu/workspace/PG-HEAD/src/test/regress/results/union.out	2009-11-19 19:37:32.000000000 -0500
***************
*** 198,208 ****
WHERE f1 BETWEEN 0 AND 1000000;
five          
-----------------------
-                -1004.3
-                 -34.84
-  -1.2345678901234e-200
0
123456
(5 rows)
SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
--- 198,208 ----
WHERE f1 BETWEEN 0 AND 1000000;
five          
-----------------------
0
123456
+                 -34.84
+  -1.2345678901234e-200
+                -1004.3
(5 rows)

SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
***************
*** 263,278 ****
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
q2
------------------
- 4567890123456789
123
(2 rows)

SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
q2
------------------
4567890123456789
4567890123456789
- 123
(3 rows)

SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
--- 263,278 ----
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
q2        
------------------
123
+  4567890123456789
(2 rows)

SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
q2
------------------
+ 123
4567890123456789
4567890123456789
(3 rows)

SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
***************
*** 305,320 ****
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
q1
------------------
- 4567890123456789
123
(2 rows)

SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
q1
------------------
4567890123456789
4567890123456789
- 123
(3 rows)

--
--- 305,320 ----
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
q1        
------------------
123
+  4567890123456789
(2 rows)

SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
q1
------------------
+ 123
4567890123456789
4567890123456789
(3 rows)

--
***************
*** 341,348 ****
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
-   4567890123456789
123
456
4567890123456789
123
--- 341,348 ----
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
123
+   4567890123456789
456
4567890123456789
123
***************
*** 353,367 ****
SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
q1        
------------------
-  4567890123456789
123
(2 rows)
(((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
-   4567890123456789
123
456
4567890123456789
123
--- 353,367 ----
SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
q1        
------------------
123
+  4567890123456789
(2 rows)

(((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
q1
-------------------
123
+ 4567890123456789
456
4567890123456789
123
***************
*** 416,423 ****
SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
q1
------------------
- 4567890123456789
123
(2 rows)

--
--- 416,423 ----
SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
q1        
------------------
123
+  4567890123456789
(2 rows)

--

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

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#6Emmanuel Cecchet
manu@asterdata.com
In reply to: Kenneth Marshall (#5)
Re: Union test case broken in make check?

Then I guess that we need to fix the test.

Emmanuel

Kenneth Marshall wrote:

Without an order by, the order is not defined. The answers are the
same but the test gives a false failure because of the lack of
ordering.

Regards,
Ken

On Thu, Nov 19, 2009 at 07:54:30PM -0500, Emmanuel Cecchet wrote:

Tom Lane wrote:

Andrew Dunstan <andrew@dunslane.net> writes:

Emmanuel Cecchet wrote:

Is it just me or the union test case fails in CVS head?

The buildfarm is pretty much all green:
<http://www.pgbuildfarm.org/cgi-bin/show_status.pl&gt;
So it looks like it's you :-)

When in doubt, try "make distclean" and a full rebuild before assuming
you've got a problem worth tracking down ...

Well, I did:
1. make distclean
2. configure with CFLAGS=-O0 --enable-cassert --enable-debug --without-perl
--without-python --without-tcl --without-openssl
3. make (everything normal)
4. make check
And it still fails for me. I am attaching my regression.diffs if someone
thinks it is worth tracking down ...

Emmanuel

*** /home/manu/workspace/PG-HEAD/src/test/regress/expected/union.out	2009-02-09 16:18:28.000000000 -0500
--- /home/manu/workspace/PG-HEAD/src/test/regress/results/union.out	2009-11-19 19:37:32.000000000 -0500
***************
*** 198,208 ****
WHERE f1 BETWEEN 0 AND 1000000;
five          
-----------------------
-                -1004.3
-                 -34.84
-  -1.2345678901234e-200
0
123456
(5 rows)
SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
--- 198,208 ----
WHERE f1 BETWEEN 0 AND 1000000;
five          
-----------------------
0
123456
+                 -34.84
+  -1.2345678901234e-200
+                -1004.3
(5 rows)

SELECT CAST(f1 AS char(4)) AS three FROM VARCHAR_TBL
***************
*** 263,278 ****
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
q2
------------------
- 4567890123456789
123
(2 rows)

SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
q2
------------------
4567890123456789
4567890123456789
- 123
(3 rows)

SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
--- 263,278 ----
SELECT q2 FROM int8_tbl INTERSECT SELECT q1 FROM int8_tbl;
q2        
------------------
123
+  4567890123456789
(2 rows)

SELECT q2 FROM int8_tbl INTERSECT ALL SELECT q1 FROM int8_tbl;
q2
------------------
+ 123
4567890123456789
4567890123456789
(3 rows)

SELECT q2 FROM int8_tbl EXCEPT SELECT q1 FROM int8_tbl ORDER BY 1;
***************
*** 305,320 ****
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
q1
------------------
- 4567890123456789
123
(2 rows)

SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
q1
------------------
4567890123456789
4567890123456789
- 123
(3 rows)

--
--- 305,320 ----
SELECT q1 FROM int8_tbl EXCEPT ALL SELECT q2 FROM int8_tbl;
q1        
------------------
123
+  4567890123456789
(2 rows)

SELECT q1 FROM int8_tbl EXCEPT ALL SELECT DISTINCT q2 FROM int8_tbl;
q1
------------------
+ 123
4567890123456789
4567890123456789
(3 rows)

--
***************
*** 341,348 ****
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
-   4567890123456789
123
456
4567890123456789
123
--- 341,348 ----
SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
123
+   4567890123456789
456
4567890123456789
123
***************
*** 353,367 ****
SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
q1        
------------------
-  4567890123456789
123
(2 rows)
(((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
q1         
-------------------
-   4567890123456789
123
456
4567890123456789
123
--- 353,367 ----
SELECT q1 FROM int8_tbl INTERSECT (((SELECT q2 FROM int8_tbl UNION ALL SELECT q2 FROM int8_tbl)));
q1        
------------------
123
+  4567890123456789
(2 rows)

(((SELECT q1 FROM int8_tbl INTERSECT SELECT q2 FROM int8_tbl))) UNION ALL SELECT q2 FROM int8_tbl;
q1
-------------------
123
+ 4567890123456789
456
4567890123456789
123
***************
*** 416,423 ****
SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
q1
------------------
- 4567890123456789
123
(2 rows)

--
--- 416,423 ----
SELECT q1 FROM int8_tbl EXCEPT (((SELECT q2 FROM int8_tbl ORDER BY q2 LIMIT 1)));
q1        
------------------
123
+  4567890123456789
(2 rows)

--

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

--
Emmanuel Cecchet
Aster Data
Web: http://www.asterdata.com

#7Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kenneth Marshall (#5)
Re: Union test case broken in make check?

Kenneth Marshall <ktm@rice.edu> writes:

Without an order by, the order is not defined.

Yeah, but with the same data and the same software it should generally
give the same result; as evidenced by the fact that these same
regression tests have worked for most people for years. There's
something odd happening on Emmanuel's machine. Maybe he's changed
the hashing algorithms or some planner cost parameters?

regards, tom lane

#8Emmanuel Cecchet
manu@asterdata.com
In reply to: Tom Lane (#7)
Re: Union test case broken in make check?

Tom Lane wrote:

Kenneth Marshall <ktm@rice.edu> writes:

Without an order by, the order is not defined.

Yeah, but with the same data and the same software it should generally
give the same result; as evidenced by the fact that these same
regression tests have worked for most people for years. There's
something odd happening on Emmanuel's machine. Maybe he's changed
the hashing algorithms or some planner cost parameters?

I did not change anything to Postgres and I can reproduce the problem
with a vanilla checkout of HEAD. However, I think I started to see the
problem since my last VMWare and OS upgrade (unfortunately I did both
simultaneously).

For info, I am using VMWare Workstation v6.5.3 build-185404 on Vista
6.0.60002 SP2. The VM is an Ubuntu 9.04 (Jaunty) with a 2.6.28-16 SMP
kernel on x86_64 (2 cores available for the VM, 4 cores total). gcc is
4.3.3 (Ubuntu 4.3.3-5ubuntu4).

Let me know if you need additional info about my setup.

Emmanuel

--
Emmanuel Cecchet
Aster Data
Web: http://www.asterdata.com