On Thu, Jan 06, 2005 at 02:05:17PM -0500, Tom Lane wrote:
> Marko Kreen <marko@l-t.ee> writes:
> > I have not looked at pg_regress much and had not noticed the
> > 'unconditional alternative' feature.  I only thought of the
> > resultmap alternative.  Unconditionally adding FastFPE results
> > may even be good, so that FastFPE can pass on any platform.
> 
> No, it would be bad, because on most other platforms this behavior
> is probably a bug, and altering the tests like that would mask the bug.
> 
> The unconditional-acceptance thing has to be used with great caution;
> preferably only for issues that we expect on many platforms (such as
> locale dependencies).

How about the following then: let pg_regress.sh accept multiple
choices from resultmap.

-- 
marko

Index: src/test/regress/pg_regress.sh
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/pg_regress.sh,v
retrieving revision 1.51
diff -u -c -r1.51 pg_regress.sh
*** src/test/regress/pg_regress.sh      12 Dec 2004 15:34:15 -0000      1.51
--- src/test/regress/pg_regress.sh      6 Jan 2005 19:30:52 -0000
***************
*** 669,681 ****
          # to a system-specific expected file.
          # There shouldn't be multiple matches, but take the last if there are.
  
!         EXPECTED="$inputdir/expected/${name}"
          for LINE in $SUBSTLIST
          do
              if [ `expr "$LINE" : "$name="` -ne 0 ]
              then
!                 SUBST=`echo "$LINE" | sed 's/^.*=//'`
!                 EXPECTED="$inputdir/expected/${SUBST}"
              fi
          done
  
--- 669,680 ----
          # to a system-specific expected file.
          # There shouldn't be multiple matches, but take the last if there are.
  
!         SUBST_VALS="${name}"
          for LINE in $SUBSTLIST
          do
              if [ `expr "$LINE" : "$name="` -ne 0 ]
              then
!                 SUBST_VALS=`echo "$LINE" | sed -e 's/^.*=//' -e 's/,/ /g'`
              fi
          done
  
***************
*** 684,701 ****
  
          bestfile=
          bestdiff=
!         result=2
!         for thisfile in $EXPECTED.out ${EXPECTED}_[0-9].out; do
!             [ ! -r "$thisfile" ] && continue
!             diff $DIFFFLAGS $thisfile $outputdir/results/${name}.out 
>/dev/null 2>&1
!             result=$?
              case $result in
                  0) break;;
-                 1) thisdiff=`diff $DIFFFLAGS $thisfile 
$outputdir/results/${name}.out | wc -l`
-                    if [ -z "$bestdiff" ] || [ "$thisdiff" -lt "$bestdiff" ]; 
then
-                        bestdiff=$thisdiff; bestfile=$thisfile
-                    fi
-                    continue;;
                  2) break;;
              esac
          done
--- 683,707 ----
  
          bestfile=
          bestdiff=
!         for SUBST in $SUBST_VALS; do
!             EXPECTED="$inputdir/expected/${SUBST}"
!             result=2
!             for thisfile in $EXPECTED.out ${EXPECTED}_[0-9].out; do
!                 [ ! -r "$thisfile" ] && continue
!                 diff $DIFFFLAGS $thisfile $outputdir/results/${name}.out 
>/dev/null 2>&1
!                 result=$?
!                 case $result in
!                     0) break;;
!                     1) thisdiff=`diff $DIFFFLAGS $thisfile 
$outputdir/results/${name}.out | wc -l`
!                        if [ -z "$bestdiff" ] || [ "$thisdiff" -lt "$bestdiff" 
]; then
!                            bestdiff=$thisdiff; bestfile=$thisfile
!                        fi
!                        continue;;
!                     2) break;;
!                 esac
!             done
              case $result in
                  0) break;;
                  2) break;;
              esac
          done
Index: src/test/regress/resultmap
===================================================================
RCS file: /projects/cvsroot/pgsql/src/test/regress/resultmap,v
retrieving revision 1.79
diff -u -c -r1.79 resultmap
*** src/test/regress/resultmap  23 Dec 2004 03:49:40 -0000      1.79
--- src/test/regress/resultmap  6 Jan 2005 19:30:52 -0000
***************
*** 9,11 ****
--- 9,12 ----
  float8/i.86-pc-cygwin=float8-small-is-zero
  int8/.*-qnx=int8-exp-three-digits
  int8/i.86-pc-mingw32=int8-exp-three-digits
+ point/arm.*-linux-gnu=point,point-fastfpe
*** /dev/null   2005-01-04 07:18:19.000000000 +0200
--- src/test/regress/expected/point-fastfpe.out 2005-01-06 19:58:45.000000000 
+0200
***************
*** 0 ****
--- 1,225 ----
+ --
+ -- POINT
+ --
+ CREATE TABLE POINT_TBL(f1 point);
+ INSERT INTO POINT_TBL(f1) VALUES ('(0.0,0.0)');
+ INSERT INTO POINT_TBL(f1) VALUES ('(-10.0,0.0)');
+ INSERT INTO POINT_TBL(f1) VALUES ('(-3.0,4.0)');
+ INSERT INTO POINT_TBL(f1) VALUES ('(5.1, 34.5)');
+ INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)');
+ -- bad format points 
+ INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf');
+ ERROR:  invalid input syntax for type point: "asdfasdf"
+ INSERT INTO POINT_TBL(f1) VALUES ('10.0,10.0');
+ INSERT INTO POINT_TBL(f1) VALUES ('(10.0 10.0)');
+ ERROR:  invalid input syntax for type point: "(10.0 10.0)"
+ INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
+ ERROR:  invalid input syntax for type point: "(10.0,10.0"
+ SELECT '' AS six, POINT_TBL.*;
+  six |     f1     
+ -----+------------
+      | (0,0)
+      | (-10,0)
+      | (-3,4)
+      | (5.1,34.5)
+      | (-5,-12)
+      | (10,10)
+ (6 rows)
+ 
+ -- left of 
+ SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
+  three |    f1    
+ -------+----------
+        | (-10,0)
+        | (-3,4)
+        | (-5,-12)
+ (3 rows)
+ 
+ -- right of 
+ SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
+  three |    f1    
+ -------+----------
+        | (-10,0)
+        | (-3,4)
+        | (-5,-12)
+ (3 rows)
+ 
+ -- above 
+ SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >^ p.f1;
+  one |    f1    
+ -----+----------
+      | (-5,-12)
+ (1 row)
+ 
+ -- below 
+ SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <^ '(0.0, 0.0)';
+  one |    f1    
+ -----+----------
+      | (-5,-12)
+ (1 row)
+ 
+ -- equal 
+ SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
+  one |     f1     
+ -----+------------
+      | (5.1,34.5)
+ (1 row)
+ 
+ -- point in box 
+ SELECT '' AS three, p.* FROM POINT_TBL p
+    WHERE p.f1 @ box '(0,0,100,100)';
+  three |     f1     
+ -------+------------
+        | (0,0)
+        | (5.1,34.5)
+        | (10,10)
+ (3 rows)
+ 
+ SELECT '' AS three, p.* FROM POINT_TBL p
+    WHERE not p.f1 @ box '(0,0,100,100)';
+  three |    f1    
+ -------+----------
+        | (-10,0)
+        | (-3,4)
+        | (-5,-12)
+ (3 rows)
+ 
+ SELECT '' AS two, p.* FROM POINT_TBL p
+    WHERE p.f1 @ path '[(0,0),(-10,0),(-10,10)]';
+  two |   f1    
+ -----+---------
+      | (0,0)
+      | (-10,0)
+ (2 rows)
+ 
+ SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist
+    FROM POINT_TBL p
+    ORDER BY dist;
+  six |     f1     |       dist       
+ -----+------------+------------------
+      | (0,0)      |                0
+      | (-3,4)     |                5
+      | (-10,0)    |               10
+      | (-5,-12)   |               13
+      | (10,10)    | 14.1421356237309
+      | (5.1,34.5) | 34.8749193547455
+ (6 rows)
+ 
+ SET geqo TO 'off';
+ SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS 
dist
+    FROM POINT_TBL p1, POINT_TBL p2
+    ORDER BY dist, point1 using <<, point2 using <<;
+  thirtysix |   point1   |   point2   |       dist       
+ -----------+------------+------------+------------------
+            | (-10,0)    | (-10,0)    |                0
+            | (-5,-12)   | (-5,-12)   |                0
+            | (-3,4)     | (-3,4)     |                0
+            | (0,0)      | (0,0)      |                0
+            | (5.1,34.5) | (5.1,34.5) |                0
+            | (10,10)    | (10,10)    |                0
+            | (-3,4)     | (0,0)      |                5
+            | (0,0)      | (-3,4)     |                5
+            | (-10,0)    | (-3,4)     | 8.06225774829855
+            | (-3,4)     | (-10,0)    | 8.06225774829855
+            | (-10,0)    | (0,0)      |               10
+            | (0,0)      | (-10,0)    |               10
+            | (-10,0)    | (-5,-12)   |               13
+            | (-5,-12)   | (-10,0)    |               13
+            | (-5,-12)   | (0,0)      |               13
+            | (0,0)      | (-5,-12)   |               13
+            | (0,0)      | (10,10)    | 14.1421356237309
+            | (10,10)    | (0,0)      | 14.1421356237309
+            | (-3,4)     | (10,10)    | 14.3178210632764
+            | (10,10)    | (-3,4)     | 14.3178210632764
+            | (-5,-12)   | (-3,4)     | 16.1245154965971
+            | (-3,4)     | (-5,-12)   | 16.1245154965971
+            | (-10,0)    | (10,10)    | 22.3606797749979
+            | (10,10)    | (-10,0)    | 22.3606797749979
+            | (5.1,34.5) | (10,10)    | 24.9851956166046
+            | (10,10)    | (5.1,34.5) | 24.9851956166046
+            | (-5,-12)   | (10,10)    | 26.6270539113887
+            | (10,10)    | (-5,-12)   | 26.6270539113887
+            | (-3,4)     | (5.1,34.5) | 31.5572495632937
+            | (5.1,34.5) | (-3,4)     | 31.5572495632937
+            | (0,0)      | (5.1,34.5) | 34.8749193547455
+            | (5.1,34.5) | (0,0)      | 34.8749193547455
+            | (-10,0)    | (5.1,34.5) | 37.6597928831267
+            | (5.1,34.5) | (-10,0)    | 37.6597928831267
+            | (-5,-12)   | (5.1,34.5) | 47.5842410888311
+            | (5.1,34.5) | (-5,-12)   | 47.5842410888311
+ (36 rows)
+ 
+ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
+    FROM POINT_TBL p1, POINT_TBL p2
+    WHERE (p1.f1 <-> p2.f1) > 3;
+  thirty |   point1   |   point2   
+ --------+------------+------------
+         | (0,0)      | (-10,0)
+         | (0,0)      | (-3,4)
+         | (0,0)      | (5.1,34.5)
+         | (0,0)      | (-5,-12)
+         | (0,0)      | (10,10)
+         | (-10,0)    | (0,0)
+         | (-10,0)    | (-3,4)
+         | (-10,0)    | (5.1,34.5)
+         | (-10,0)    | (-5,-12)
+         | (-10,0)    | (10,10)
+         | (-3,4)     | (0,0)
+         | (-3,4)     | (-10,0)
+         | (-3,4)     | (5.1,34.5)
+         | (-3,4)     | (-5,-12)
+         | (-3,4)     | (10,10)
+         | (5.1,34.5) | (0,0)
+         | (5.1,34.5) | (-10,0)
+         | (5.1,34.5) | (-3,4)
+         | (5.1,34.5) | (-5,-12)
+         | (5.1,34.5) | (10,10)
+         | (-5,-12)   | (0,0)
+         | (-5,-12)   | (-10,0)
+         | (-5,-12)   | (-3,4)
+         | (-5,-12)   | (5.1,34.5)
+         | (-5,-12)   | (10,10)
+         | (10,10)    | (0,0)
+         | (10,10)    | (-10,0)
+         | (10,10)    | (-3,4)
+         | (10,10)    | (5.1,34.5)
+         | (10,10)    | (-5,-12)
+ (30 rows)
+ 
+ -- put distance result into output to allow sorting with GEQ optimizer - tgl 
97/05/10
+ SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS 
distance
+    FROM POINT_TBL p1, POINT_TBL p2
+    WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
+    ORDER BY distance, point1 using <<, point2 using <<;
+  fifteen |   point1   |   point2   |     distance     
+ ---------+------------+------------+------------------
+          | (-3,4)     | (0,0)      |                5
+          | (-10,0)    | (-3,4)     | 8.06225774829855
+          | (-10,0)    | (0,0)      |               10
+          | (-10,0)    | (-5,-12)   |               13
+          | (-5,-12)   | (0,0)      |               13
+          | (0,0)      | (10,10)    | 14.1421356237309
+          | (-3,4)     | (10,10)    | 14.3178210632764
+          | (-5,-12)   | (-3,4)     | 16.1245154965971
+          | (-10,0)    | (10,10)    | 22.3606797749979
+          | (5.1,34.5) | (10,10)    | 24.9851956166046
+          | (-5,-12)   | (10,10)    | 26.6270539113887
+          | (-3,4)     | (5.1,34.5) | 31.5572495632937
+          | (0,0)      | (5.1,34.5) | 34.8749193547455
+          | (-10,0)    | (5.1,34.5) | 37.6597928831267
+          | (-5,-12)   | (5.1,34.5) | 47.5842410888311
+ (15 rows)
+ 
+ -- put distance result into output to allow sorting with GEQ optimizer - tgl 
97/05/10
+ SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS 
distance
+    FROM POINT_TBL p1, POINT_TBL p2 
+    WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 >^ p2.f1
+    ORDER BY distance;
+  three |   point1   |  point2  |     distance     
+ -------+------------+----------+------------------
+        | (-3,4)     | (0,0)    |                5
+        | (-10,0)    | (-5,-12) |               13
+        | (5.1,34.5) | (10,10)  | 24.9851956166046
+ (3 rows)
+ 
+ RESET geqo;
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to