Thread: Union test case broken in make check?

Union test case broken in make check?

From
Emmanuel Cecchet
Date:
Hi,

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

manu

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



Re: Union test case broken in make check?

From
Andrew Dunstan
Date:

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>

So it looks like it's you :-)

cheers

andrew


Re: Union test case broken in make check?

From
Tom Lane
Date:
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>
> 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


Re: Union test case broken in make check?

From
Emmanuel Cecchet
Date:
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>
>> 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)

  --

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


Re: Union test case broken in make check?

From
Kenneth Marshall
Date:
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>
>>> 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



Re: Union test case broken in make check?

From
Emmanuel Cecchet
Date:
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>
>>>> 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



Re: Union test case broken in make check?

From
Tom Lane
Date:
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


Re: Union test case broken in make check?

From
Emmanuel Cecchet
Date:
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