head 1.39; access; symbols Version_2_1:1.27 Version_2:1.18 C_Demo_1:1.6 Retrieve_x_1:1.3; locks; strict; comment @ * @; 1.39 date 92.03.31.23.15.35; author mer; state Exp; branches; next 1.38; 1.38 date 92.01.21.16.40.04; author hong; state Exp; branches; next 1.37; 1.37 date 91.11.17.20.59.34; author mer; state Exp; branches; next 1.36; 1.36 date 91.11.07.20.21.04; author glass; state Exp; branches; next 1.35; 1.35 date 91.09.30.10.13.18; author glass; state Exp; branches; next 1.34; 1.34 date 91.08.15.17.48.23; author caetta; state Exp; branches; next 1.33; 1.33 date 91.08.08.15.34.36; author hong; state Exp; branches; next 1.32; 1.32 date 91.07.17.23.50.35; author hong; state Exp; branches; next 1.31; 1.31 date 91.06.18.23.28.14; author cimarron; state Exp; branches; next 1.30; 1.30 date 91.04.24.12.12.29; author hong; state Exp; branches; next 1.29; 1.29 date 91.04.18.11.38.04; author hong; state Exp; branches; next 1.28; 1.28 date 91.04.08.18.09.01; author sp; state Exp; branches; next 1.27; 1.27 date 91.02.05.15.45.20; author sp; state Exp; branches; next 1.26; 1.26 date 90.11.10.12.28.01; author hong; state Exp; branches; next 1.25; 1.25 date 90.11.07.12.01.59; author hong; state Exp; branches; next 1.24; 1.24 date 90.09.06.14.16.04; author hong; state Exp; branches; next 1.23; 1.23 date 90.08.22.10.50.01; author choi; state Exp; branches; next 1.22; 1.22 date 90.08.18.17.14.52; author sp; state Exp; branches; next 1.21; 1.21 date 90.08.18.00.40.26; author cimarron; state Exp; branches; next 1.20; 1.20 date 90.08.17.13.33.35; author hong; state Exp; branches; next 1.19; 1.19 date 90.08.13.19.34.54; author sp; state Exp; branches; next 1.18; 1.18 date 90.06.22.11.25.17; author hong; state Version_2; branches; next 1.17; 1.17 date 90.06.13.01.51.03; author hong; state Exp; branches; next 1.16; 1.16 date 90.05.25.13.04.35; author cimarron; state Exp; branches; next 1.15; 1.15 date 90.03.13.19.18.51; author ong; state Exp; branches; next 1.14; 1.14 date 90.01.31.18.40.59; author cimarron; state Exp; branches; next 1.13; 1.13 date 90.01.31.17.38.30; author cimarron; state Exp; branches; next 1.12; 1.12 date 90.01.30.16.21.48; author jamesb; state Exp; branches; next 1.11; 1.11 date 90.01.24.17.21.33; author mao; state Exp; branches; next 1.10; 1.10 date 89.12.11.17.13.15; author jamesb; state Exp; branches; next 1.9; 1.9 date 89.11.02.18.05.51; author cimarron; state Exp; branches; next 1.8; 1.8 date 89.10.17.13.45.10; author cimarron; state Exp; branches; next 1.7; 1.7 date 89.09.18.08.02.02; author cimarron; state Exp; branches; next 1.6; 1.6 date 89.09.05.17.10.13; author mao; state C_Demo_1; branches; next 1.5; 1.5 date 89.08.09.17.57.05; author cimarron; state Exp; branches; next 1.4; 1.4 date 89.08.09.17.45.34; author goh; state Exp; branches; next 1.3; 1.3 date 89.08.01.16.17.41; author goh; state Exp; branches; next 1.2; 1.2 date 89.07.31.11.22.24; author goh; state Exp; branches; next 1.1; 1.1 date 89.07.20.09.28.08; author goh; state Exp; branches; next ; desc @@ 1.39 log @change accessor functions into macros @ text @/* ---------------------------------------------------------------- * FILE * plannodes.h * * DESCRIPTION * definitions for query plan nodes * * NOTES * this file is listed in lib/Gen/inherits.sh and in the * INH_SRC list in conf/inh.mk and is used to generate the * obj/lib/C/plannodes.c file * * For explanations of what the structure members mean, * see ~postgres/doc/query-tree.t. * * IDENTIFICATION * $Header: /users/mer/pg/src/lib/H/nodes/RCS/plannodes.h,v 1.38 1992/01/21 16:40:04 hong Exp mer $ * ---------------------------------------------------------------- */ #ifndef PlanNodesIncluded #define PlanNodesIncluded #include "tmp/postgres.h" #include "nodes/nodes.h" /* bogus inheritance system */ #include "nodes/pg_lisp.h" #include "nodes/primnodes.h" #include "nodes/plannodes.gen" #include "rules/prs2stub.h" /* ---------------------------------------------------------------- * Executor State types are used in the plannode structures * so we have to include their definitions too. * * Node Type node information used by executor * * control nodes * * Existential ExistentialState exstate; * Result ResultState resstate; * Append AppendState unionstate; * * scan nodes * * Scan *** ScanState scanstate; * IndexScan IndexScanState indxstate; * * (*** nodes which inherit Scan also inherit scanstate) * * join nodes * * NestLoop NestLoopState nlstate; * MergeJoin MergeJoinState mergestate; * HashJoin HashJoinState hashjoinstate; * * materialize nodes * * Material MaterialState matstate; * Sort SortState sortstate; * Unique UniqueState uniquestate; * Hash HashState hashstate; * * ---------------------------------------------------------------- */ #include "nodes/execnodes.h" /* XXX move executor types elsewhere */ /* ---------------------------------------------------------------- * Node Function Declarations * * All of these #defines indicate that we have written print/equal/copy * support for the classes named. The print routines are in * lib/C/printfuncs.c, the equal functions are in lib/C/equalfincs.c and * the copy functions can be found in lib/C/copyfuncs.c * * An interface routine is generated automatically by Gen_creator.sh for * each node type. This routine will call either do nothing or call * an _print, _equal or _copy function defined in one of the above * files, depending on whether or not the appropriate #define is specified. * * Thus, when adding a new node type, you have to add a set of * _print, _equal and _copy functions to the above files and then * add some #defines below. * * This is pretty complicated, and a better-designed system needs to be * implemented. * ---------------------------------------------------------------- */ /* ---------------- * Node Out Function declarations * ---------------- */ #define OutPlanExists #define OutResultExists #define OutExistentialExists #define OutAppendExists #define OutJoinExists #define OutJoinRuleInfoExists #define OutNestLoopExists #define OutMergeJoinExists #define OutHashJoinExists #define OutScanExists #define OutSeqScanExists #define OutIndexScanExists #define OutTempExists #define OutAggExists #define OutSortExists #define OutHashExists #define OutUniqueExists #define OutFragmentExists #define OutScanTempsExists /* ---------------- * Node Equal Function declarations * ---------------- */ #define EqualFragmentExists /* ---------------- * Node Copy Function declarations * ---------------- */ #define CopyPlanExists #define CopyResultExists #define CopyExistentialExists #define CopyAppendExists #define CopyJoinExists #define CopyJoinRuleInfoExists #define CopyNestLoopExists #define CopyMergeJoinExists #define CopyHashJoinExists #define CopyScanExists #define CopySeqScanExists #define CopyIndexScanExists #define CopyTempExists #define CopyAggExists #define CopySortExists #define CopyHashExists #define CopyUniqueExists #define CopyScanTempsExists /* ---------------------------------------------------------------- * node definitions * ---------------------------------------------------------------- */ /* ---------------- * Plan node * ---------------- */ /* followind typedef's were added and 'struct Blah''s were replaced * with 'BlahPtr' in the #define's. The reason? Sprite cannot handle * 'struct Blah *blah'. - ron 'blah blah' choi */ typedef struct EState *EStatePtr; typedef struct Plan *PlanPtr; class (Plan) public (Node) { #define PlanDefs \ inherits0(Node); \ Cost cost; \ Count plan_size; \ Count plan_width; \ Count plan_tupperpage; \ int fragment; \ int parallel; \ EStatePtr state; \ List qptargetlist; \ List qpqual; \ PlanPtr lefttree; \ PlanPtr righttree /* private: */ PlanDefs; /* public: */ }; /* -------------- * Fragment node * -------------- */ /* followind typedef's were added and 'struct Blah''s were replaced * with 'BlahPtr' in the #define's. The reason? Sprite cannot handle * 'struct Blah *blah'. - ron 'blah blah' choi */ typedef struct Fragment *FragmentPtr; class (Fragment) public (Node) { #define FragmentDefs \ inherits0(Node); \ Plan frag_root; \ Plan frag_parent_op; \ int frag_parallel; \ List frag_subtrees; \ FragmentPtr frag_parent_frag; \ List frag_parsetree; \ bool frag_is_inprocess; \ float frag_iorate /* private: */ FragmentDefs; /* public: */ }; /* * =============== * Top-level nodes * =============== */ /* ---------------- * existential node * ---------------- */ class (Existential) public (Plan) { inherits1(Plan); /* public: */ }; /* ---------------- * result node * ---------------- */ class (Result) public (Plan) { inherits1(Plan); /* private: */ List resrellevelqual; List resconstantqual; ResultState resstate; /* public: */ }; /* ---------------- * append node * ---------------- */ class (Append) public (Plan) { inherits1(Plan); /* private: */ List unionplans; Index unionrelid; List unionrtentries; AppendState unionstate; /* public: */ }; /* * ========== * Scan nodes * ========== */ class (Scan) public (Plan) { #define ScanDefs \ inherits1(Plan); \ Index scanrelid; \ ScanState scanstate /* private: */ ScanDefs; /* public: */ }; /* ---------------- * sequential scan node * ---------------- */ class (SeqScan) public (Scan) { inherits2(Scan); /* private: */ /* public: */ }; class (ScanTemps) public (Plan) { #define ScanTempDefs \ inherits1(Plan); \ List temprelDescs; \ ScanTempState scantempState /* private: */ ScanTempDefs; /* public: */ }; /* ---------------- * index scan node * ---------------- */ class (IndexScan) public (Scan) { inherits2(Scan); /* private: */ List indxid; List indxqual; IndexScanState indxstate; /* public: */ }; /* * ========== * Join nodes * ========== */ /* ---------------- * Rule information stored in Join nodes * ---------------- */ class (JoinRuleInfo) public (Node) { inherits0(Node); /* private: */ ObjectId jri_operator; AttributeNumber jri_inattrno; AttributeNumber jri_outattrno; RuleLock jri_lock; ObjectId jri_ruleid; Prs2StubId jri_stubid; Prs2OneStub jri_stub; Prs2StubStats jri_stats; /* public: */ }; /* ---------------- * Join node * ---------------- */ /* followind typedef's were added and 'struct Blah''s were replaced * with 'BlahPtr' in the #define's. The reason? Sprite cannot handle * 'struct Blah *blah'. - ron 'blah blah' choi */ typedef struct JoinRuleInfo *JoinRuleInfoPtr; class (Join) public (Plan) { #define JoinDefs \ inherits1(Plan); \ JoinRuleInfoPtr ruleinfo /* private: */ JoinDefs; /* public: */ }; /* ---------------- * nest loop join node * ---------------- */ class (NestLoop) public (Join) { inherits2(Join); /* private: */ NestLoopState nlstate; JoinRuleInfo nlRuleInfo; /* public: */ }; /* ---------------- * merge join node * ---------------- */ class (MergeJoin) public (Join) { inherits2(Join); /* private: */ List mergeclauses; ObjectId mergesortop; List mergerightorder; List mergeleftorder; MergeJoinState mergestate; /* public: */ }; /* ---------------- * hash join (probe) node * ---------------- */ class (HashJoin) public (Join) { inherits2(Join); /* private: */ List hashclauses; ObjectId hashjoinop; HashJoinState hashjoinstate; HashJoinTable hashjointable; IpcMemoryKey hashjointablekey; int hashjointablesize; bool hashdone; /* public: */ }; /* * ========== * Temp nodes * ========== */ class (Temp) public (Plan) { #define TempDefs \ inherits1(Plan); \ ObjectId tempid; \ Count keycount /* private: */ TempDefs; /* public: */ }; /* ---------------- * materialization node * ---------------- */ class (Material) public (Temp) { #define MaterialDefs \ inherits2(Temp); \ MaterialState matstate /* private: */ MaterialDefs; /* public: */ }; /* ---------------- * sort node * ---------------- */ class (Sort) public (Temp) { #define SortDefs \ inherits2(Temp); \ SortState sortstate /* private: */ SortDefs; /* public: */ }; /* --------------- * aggregate node * --------------- */ class (Agg) public (Temp) { #define AggDefs \ inherits2(Temp); \ String aggname; \ AggState aggstate /* private */ AggDefs; /* public: */ }; /* ---------------- * unique node * ---------------- */ class (Unique) public (Temp) { #define UniqueDefs \ inherits2(Temp); \ UniqueState uniquestate /* private: */ UniqueDefs; /* public: */ }; /* ---------------- * hash build node * ---------------- */ class (Hash) public (Plan) { #define HashDefs \ inherits1(Plan); \ Var hashkey; \ HashState hashstate; \ HashJoinTable hashtable; \ IpcMemoryKey hashtablekey; \ int hashtablesize /* private: */ HashDefs; /* public: */ }; /* --------------------- * choose node * --------------------- */ class (Choose) public (Plan) { #define ChooseDefs \ inherits1(Plan); \ List chooseplanlist /* private: */ ChooseDefs; /* public: */ }; #endif /* PlanNodesIncluded */ @ 1.38 log @added iorate field to Fragment nodes @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.37 91/11/17 20:59:34 mer Exp Locker: hong $ d29 1 @ 1.37 log @change aggname to be a string @ text @d17 1 a17 1 * $Header: /users/mer/postgres/src/lib/H/nodes/RCS/plannodes.h,v 1.36 1991/11/07 20:21:04 glass Exp mer $ d169 1 d202 2 a203 1 bool frag_is_inprocess @ 1.36 log @prototype stuff @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.35 91/09/30 10:13:18 glass Exp $ d435 1 a435 1 Name aggname; \ @ 1.35 log @initial ansi c compatibility changes: fixed inheritance and limited prototypes @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.34 91/08/15 17:48:23 caetta Exp $ a113 18 extern void OutPlan(); extern void OutResult(); extern void OutExistential(); extern void OutAppend(); extern void OutJoin(); extern void OutJoinRuleInfo(); extern void OutNestLoop(); extern void OutMergeJoin(); extern void OutHashJoin(); extern void OutScan(); extern void OutSeqScan(); extern void OutIndexScan(); extern void OutTemp(); extern void OutAgg(); extern void OutSort(); extern void OutHash(); extern void OutScanTemps(); extern void OutFragment(); a120 16 extern bool EqualPlan(); extern bool EqualResult(); extern bool EqualExistential(); extern bool EqualAppend(); extern bool EqualJoin(); extern bool EqualNestLoop(); extern bool EqualMergeJoin(); extern bool EqualHashJoin(); extern bool EqualScan(); extern bool EqualSeqScan(); extern bool EqualIndexScan(); extern bool EqualTemp(); extern bool EqualAgg(); extern bool EqualSort(); extern bool EqualHash(); extern bool EqualFragment(); a144 17 extern bool CopyPlan(); extern bool CopyResult(); extern bool CopyExistential(); extern bool CopyAppend(); extern bool CopyJoin(); extern bool CopyJoinRuleInfo(); extern bool CopyNestLoop(); extern bool CopyMergeJoin(); extern bool CopyHashJoin(); extern bool CopyScan(); extern bool CopySeqScan(); extern bool CopyIndexScan(); extern bool CopyTemp(); extern bool CopyAgg(); extern bool CopySort(); extern bool CopyHash(); extern bool CopyScanTemps(); @ 1.34 log @for more Agg nodes @ text @d17 1 a17 1 * $Header: lib/H/nodes/RCS/plannodes.h,v 1.33 91/08/08 15:34:36 hong Exp Locker: caetta $ d216 1 a216 1 inherits(Node); \ d245 1 a245 1 inherits(Node); \ d269 1 a269 1 inherits(Plan); d278 1 a278 1 inherits(Plan); d291 1 a291 1 inherits(Plan); d308 1 a308 1 inherits(Plan); \ d321 1 a321 1 inherits(Scan); d328 1 a328 1 inherits(Plan); \ d341 1 a341 1 inherits(Scan); d360 1 a360 1 inherits(Node); d386 1 a386 1 inherits(Plan); \ d398 1 a398 1 inherits(Join); d410 1 a410 1 inherits(Join); d425 1 a425 1 inherits(Join); d446 1 a446 1 inherits(Plan); \ d460 1 a460 1 inherits(Temp); \ d473 1 a473 1 inherits(Temp); \ d485 1 a485 1 inherits(Temp); \ d499 1 a499 1 inherits(Temp); \ d512 1 a512 1 inherits(Plan); \ d529 1 a529 1 inherits(Plan); \ @ 1.33 log @added a new field in fragment nodes @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.32 91/07/17 23:50:35 hong Exp $ d107 1 d127 1 d151 1 d173 1 d192 1 d478 13 @ 1.32 log @changes to support inter-fragment and inter-query parallelism @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.31 91/06/18 23:28:14 cimarron Exp Locker: hong $ d241 7 a247 6 Plan frag_root; \ Plan frag_parent_op; \ int frag_parallel; \ List frag_subtrees; \ FragmentPtr frag_parent_frag; \ List frag_parsetree @ 1.31 log @reorganized executor to use tuple table properly for nested dot stuff @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.30 91/04/24 12:12:29 hong Exp Locker: cimarron $ a206 1 typedef struct ReturnState *ReturnStatePtr; d245 2 a246 1 FragmentPtr frag_parent_frag @ 1.30 log @added a choose node for my experiments. -- Wei @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.29 91/04/18 11:38:04 hong Exp Locker: hong $ a27 1 #include "executor/recursion_a.h" /* recursion stuff that must go first */ a41 2 * Parallel ParallelState parstate; * Recursive RecursiveState recurstate; a97 1 #define OutRecursiveExists a116 1 extern void OutRecursive(); a140 1 extern bool EqualRecursive(); a160 1 #define CopyRecursiveExists a178 1 extern bool CopyRecursive(); a263 2 /* private: */ ExistentialState exstate; a290 40 /* public: */ }; /* ---------------- * parallel-append node * ---------------- */ class (Parallel) public (Plan) { inherits(Plan); /* private: */ ParallelState parstate; /* public: */ }; /*****===================== * JJJ - recursion node *****===================== * * recurMethod method chosen for recursive query evaluation * recurCommand e.g. append, delete * recurInitPlans plans/utilities executed once at start * recurLoopPlans sequence to be repeated until no effects * are detected * recurCleanupPlans plans/utilities executed once at end * recurCheckpoints indicate which plans affect the true result * * recurResultRelationName name of original result relation */ class (Recursive) public (Plan) { inherits(Plan); /* private */ RecursiveMethod recurMethod; LispValue recurCommand; List recurInitPlans; List recurLoopPlans; List recurCleanupPlans; List recurCheckpoints; LispValue recurResultRelationName; RecursiveState recurState; @ 1.29 log @get rid of retstate in plan nodes @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.28 91/04/08 18:09:01 sp Exp Locker: hong $ d554 12 @ 1.28 log @OutJoinRuleInfoExists and CopyJoinRuleInfoExists DO exist! @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.27 91/02/05 15:45:20 sp Exp $ a226 1 ReturnStatePtr retstate; \ @ 1.27 log @The 'printFunc's (associated with every POSTGRES node) have been replaced by the 'outFunc's which instead of printing the ascii representation of an node to a file, they store it in a string. @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.26 90/11/10 12:28:01 hong Exp Locker: sp $ d103 1 d123 1 d169 1 d188 1 @ 1.26 log @more changes for parallel hashjoin @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.25 90/11/07 12:01:59 hong Exp Locker: hong $ d94 1 a94 1 * Node Print Function declarations d97 18 a114 18 #define PrintPlanExists #define PrintResultExists #define PrintExistentialExists #define PrintAppendExists #define PrintRecursiveExists #define PrintJoinExists #define PrintNestLoopExists #define PrintMergeJoinExists #define PrintHashJoinExists #define PrintScanExists #define PrintSeqScanExists #define PrintIndexScanExists #define PrintTempExists #define PrintSortExists #define PrintHashExists #define PrintUniqueExists #define PrintFragmentExists #define PrintScanTempsExists d116 17 a132 17 extern void PrintPlan(); extern void PrintResult(); extern void PrintExistential(); extern void PrintAppend(); extern void PrintRecursive(); extern void PrintJoin(); extern void PrintNestLoop(); extern void PrintMergeJoin(); extern void PrintHashJoin(); extern void PrintScan(); extern void PrintSeqScan(); extern void PrintIndexScan(); extern void PrintTemp(); extern void PrintSort(); extern void PrintHash(); extern void PrintScanTemps(); extern void PrintFragment(); @ 1.25 log @changes in hashjoin related nodes to allow parallel execution @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.24 90/09/06 14:16:04 hong Exp Locker: hong $ d472 2 d543 3 a545 1 HashJoinTable hashtable @ 1.24 log @change scantemp to scantemps @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.23 90/08/22 10:50:01 choi Exp Locker: hong $ d471 2 d540 2 a541 1 HashState hashstate @ 1.23 log @'struct Blah *blah' changed to 'BlahPtr blah' in the #define's this is the only way that will work on Sprite OS @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.22 90/08/18 17:14:52 sp Exp Locker: choi $ d114 1 a114 1 #define PrintScanTempExists d131 1 a131 1 extern void PrintScanTemp(); d177 1 a177 1 #define CopyScanTempExists d194 1 a194 1 extern bool CopyScanTemp(); d220 1 a220 1 Index fragment; \ d367 1 a367 1 class (ScanTemp) public (Plan) { d370 1 a370 1 Relation temprelDesc; \ @ 1.22 log @new field in the JoinRuleInfo nodes: jri_stats (used to keep some statistics). @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.21 90/08/18 00:40:26 cimarron Exp Locker: sp $ d205 9 d222 2 a223 2 struct EState *state; \ struct ReturnState *retstate; \ d226 2 a227 2 struct Plan *lefttree; \ struct Plan *righttree d238 6 d251 1 a251 1 struct Fragment *frag_parent_frag d418 7 d428 1 a428 1 struct JoinRuleInfo *ruleinfo @ 1.21 log @eliminated less significant .h files @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.20 90/08/17 13:33:35 hong Exp Locker: cimarron $ d395 1 @ 1.20 log @new classes for plan fragments, etc. @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.19 90/08/13 19:34:54 sp Exp Locker: hong $ d24 2 a27 1 #include "tmp/oid.h" @ 1.19 log @New node: 'JoinRuleInfo', included by the 'Join' node. @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.18 90/06/22 11:25:17 hong Version_2 Locker: hong $ d24 5 a28 5 #include "nodes.h" /* bogus inheritance system */ #include "pg_lisp.h" #include "oid.h" #include "recursion_a.h" /* recursion stuff that must go first */ #include "primnodes.h" d67 1 a67 1 #include "execnodes.h" /* XXX move executor types elsewhere */ d112 2 d130 2 d137 2 d154 1 d176 1 d193 1 d213 1 d223 18 d351 10 d393 1 a393 1 Prs2OneStub jri_stub @ 1.18 log @added a parallel field for plan nodes. @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.17 90/06/13 01:51:03 hong Exp Locker: hong $ d29 1 d342 21 d365 2 a366 1 inherits(Plan) d380 1 @ 1.17 log @changes for hashjoin @ text @d17 1 a17 1 * $Header: RCS/plannodes.h,v 1.16 90/05/25 13:04:35 cimarron Exp Locker: hong $ d201 1 @ 1.16 log @made changes to support node copy functions @ text @d17 1 a17 1 * $Header: RCS/slaves.c,v 1.2 90/03/31 19:01:51 cimarron Exp $ d28 1 d198 2 d447 1 a447 1 class (Hash) public (Temp) { d449 2 a450 1 inherits(Temp); \ @ 1.15 log @added printUnique @ text @d1 6 a6 3 /* * PlanNodes.h -- * Definitions for query tree nodes. d8 11 a18 2 * Identification: * $Header: RCS/plannodes.h,v 1.14 90/01/31 18:40:59 cimarron Exp $ d29 1 a29 1 /* ---------------- d63 1 a63 1 * ---------------- d68 2 a69 5 /* * All of these #defines indicate that we have written print support * for the classes named. The print routines are in lib/C/printfuncs.c; * an interface routine is generated automatically by Gen_creator.sh for * each node type. d71 14 d87 1 d90 4 d127 4 d146 42 @ 1.14 log @fixed a bug with some trailing spaces after a \ cim @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.13 90/01/31 17:38:30 cimarron Exp Locker: cimarron $ d81 1 @ 1.13 log @added unique, material and parallel node definitions -cim @ text @d6 1 a6 1 * $Header$ d118 1 a118 1 class (Plan) public (Node) { d227 1 a227 1 ScanState scanstate d331 1 a331 1 #define MaterialDefs \ @ 1.12 log @changed Recursive node, e.g. added slot for result relation name of original query. @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.11 90/01/24 17:21:33 mao Exp Locker: jamesb $ d23 2 d28 12 a40 2 * Scan *** ScanState scanstate; * Sort SortState sortstate; d42 1 a42 2 * HashJoin HashJoinState hashstate; * Recursive RecursiveState recurstate; d44 7 a50 1 * (*** nodes which inherit Scan also inherit scanstate) d114 4 d139 4 d150 4 d163 4 d177 11 d219 39 d270 4 d281 4 d296 4 d305 1 a305 1 HashJoinState hashstate; d309 1 d312 1 a312 1 * Scan nodes d316 2 a317 2 class (Scan) public (Plan) { #define ScanDefs \ d319 2 a320 2 Index scanrelid; \ ScanState scanstate d322 1 a322 1 ScanDefs; d326 8 a333 2 class (SeqScan) public (Scan) { inherits(Scan); d335 1 d339 8 a346 2 class (IndexScan) public (Scan) { inherits(Scan); d348 1 a348 3 List indxid; List indxqual; IndexScanState indxstate; d352 3 a354 5 /* * ========== * Temp nodes * ========== d356 4 a359 6 class (Temp) public (Plan) { #define TempDefs \ inherits(Plan); \ ObjectId tempid; \ Count keycount d361 1 a361 1 TempDefs; d365 4 a368 7 class (Sort) public (Temp) { inherits(Temp); /* private: */ SortState sortstate; /* public: */ }; d370 3 a372 1 inherits(Temp); d374 1 @ 1.11 log @delete trailing white space @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.10 89/12/11 17:13:15 jamesb Exp Locker: mao $ d53 1 d69 1 d85 1 d155 2 d163 1 a163 1 Command recurCommand; d168 1 @ 1.10 log @Added Recursive Node for star queries. @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.9 89/11/02 18:05:51 cimarron Exp $ d218 1 a218 1 ScanState scanstate @ 1.9 log @added support for Merge Joins in the executor @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.8 89/10/17 13:45:10 cimarron Exp $ d15 1 d31 1 d138 26 @ 1.8 log @changes to support MergeJoins in the executor. @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.7 89/09/18 08:02:02 cimarron Exp $ d165 2 @ 1.7 log @added code to support index scans in the executor. @ text @d6 1 a6 1 * $Header: RCS/plannodes.h,v 1.5 89/08/09 17:57:05 cimarron Exp $ d28 2 d53 1 a53 1 #define PrintMergeSortExists d68 1 a68 1 extern void PrintMergeSort(); d83 1 a83 1 extern bool EqualMergeSort(); d160 1 a160 1 class (MergeSort) public (Join) { d165 1 d174 1 @ 1.6 log @Working version of C-only demo @ text @d6 1 a6 1 * $Header: /usr6/postgres/mao/postgres/src/lib/H/RCS/plannodes.h,v 1.5 89/08/09 17:57:05 cimarron Exp $ d201 1 @ 1.5 log @added executor state information to various nodes. -cim @ text @d6 1 a6 1 * $Header: /usr6/postgres/cimarron/postgres3/src/lib/H/RCS/plannodes.h,v 1.3 89/08/01 16:17:41 goh Exp $ @ 1.4 log @added externs @ text @d6 1 a6 1 * $Header: plannodes.h,v 1.3 89/08/01 16:17:41 goh Locked $ d12 1 a12 1 #include "nodes.h" /* bogus inheritance system */ d16 19 d114 1 d123 1 d133 1 d154 1 d183 2 a184 1 Index scanrelid d224 1 @ 1.3 log @retrieve (x=1) checkin @ text @d6 1 a6 1 * $Header: /usr6/postgres/goh/newpost/src/lib/H/RCS/plannodes.h,v 1.2 89/07/31 11:22:24 goh Exp $ d55 15 @ 1.2 log @*** empty log message *** @ text @d6 1 a6 1 * $Header: plannodes.h,v 1.1 89/07/20 09:28:08 goh Exp $ d40 15 @ 1.1 log @Initial revision @ text @d6 1 a6 1 * $Header: /usr6/postgres/goh/newpost/src/planner/util/RCS/plannodes.h,v 1.1 89/06/23 16:01:13 goh Exp $ d13 1 d15 25 @