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

enh: refact code

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