From 780992316fc8ad4732998f00b2489f0730156ea0 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 13 Dec 2000 23:45:46 +0000
Subject: [PATCH] Fix thinko for case of outer join where inner table is empty:
 should output first outer tuple before advancing...

---
 src/backend/executor/nodeMergejoin.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c
index dbeaa7a2a53..e7e8ebb1c59 100644
--- a/src/backend/executor/nodeMergejoin.c
+++ b/src/backend/executor/nodeMergejoin.c
@@ -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. */
-- 
GitLab