Fix thinko for case of outer join where inner table is empty: should
authorTom Lane
Wed, 13 Dec 2000 23:45:46 +0000 (23:45 +0000)
committerTom Lane
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. */