Fennel: /home/pub/open/dev/fennel/exec/NestedLoopJoinExecStream.h Source File (original) (raw)

00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 #ifndef Fennel_NestedLoopJoinExecStream_Included 00025 #define Fennel_NestedLoopJoinExecStream_Included 00026 00027 #include "fennel/exec/CartesianJoinExecStream.h" 00028 #include "fennel/exec/DynamicParam.h" 00029 00030 FENNEL_BEGIN_NAMESPACE 00031 00036 struct FENNEL_EXEC_EXPORT NestedLoopJoinKey 00037 { 00038 DynamicParamId dynamicParamId; 00039 uint leftAttributeOrdinal; 00040 00041 NestedLoopJoinKey(DynamicParamId id, uint offset) : 00042 dynamicParamId(id), 00043 leftAttributeOrdinal(offset) 00044 { 00045 } 00046 }; 00047 00052 struct FENNEL_EXEC_EXPORT NestedLoopJoinExecStreamParams 00053 : public CartesianJoinExecStreamParams 00054 { 00055 std::vector leftJoinKeys; 00056 }; 00057 00075 class FENNEL_EXEC_EXPORT NestedLoopJoinExecStream 00076 : public CartesianJoinExecStream 00077 { 00081 bool preProcessingDone; 00082 00086 std::vector leftJoinKeys; 00087 00088 virtual bool checkNumInputs(); 00089 00096 virtual ExecStreamResult preProcessRightInput(); 00097 00102 virtual void processLeftInput(); 00103 00104 public: 00105
00106 virtual void prepare(NestedLoopJoinExecStreamParams const &params); 00107 virtual void open(bool restart); 00108 }; 00109 00110 FENNEL_END_NAMESPACE 00111 00112 #endif 00113 00114