Thread: Union test case broken in make check?
Hi, Is it just me or the union test case fails in CVS head? manu -- Emmanuel Cecchet Aster Data Web: http://www.asterdata.com
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
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
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) -- ======================================================================
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
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
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
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