From: Jeroen van Vianen
authorMarc G. Fournier
Sun, 25 Jan 1998 05:18:34 +0000 (05:18 +0000)
committerMarc G. Fournier
Sun, 25 Jan 1998 05:18:34 +0000 (05:18 +0000)
This patch solves the problem with multiple order by columns, with the
first one having NULL values.

src/backend/utils/sort/psort.c

index b00ecaf42dedffc1dabf0081712e7f89cfad2b73..d6b53a54ffed52f66e25da6993b2e88142d22529 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.33 1998/01/25 05:14:49 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/utils/sort/Attic/psort.c,v 1.34 1998/01/25 05:18:34 scrappy Exp $
  *
  * NOTES
  *     Sorts the first relation into the second relation.
@@ -1094,7 +1094,7 @@ _psort_cmp (HeapTuple *ltup, HeapTuple *rtup)
     int        result = 0;
     bool   isnull1, isnull2;
     
-    while ( nkey < PsortNkeys && !result )
+    for (nkey = 0; nkey < PsortNkeys && !result; nkey++ )
     {
        lattr = heap_getattr(*ltup, InvalidBuffer,
                     PsortKeys[nkey].sk_attno, 
@@ -1106,14 +1106,13 @@ _psort_cmp (HeapTuple *ltup, HeapTuple *rtup)
                     &isnull2);
        if ( isnull1 )
        {
-           if ( isnull2 )
-               return (0);
-           return(1);
+           if ( !isnull2 )
+               result = 1;
        }
        else if ( isnull2 )
-           return (-1);
+           result = -1;
        
-       if (PsortKeys[nkey].sk_flags & SK_COMMUTE)
+       else if (PsortKeys[nkey].sk_flags & SK_COMMUTE)
        {
            if (!(result = -(long) (*fmgr_faddr(&PsortKeys[nkey].sk_func)) (rattr, lattr)))
            result = (long) (*fmgr_faddr(&PsortKeys[nkey].sk_func)) (lattr, rattr);