Ensure consistent results when FormSortKeys fails to find
authorTom Lane
Thu, 3 Jun 1999 03:17:37 +0000 (03:17 +0000)
committerTom Lane
Thu, 3 Jun 1999 03:17:37 +0000 (03:17 +0000)
all the expected keys (it was returning uninitialized memory).

src/backend/executor/nodeSort.c

index 13a05948e70fe34c4dd0a3ff77158ab89ff17e8e..1ca99c1bef70adaa78f41738861db0597230902b 100644 (file)
@@ -7,11 +7,12 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSort.c,v 1.18 1999/02/13 23:15:27 momjian Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/executor/nodeSort.c,v 1.19 1999/06/03 03:17:37 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
 #include "postgres.h"
+#include 
 
 #include "executor/executor.h"
 #include "executor/execdebug.h"
@@ -58,6 +59,7 @@ FormSortKeys(Sort *sortnode)
    if (keycount <= 0)
        elog(ERROR, "FormSortKeys: keycount <= 0");
    sortkeys = (ScanKey) palloc(keycount * sizeof(ScanKeyData));
+   MemSet((char *) sortkeys, 0, keycount * sizeof(ScanKeyData));
 
    /* ----------------
     *  form each scan key from the resdom info in the target list
@@ -72,7 +74,7 @@ FormSortKeys(Sort *sortnode)
        reskey = resdom->reskey;
        reskeyop = resdom->reskeyop;
 
-       if (reskey > 0)
+       if (reskey > 0)         /* ignore TLEs that are not sort keys */
        {
            ScanKeyEntryInitialize(&sortkeys[reskey - 1],
                                   0,