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 fc416d5defa3b1cb7e4a43cbda7076822b06e371..9b7dc37d8f20ce9ceff72562a7956fead03384dd 100644 (file)
@@ -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. */