提交 2b55a75e 编写于 作者: D dapan1121

enh: refact code

上级 7e555e43
......@@ -415,7 +415,6 @@ typedef struct SHashJoinPhysiNode {
EJoinType joinType;
SNodeList* pOnLeft;
SNodeList* pOnRight;
SNode* pOnConditions;
SNode* pFilterConditions;
SNodeList* pTargets;
SQueryStat inputStat[2];
......
......@@ -167,7 +167,11 @@ typedef struct STempTableNode {
SNode* pSubquery;
} STempTableNode;
typedef enum EJoinType { JOIN_TYPE_INNER = 1 } EJoinType;
typedef enum EJoinType {
JOIN_TYPE_INNER = 1,
JOIN_TYPE_LEFT,
JOIN_TYPE_RIGHT,
} EJoinType;
typedef struct SJoinTableNode {
STableNode table; // QUERY_NODE_JOIN_TABLE
......
......@@ -19,6 +19,8 @@
extern "C" {
#endif
#define HASH_JOIN_DEFAULT_PAGE_SIZE 10485760
typedef struct SHJoinCtx {
bool rowRemains;
SBufRowInfo* pBuildRow;
......@@ -31,14 +33,17 @@ typedef struct SRowLocation {
int32_t pos;
} SRowLocation;
typedef struct SColBufInfo {
typedef struct SHJoinColInfo {
int32_t srcSlot;
int32_t dstSlot;
bool keyCol;
bool vardata;
int32_t* offset;
int32_t bytes;
char* data;
} SColBufInfo;
char* bitMap;
char* dataInBuf;
} SHJoinColInfo;
typedef struct SBufPageInfo {
int32_t pageSize;
......@@ -50,8 +55,7 @@ typedef struct SBufPageInfo {
typedef struct SBufRowInfo {
void* next;
uint16_t pageId;
int32_t offset:31;
int32_t isNull:1;
int32_t offset;
} SBufRowInfo;
#pragma pack(pop)
......@@ -59,33 +63,37 @@ typedef struct SGroupData {
SBufRowInfo* rows;
} SGroupData;
typedef struct SJoinTableInfo {
typedef struct SHJoinTableInfo {
SOperatorInfo* downStream;
int32_t blkId;
SQueryStat inputStat;
int32_t keyNum;
SColBufInfo* keyCols;
SHJoinColInfo* keyCols;
char* keyBuf;
char* keyData;
int32_t valNum;
SColBufInfo* valCols;
SHJoinColInfo* valCols;
char* valData;
int32_t valBitMapSize;
int32_t valBufSize;
bool valVarData;
} SJoinTableInfo;
SArray* valVarCols;
bool valColExist;
} SHJoinTableInfo;
typedef struct SHJoinOperatorInfo {
SSDataBlock* pRes;
int32_t joinType;
SJoinTableInfo tbs[2];
SJoinTableInfo* pBuild;
SJoinTableInfo* pProbe;
int32_t pResColNum;
int8_t* pResColMap;
SArray* pRowBufs;
SNode* pCondAfterJoin;
SSHashObj* pKeyHash;
SHJoinCtx ctx;
int32_t joinType;
SHJoinTableInfo tbs[2];
SHJoinTableInfo* pBuild;
SHJoinTableInfo* pProbe;
SSDataBlock* pRes;
int32_t pResColNum;
int8_t* pResColMap;
SArray* pRowBufs;
SNode* pCond;
SSHashObj* pKeyHash;
SHJoinCtx ctx;
} SHJoinOperatorInfo;
static SSDataBlock* doHashJoin(struct SOperatorInfo* pOperator);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册