diff --git a/src/backend/executor/nodeMergejoin.c b/src/backend/executor/nodeMergejoin.c index 6988a6c6429..a049bc4ae05 100644 --- a/src/backend/executor/nodeMergejoin.c +++ b/src/backend/executor/nodeMergejoin.c @@ -893,11 +893,10 @@ ExecMergeJoin(PlanState *pstate) if (compareResult == 0) node->mj_JoinState = EXEC_MJ_JOINTUPLES; - else - { - Assert(compareResult < 0); + else if (compareResult < 0) node->mj_JoinState = EXEC_MJ_NEXTOUTER; - } + else /* compareResult > 0 should not happen */ + elog(ERROR, "mergejoin input data is out of order"); break; case MJEVAL_NONMATCHABLE: @@ -1087,7 +1086,7 @@ ExecMergeJoin(PlanState *pstate) node->mj_JoinState = EXEC_MJ_JOINTUPLES; } - else + else if (compareResult > 0) { /* ---------------- * if the new outer tuple didn't match the marked inner @@ -1106,7 +1105,6 @@ ExecMergeJoin(PlanState *pstate) * no more inners, no more matches are possible. * ---------------- */ - Assert(compareResult > 0); innerTupleSlot = node->mj_InnerTupleSlot; /* reload comparison data for current inner */ @@ -1140,6 +1138,8 @@ ExecMergeJoin(PlanState *pstate) return NULL; } } + else /* compareResult < 0 should not happen */ + elog(ERROR, "mergejoin input data is out of order"); break; /*----------------------------------------------------------