Regression Failure: CURRENT SOURCES/union&join

Started by Larry Rosenmanover 22 years ago3 messageshackers
Jump to latest
#1Larry Rosenman
ler@lerctr.org

Here ya go:
test union ... FAILED
test case ... ok
test join ... FAILED

*** ./expected/union.out	Thu Oct  9 20:49:31 2003
--- ./results/union.out	Fri Oct 31 15:15:50 2003
***************
*** 106,112 ****
   two
  -----
   1.1
!    2
  (2 rows)
  SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2;
--- 106,112 ----
   two
  -----
   1.1
!  2.0
  (2 rows)

SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2;

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

*** ./expected/join.out	Thu Oct  9 20:49:31 2003
--- ./results/join.out	Fri Oct 31 15:15:51 2003
***************
*** 1732,1739 ****
       | 6 | 6 | six   |
       | 7 | 7 | seven |
       | 8 | 8 | eight |
-      |   |   | null  |
       |   | 0 | zero  |
  (13 rows)
  SELECT '' AS "xxx", *
--- 1732,1739 ----
       | 6 | 6 | six   |
       | 7 | 7 | seven |
       | 8 | 8 | eight |
       |   | 0 | zero  |
+      |   |   | null  |
  (13 rows)

SELECT '' AS "xxx", *
***************
*** 1752,1759 ****
| 6 | 6 | six |
| 7 | 7 | seven |
| 8 | 8 | eight |
- | | | null |
| | 0 | zero |
(13 rows)

  SELECT '' AS "xxx", *
--- 1752,1759 ----
       | 6 | 6 | six   |
       | 7 | 7 | seven |
       | 8 | 8 | eight |
       |   | 0 | zero  |
+      |   |   | null  |
  (13 rows)
  SELECT '' AS "xxx", *
***************
*** 1793,1800 ****
  -----+---+---+-------+----
       | 0 |   | zero  |
       | 1 | 4 | one   | -1
-      | 2 | 3 | two   |  2
       | 2 | 3 | two   |  4
       | 3 | 2 | three | -3
       | 4 | 1 | four  |
       | 5 | 0 | five  | -5
--- 1793,1800 ----
  -----+---+---+-------+----
       | 0 |   | zero  |
       | 1 | 4 | one   | -1
       | 2 | 3 | two   |  4
+      | 2 | 3 | two   |  2
       | 3 | 2 | three | -3
       | 4 | 1 | four  |
       | 5 | 0 | five  | -5
***************
*** 1815,1822 ****
  -----+---+---+-------+----
       | 0 |   | zero  |
       | 1 | 4 | one   | -1
-      | 2 | 3 | two   |  2
       | 2 | 3 | two   |  4
       | 3 | 2 | three | -3
       | 4 | 1 | four  |
       | 5 | 0 | five  | -5
--- 1815,1822 ----
  -----+---+---+-------+----
       | 0 |   | zero  |
       | 1 | 4 | one   | -1
       | 2 | 3 | two   |  4
+      | 2 | 3 | two   |  2
       | 3 | 2 | three | -3
       | 4 | 1 | four  |
       | 5 | 0 | five  | -5

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

--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Larry Rosenman (#1)
Re: Regression Failure: CURRENT SOURCES/union&join

Larry Rosenman <ler@lerctr.org> writes:

*** ./expected/union.out	Thu Oct  9 20:49:31 2003
--- ./results/union.out	Fri Oct 31 15:15:50 2003
***************
*** 106,112 ****
two
-----
1.1
!    2
(2 rows)
SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2;
--- 106,112 ----
two
-----
1.1
!  2.0
(2 rows)

I think this is just a platform-specific difference in the behavior of
qsort(). Numeric "2" and "2.0" print differently, but they are equal
according to the comparison operators, so it's mostly luck of the draw
which one is selected for output.

The original coding of this regression test expected that these values
would be interpreted as float8, wherein there is no difference between
"2" and "2.0". I'm kind of inclined to change the test back to using
float8 so we don't see more of these reports.

*** ./expected/join.out	Thu Oct  9 20:49:31 2003
--- ./results/join.out	Fri Oct 31 15:15:51 2003
[ row ordering differences ]

This also looks like platform-specific behavior --- the differences are
in the sort ordering of rows with equal keys.

regards, tom lane

#3Larry Rosenman
ler@lerctr.org
In reply to: Tom Lane (#2)
Re: Regression Failure: CURRENT SOURCES/union&join

--On Friday, October 31, 2003 16:49:17 -0500 Tom Lane <tgl@sss.pgh.pa.us>
wrote:

Larry Rosenman <ler@lerctr.org> writes:

*** ./expected/union.out	Thu Oct  9 20:49:31 2003
--- ./results/union.out	Fri Oct 31 15:15:50 2003
***************
*** 106,112 ****
two
-----
1.1
!    2
(2 rows)
SELECT 1.1 AS three UNION SELECT 2 UNION ALL SELECT 2;
--- 106,112 ----
two
-----
1.1
!  2.0
(2 rows)

I think this is just a platform-specific difference in the behavior of
qsort(). Numeric "2" and "2.0" print differently, but they are equal
according to the comparison operators, so it's mostly luck of the draw
which one is selected for output.

The original coding of this regression test expected that these values
would be interpreted as float8, wherein there is no difference between
"2" and "2.0". I'm kind of inclined to change the test back to using
float8 so we don't see more of these reports.

*** ./expected/join.out	Thu Oct  9 20:49:31 2003
--- ./results/join.out	Fri Oct 31 15:15:51 2003
[ row ordering differences ]

This also looks like platform-specific behavior --- the differences are
in the sort ordering of rows with equal keys.

OK. This makes sense. SCO made improvements in the qsort() routine in
an update I applied Wednesday. (And, it had to do with equal key
processing).

137. The qsort() routine was reworked to increase performance, especially
when presented with lots of "equal" data items.
fz527984 fz528071

Modulo these diffs, we now pass all tests on UnixWare.

Any chance of the patch I posted to -patches being applied for 7.4?

LER

regards, tom lane

--
Larry Rosenman http://www.lerctr.org/~ler
Phone: +1 972-414-9812 E-Mail: ler@lerctr.org
US Mail: 1905 Steamboat Springs Drive, Garland, TX 75044-6749