Fix thinko for case of outer join where inner table is empty: should
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 13 Dec 2000 23:45:46 +0000 (23:45 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 13 Dec 2000 23:45:46 +0000 (23:45 +0000)
output first outer tuple before advancing...

src/backend/executor/nodeMergejoin.c

index dbeaa7a2a533106360fd0b035b26d161632ce3da..e7e8ebb1c59d4d30e6f003174b5281b5bc504388 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.39 2000/11/16 22:30:22 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/executor/nodeMergejoin.c,v 1.40 2000/12/13 23:45:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -537,12 +537,13 @@ ExecMergeJoin(MergeJoin *node)
                                        if (doFillOuter)
                                        {
                                                /*
-                                                * Need to emit left-join tuples for remaining
-                                                * outer tuples.  We set MatchedOuter = true to
-                                                * force the ENDINNER state to advance outer.
+                                                * Need to emit left-join tuples for all outer tuples,
+                                                * including the one we just fetched.  We set
+                                                * MatchedOuter = false to force the ENDINNER state
+                                                * to emit this tuple before advancing outer.
                                                 */
                                                mergestate->mj_JoinState = EXEC_MJ_ENDINNER;
-                                               mergestate->mj_MatchedOuter = true;
+                                               mergestate->mj_MatchedOuter = false;
                                                break;
                                        }
                                        /* Otherwise we're done. */