diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/executor/execdebug.h | 15 | ||||
-rw-r--r-- | src/include/executor/execdefs.h | 28 | ||||
-rw-r--r-- | src/include/nodes/execnodes.h | 26 |
3 files changed, 34 insertions, 35 deletions
diff --git a/src/include/executor/execdebug.h b/src/include/executor/execdebug.h index 58a987107d..9a6969ecef 100644 --- a/src/include/executor/execdebug.h +++ b/src/include/executor/execdebug.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/executor/execdebug.h,v 1.26 2005/03/16 21:38:09 tgl Exp $ + * $PostgreSQL: pgsql/src/include/executor/execdebug.h,v 1.27 2005/05/13 21:20:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -258,17 +258,14 @@ extern int NIndexTupleInserted; #define MJ2_printf(s, p1, p2) printf(s, p1, p2) #define MJ_debugtup(slot) debugtup(slot, NULL) #define MJ_dump(state) ExecMergeTupleDump(state) +#define MJ_DEBUG_COMPARE(res) \ + MJ1_printf(" MJCompare() returns %d\n", (res)) #define MJ_DEBUG_QUAL(clause, res) \ MJ2_printf(" ExecQual(%s, econtext) returns %s\n", \ - CppAsString(clause), T_OR_F(res)); - -#define MJ_DEBUG_MERGE_COMPARE(qual, res) \ - MJ2_printf(" MergeCompare(mergeclauses, %s, ...) returns %s\n", \ - CppAsString(qual), T_OR_F(res)); - + CppAsString(clause), T_OR_F(res)) #define MJ_DEBUG_PROC_NODE(slot) \ MJ2_printf(" %s = ExecProcNode(...) returns %s\n", \ - CppAsString(slot), NULL_OR_TUPLE(slot)); + CppAsString(slot), NULL_OR_TUPLE(slot)) #else @@ -278,8 +275,8 @@ extern int NIndexTupleInserted; #define MJ2_printf(s, p1, p2) #define MJ_debugtup(slot) #define MJ_dump(state) +#define MJ_DEBUG_COMPARE(res) #define MJ_DEBUG_QUAL(clause, res) -#define MJ_DEBUG_MERGE_COMPARE(qual, res) #define MJ_DEBUG_PROC_NODE(slot) #endif /* EXEC_MERGEJOINDEBUG */ diff --git a/src/include/executor/execdefs.h b/src/include/executor/execdefs.h index 100049fdf8..e8ef7a47fd 100644 --- a/src/include/executor/execdefs.h +++ b/src/include/executor/execdefs.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/executor/execdefs.h,v 1.17 2004/12/31 22:03:29 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/executor/execdefs.h,v 1.18 2005/05/13 21:20:16 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -18,20 +18,16 @@ * Merge Join states * ---------------- */ -#define EXEC_MJ_INITIALIZE 1 -#define EXEC_MJ_JOINMARK 2 -#define EXEC_MJ_JOINTEST 3 -#define EXEC_MJ_JOINTUPLES 4 -#define EXEC_MJ_NEXTOUTER 5 -#define EXEC_MJ_TESTOUTER 6 -#define EXEC_MJ_NEXTINNER 7 -#define EXEC_MJ_SKIPOUTER_BEGIN 8 -#define EXEC_MJ_SKIPOUTER_TEST 9 -#define EXEC_MJ_SKIPOUTER_ADVANCE 10 -#define EXEC_MJ_SKIPINNER_BEGIN 11 -#define EXEC_MJ_SKIPINNER_TEST 12 -#define EXEC_MJ_SKIPINNER_ADVANCE 13 -#define EXEC_MJ_ENDOUTER 14 -#define EXEC_MJ_ENDINNER 15 +#define EXEC_MJ_INITIALIZE_OUTER 1 +#define EXEC_MJ_INITIALIZE_INNER 2 +#define EXEC_MJ_JOINTUPLES 3 +#define EXEC_MJ_NEXTOUTER 4 +#define EXEC_MJ_TESTOUTER 5 +#define EXEC_MJ_NEXTINNER 6 +#define EXEC_MJ_SKIP_TEST 7 +#define EXEC_MJ_SKIPOUTER_ADVANCE 8 +#define EXEC_MJ_SKIPINNER_ADVANCE 9 +#define EXEC_MJ_ENDOUTER 10 +#define EXEC_MJ_ENDINNER 11 #endif /* EXECDEFS_H */ diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 2d74d25a36..9d47c17ad2 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; /* ---------------- |