diff options
Diffstat (limited to 'src/include/nodes/execnodes.h')
-rw-r--r-- | src/include/nodes/execnodes.h | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 2d74d25a361..9d47c17ad23 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.131 2005/05/05 03:37:23 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/execnodes.h,v 1.132 2005/05/13 21:20:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1028,24 +1028,28 @@ typedef struct NestLoopState /* ---------------- * MergeJoinState information * - * OuterSkipQual outerKey1 < innerKey1 ... - * InnerSkipQual outerKey1 > innerKey1 ... - * JoinState current "state" of join. see executor.h + * NumClauses number of mergejoinable join clauses + * Clauses info for each mergejoinable clause + * JoinState current "state" of join. see execdefs.h * MatchedOuter true if found a join match for current outer tuple * MatchedInner true if found a join match for current inner tuple - * OuterTupleSlot pointer to slot in tuple table for cur outer tuple - * InnerTupleSlot pointer to slot in tuple table for cur inner tuple - * MarkedTupleSlot pointer to slot in tuple table for marked tuple + * OuterTupleSlot slot in tuple table for cur outer tuple + * InnerTupleSlot slot in tuple table for cur inner tuple + * MarkedTupleSlot slot in tuple table for marked tuple * NullOuterTupleSlot prepared null tuple for right outer joins * NullInnerTupleSlot prepared null tuple for left outer joins + * OuterEContext workspace for computing outer tuple's join values + * InnerEContext workspace for computing inner tuple's join values * ---------------- */ +/* private in nodeMergejoin.c: */ +typedef struct MergeJoinClauseData *MergeJoinClause; + typedef struct MergeJoinState { JoinState js; /* its first field is NodeTag */ - List *mergeclauses; /* list of ExprState nodes */ - List *mj_OuterSkipQual; /* list of ExprState nodes */ - List *mj_InnerSkipQual; /* list of ExprState nodes */ + int mj_NumClauses; + MergeJoinClause mj_Clauses; /* array of length mj_NumClauses */ int mj_JoinState; bool mj_MatchedOuter; bool mj_MatchedInner; @@ -1054,6 +1058,8 @@ typedef struct MergeJoinState TupleTableSlot *mj_MarkedTupleSlot; TupleTableSlot *mj_NullOuterTupleSlot; TupleTableSlot *mj_NullInnerTupleSlot; + ExprContext *mj_OuterEContext; + ExprContext *mj_InnerEContext; } MergeJoinState; /* ---------------- |