diff --git a/source/libs/executor/src/dynqueryctrloperator.c b/source/libs/executor/src/dynqueryctrloperator.c index 6a4840b188..c3b3126f68 100755 --- a/source/libs/executor/src/dynqueryctrloperator.c +++ b/source/libs/executor/src/dynqueryctrloperator.c @@ -105,7 +105,7 @@ static FORCE_INLINE bool tableNeedCache(int64_t uid, SStbJoinPrevJoinCtx* pPrev, return (NULL == num) ? false : true; } -static void updatePostJoinCurrTableInfo(SStbJoinDynCtrlInfo* pStbJoin) { +static int32_t updatePostJoinCurrTableInfo(SStbJoinDynCtrlInfo* pStbJoin) { SStbJoinPrevJoinCtx* pPrev = &pStbJoin->ctx.prev; SStbJoinPostJoinCtx* pPost = &pStbJoin->ctx.post; SStbJoinTableList* pNode = pPrev->pListHead; @@ -141,32 +141,38 @@ static void updatePostJoinCurrTableInfo(SStbJoinDynCtrlInfo* pStbJoin) pPost->leftNeedCache = tableNeedCache(*leftUid, pPrev, pPost, false, pStbJoin->basic.batchFetch); pPost->rightNeedCache = tableNeedCache(*rightUid, pPrev, pPost, true, pStbJoin->basic.batchFetch); - if (pPost->rightNeedCache && rightPrevUid != pPost->rightCurrUid) { - tSimpleHashPut(pPrev->rightCache, &pPost->rightCurrUid, sizeof(pPost->rightCurrUid), NULL, 0); + if (!pStbJoin->basic.batchFetch && pPost->rightNeedCache && rightPrevUid != pPost->rightCurrUid) { + QRY_ERR_RET(tSimpleHashPut(pPrev->rightCache, &pPost->rightCurrUid, sizeof(pPost->rightCurrUid), NULL, 0)); pStbJoin->execInfo.rightCacheNum++; } + + return TSDB_CODE_SUCCESS; } static int32_t buildGroupCacheOperatorParam(SOperatorParam** ppRes, int32_t downstreamIdx, int32_t vgId, int64_t tbUid, bool needCache, SOperatorParam* pChild) { + int32_t code = TSDB_CODE_SUCCESS; *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { + code = terrno; freeOperatorParam(pChild, OP_GET_PARAM); - return TSDB_CODE_OUT_OF_MEMORY; + return code; } if (pChild) { (*ppRes)->pChildren = taosArrayInit(1, POINTER_BYTES); if (NULL == (*ppRes)->pChildren) { + code = terrno; freeOperatorParam(pChild, OP_GET_PARAM); freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } if (NULL == taosArrayPush((*ppRes)->pChildren, &pChild)) { + code = terrno; freeOperatorParam(pChild, OP_GET_PARAM); freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } } else { (*ppRes)->pChildren = NULL; @@ -174,9 +180,10 @@ static int32_t buildGroupCacheOperatorParam(SOperatorParam** ppRes, int32_t down SGcOperatorParam* pGc = taosMemoryMalloc(sizeof(SGcOperatorParam)); if (NULL == pGc) { + code = terrno; freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } pGc->sessionId = atomic_add_fetch_64(&gSessionId, 1); @@ -194,16 +201,18 @@ static int32_t buildGroupCacheOperatorParam(SOperatorParam** ppRes, int32_t down static int32_t buildGroupCacheNotifyOperatorParam(SOperatorParam** ppRes, int32_t downstreamIdx, int32_t vgId, int64_t tbUid) { + int32_t code = TSDB_CODE_SUCCESS; *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (*ppRes)->pChildren = NULL; SGcNotifyOperatorParam* pGc = taosMemoryMalloc(sizeof(SGcNotifyOperatorParam)); if (NULL == pGc) { + code = terrno; freeOperatorParam(*ppRes, OP_NOTIFY_PARAM); - return TSDB_CODE_OUT_OF_MEMORY; + return code; } pGc->downstreamIdx = downstreamIdx; @@ -221,13 +230,13 @@ static int32_t buildGroupCacheNotifyOperatorParam(SOperatorParam** ppRes, int32_ static int32_t buildExchangeOperatorParam(SOperatorParam** ppRes, int32_t downstreamIdx, int32_t* pVgId, int64_t* pUid) { *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (*ppRes)->pChildren = NULL; SExchangeOperatorParam* pExc = taosMemoryMalloc(sizeof(SExchangeOperatorParam)); if (NULL == pExc) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pExc->multiParams = false; @@ -237,7 +246,7 @@ static int32_t buildExchangeOperatorParam(SOperatorParam** ppRes, int32_t downst pExc->basic.uidList = taosArrayInit(1, sizeof(int64_t)); if (NULL == pExc->basic.uidList) { taosMemoryFree(pExc); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } taosArrayPush(pExc->basic.uidList, pUid); @@ -252,14 +261,14 @@ static int32_t buildExchangeOperatorParam(SOperatorParam** ppRes, int32_t downst static int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppRes, int32_t downstreamIdx, SSHashObj* pVg) { *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } (*ppRes)->pChildren = NULL; SExchangeOperatorBatchParam* pExc = taosMemoryMalloc(sizeof(SExchangeOperatorBatchParam)); if (NULL == pExc) { taosMemoryFreeClear(*ppRes); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } pExc->multiParams = true; @@ -267,7 +276,7 @@ static int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppRes, int32_t d if (NULL == pExc->pBatchs) { taosMemoryFree(pExc); taosMemoryFreeClear(*ppRes); - return TSDB_CODE_OUT_OF_MEMORY; + return terrno; } tSimpleHashSetFreeFp(pExc->pBatchs, freeExchangeGetBasicOperatorParam); @@ -283,7 +292,7 @@ static int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppRes, int32_t d basic.uidList = pUidList; basic.tableSeq = false; - tSimpleHashPut(pExc->pBatchs, pVgId, sizeof(*pVgId), &basic, sizeof(basic)); + QRY_ERR_RET(tSimpleHashPut(pExc->pBatchs, pVgId, sizeof(*pVgId), &basic, sizeof(basic))); qTrace("build downstreamIdx %d batch scan, vgId:%d, uidNum:%" PRId64, downstreamIdx, *pVgId, (int64_t)taosArrayGetSize(pUidList)); *(SArray**)p = NULL; @@ -298,39 +307,45 @@ static int32_t buildBatchExchangeOperatorParam(SOperatorParam** ppRes, int32_t d static int32_t buildMergeJoinOperatorParam(SOperatorParam** ppRes, bool initParam, SOperatorParam* pChild0, SOperatorParam* pChild1) { + int32_t code = TSDB_CODE_SUCCESS; *ppRes = taosMemoryMalloc(sizeof(SOperatorParam)); if (NULL == *ppRes) { + code = terrno; freeOperatorParam(pChild0, OP_GET_PARAM); freeOperatorParam(pChild1, OP_GET_PARAM); - return TSDB_CODE_OUT_OF_MEMORY; + return code; } (*ppRes)->pChildren = taosArrayInit(2, POINTER_BYTES); if (NULL == *ppRes) { + code = terrno; freeOperatorParam(pChild0, OP_GET_PARAM); freeOperatorParam(pChild1, OP_GET_PARAM); freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } if (NULL == taosArrayPush((*ppRes)->pChildren, &pChild0)) { + code = terrno; freeOperatorParam(pChild0, OP_GET_PARAM); freeOperatorParam(pChild1, OP_GET_PARAM); freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } if (NULL == taosArrayPush((*ppRes)->pChildren, &pChild1)) { + code = terrno; freeOperatorParam(pChild1, OP_GET_PARAM); freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } SSortMergeJoinOperatorParam* pJoin = taosMemoryMalloc(sizeof(SSortMergeJoinOperatorParam)); if (NULL == pJoin) { + code = terrno; freeOperatorParam(*ppRes, OP_GET_PARAM); *ppRes = NULL; - return TSDB_CODE_OUT_OF_MEMORY; + return code; } pJoin->initDownstream = initParam; @@ -435,7 +450,7 @@ static int32_t buildSeqStbJoinOperatorParam(SDynQueryCtrlOperatorInfo* pInfo, SS qDebug("start %" PRId64 ":%" PRId64 "th stbJoin, left:%d,%" PRIu64 " - right:%d,%" PRIu64, rowIdx, pPrev->tableNum, *leftVg, *leftUid, *rightVg, *rightUid); - updatePostJoinCurrTableInfo(&pInfo->stbJoin); + QRY_ERR_RET(updatePostJoinCurrTableInfo(&pInfo->stbJoin)); if (pInfo->stbJoin.basic.batchFetch) { if (pPrev->leftHash) { diff --git a/source/libs/executor/src/mergejoin.c b/source/libs/executor/src/mergejoin.c index 2c5121855a..cb0cb5cbde 100755 --- a/source/libs/executor/src/mergejoin.c +++ b/source/libs/executor/src/mergejoin.c @@ -2655,7 +2655,7 @@ static int32_t mAsofForwardRetrieve(SOperatorInfo* pOperator, SMJoinOperatorInfo mJoinSetDone(pOperator); } - return false; + return TSDB_CODE_SUCCESS; } if (buildGot) { @@ -2690,8 +2690,9 @@ static int32_t mAsofForwardRetrieve(SOperatorInfo* pOperator, SMJoinOperatorInfo } pCtx->probeGrp.blk = pJoin->probe->blk; + *newBlock = true; - return true; + return TSDB_CODE_SUCCESS; } diff --git a/source/libs/executor/test/joinTests.cpp b/source/libs/executor/test/joinTests.cpp index fd8c1d80b3..e3daf6ff27 100755 --- a/source/libs/executor/test/joinTests.cpp +++ b/source/libs/executor/test/joinTests.cpp @@ -70,6 +70,8 @@ enum { TEST_FULL_COND }; +#define JT_PRINTF (void)printf + #define COL_DISPLAY_WIDTH 18 #define JT_MAX_LOOP 1000 @@ -222,33 +224,33 @@ void printResRow(char* value, int32_t type) { return; } - printf(" "); + JT_PRINTF(" "); for (int32_t i = 0; i < jtCtx.resColNum; ++i) { int32_t slot = jtCtx.resColInSlot[i]; if (0 == type && ((jtCtx.leftColOnly && slot >= MAX_SLOT_NUM) || (jtCtx.rightColOnly && slot < MAX_SLOT_NUM))) { - printf("%18s", " "); + ("%18s", " "); continue; } if (*(bool*)(value + slot)) { - printf("%18s", " NULL"); + JT_PRINTF("%18s", " NULL"); continue; } switch (jtInputColType[slot % MAX_SLOT_NUM]) { case TSDB_DATA_TYPE_TIMESTAMP: - printf("%18" PRId64 , *(int64_t*)(value + jtCtx.resColOffset[slot])); + JT_PRINTF("%18" PRId64 , *(int64_t*)(value + jtCtx.resColOffset[slot])); break; case TSDB_DATA_TYPE_INT: - printf("%18d", *(int32_t*)(value + jtCtx.resColOffset[slot])); + JT_PRINTF("%18d", *(int32_t*)(value + jtCtx.resColOffset[slot])); break; case TSDB_DATA_TYPE_BIGINT: - printf("%18" PRId64, *(int64_t*)(value + jtCtx.resColOffset[slot])); + JT_PRINTF("%18" PRId64, *(int64_t*)(value + jtCtx.resColOffset[slot])); break; } } - printf("\t %s\n", 0 == type ? "-" : (1 == type ? "+" : "")); + JT_PRINTF("\t %s\n", 0 == type ? "-" : (1 == type ? "+" : "")); } void pushResRow(char* buf, int32_t size) { @@ -260,7 +262,7 @@ void pushResRow(char* buf, int32_t size) { (*rows)++; } else { int32_t n = 1; - tSimpleHashPut(jtCtx.jtResRows, buf, size, &n, sizeof(n)); + assert(0 == tSimpleHashPut(jtCtx.jtResRows, buf, size, &n, sizeof(n))); } } } @@ -270,10 +272,10 @@ void rmResRow() { if (rows) { (*rows)--; if ((*rows) == 0) { - tSimpleHashRemove(jtCtx.jtResRows, jtCtx.resColBuf, jtCtx.resColSize); + (void)tSimpleHashRemove(jtCtx.jtResRows, jtCtx.resColBuf, jtCtx.resColSize); } } else { - ASSERT(0); + assert(0); } } @@ -292,10 +294,10 @@ static int32_t jtMergeEqCond(SNode** ppDst, SNode** ppSrc) { if (QUERY_NODE_LOGIC_CONDITION == nodeType(*ppDst)) { SLogicConditionNode* pLogic = (SLogicConditionNode*)*ppDst; if (QUERY_NODE_LOGIC_CONDITION == nodeType(*ppSrc)) { - nodesListStrictAppendList(pLogic->pParameterList, ((SLogicConditionNode*)(*ppSrc))->pParameterList); + assert(0 == nodesListStrictAppendList(pLogic->pParameterList, ((SLogicConditionNode*)(*ppSrc))->pParameterList)); ((SLogicConditionNode*)(*ppSrc))->pParameterList = NULL; } else { - nodesListStrictAppend(pLogic->pParameterList, *ppSrc); + assert(0 == nodesListStrictAppend(pLogic->pParameterList, *ppSrc)); *ppSrc = NULL; } nodesDestroyNode(*ppSrc); @@ -311,8 +313,8 @@ static int32_t jtMergeEqCond(SNode** ppDst, SNode** ppSrc) { pLogicCond->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; pLogicCond->condType = LOGIC_COND_TYPE_AND; pLogicCond->pParameterList = nodesMakeList(); - nodesListStrictAppend(pLogicCond->pParameterList, *ppSrc); - nodesListStrictAppend(pLogicCond->pParameterList, *ppDst); + assert(0 == nodesListStrictAppend(pLogicCond->pParameterList, *ppSrc)); + assert(0 == nodesListStrictAppend(pLogicCond->pParameterList, *ppDst)); *ppDst = (SNode*)pLogicCond; *ppSrc = NULL; @@ -324,6 +326,7 @@ static int32_t jtMergeEqCond(SNode** ppDst, SNode** ppSrc) { void createDummyDownstreamOperators(int32_t num, SOperatorInfo** ppRes) { for (int32_t i = 0; i < num; ++i) { SOperatorInfo* p = (SOperatorInfo*)taosMemoryCalloc(1, sizeof(SOperatorInfo)); + assert(NULL != p); p->resultDataBlockId = i; ppRes[i] = p; } @@ -331,7 +334,7 @@ void createDummyDownstreamOperators(int32_t num, SOperatorInfo** ppRes) { void createTargetSlotList(SSortMergeJoinPhysiNode* p) { jtCtx.resColNum = 0; - memset(jtCtx.resColList, 0, sizeof(jtCtx.resColList)); + TAOS_MEMSET(jtCtx.resColList, 0, sizeof(jtCtx.resColList)); jtCtx.resColSize = MAX_SLOT_NUM * 2 * sizeof(bool); jtCtx.keyInSlotIdx = -1; @@ -386,6 +389,7 @@ void createTargetSlotList(SSortMergeJoinPhysiNode* p) { STargetNode* pTarget = (STargetNode*)nodesMakeNode(QUERY_NODE_TARGET); SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(NULL != pTarget && NULL != pCol); pCol->dataBlockId = LEFT_BLK_ID; pCol->slotId = i; pTarget->dataBlockId = RES_BLK_ID; @@ -394,7 +398,7 @@ void createTargetSlotList(SSortMergeJoinPhysiNode* p) { dstOffset += tDataTypes[jtInputColType[i]].bytes; jtCtx.resColSize += tDataTypes[jtInputColType[i]].bytes; - nodesListMakeStrictAppend(&p->pTargets, (SNode*)pTarget); + assert(0 == nodesListMakeStrictAppend(&p->pTargets, (SNode*)pTarget)); jtCtx.resColNum++; } @@ -410,6 +414,7 @@ void createTargetSlotList(SSortMergeJoinPhysiNode* p) { STargetNode* pTarget = (STargetNode*)nodesMakeNode(QUERY_NODE_TARGET); SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(NULL != pTarget && NULL != pCol); pCol->dataBlockId = RIGHT_BLK_ID; pCol->slotId = i; pTarget->dataBlockId = RES_BLK_ID; @@ -418,12 +423,13 @@ void createTargetSlotList(SSortMergeJoinPhysiNode* p) { dstOffset += tDataTypes[jtInputColType[i]].bytes; jtCtx.resColSize += tDataTypes[jtInputColType[i]].bytes; - nodesListMakeStrictAppend(&p->pTargets, (SNode*)pTarget); + assert(0 == nodesListMakeStrictAppend(&p->pTargets, (SNode*)pTarget)); jtCtx.resColNum++; } } jtCtx.resColBuf = (char*)taosMemoryRealloc(jtCtx.resColBuf, jtCtx.resColSize); + assert(NULL != jtCtx.resColBuf); } void createColEqCondStart(SSortMergeJoinPhysiNode* p) { @@ -433,7 +439,7 @@ void createColEqCondStart(SSortMergeJoinPhysiNode* p) { } while (0 == jtCtx.colEqNum); int32_t idx = 0; - memset(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); + TAOS_MEMSET(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); for (int32_t i = 0; i < jtCtx.colEqNum; ) { idx = taosRand() % MAX_SLOT_NUM; if (jtCtx.colEqList[idx]) { @@ -449,12 +455,14 @@ void createColEqCondStart(SSortMergeJoinPhysiNode* p) { for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (jtCtx.colEqList[i]) { SColumnNode* pCol1 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol1); + pCol1->dataBlockId = LEFT_BLK_ID; pCol1->slotId = i; pCol1->node.resType.type = jtInputColType[i]; pCol1->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - nodesListMakeStrictAppend(&p->pEqLeft, (SNode*)pCol1); + assert(0 == nodesListMakeStrictAppend(&p->pEqLeft, (SNode*)pCol1)); SColumnNode* pCol2 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); pCol2->dataBlockId = RIGHT_BLK_ID; @@ -462,7 +470,7 @@ void createColEqCondStart(SSortMergeJoinPhysiNode* p) { pCol2->node.resType.type = jtInputColType[i]; pCol2->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - nodesListMakeStrictAppend(&p->pEqRight, (SNode*)pCol2); + assert(0 == nodesListMakeStrictAppend(&p->pEqRight, (SNode*)pCol2)); } } } @@ -474,7 +482,7 @@ void createColOnCondStart(SSortMergeJoinPhysiNode* p) { } while (0 == jtCtx.colOnNum || (jtCtx.colOnNum + jtCtx.colEqNum) > MAX_SLOT_NUM); int32_t idx = 0; - memset(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); + TAOS_MEMSET(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); for (int32_t i = 0; i < jtCtx.colOnNum; ) { idx = taosRand() % MAX_SLOT_NUM; if (jtCtx.colOnList[idx] || jtCtx.colEqList[idx]) { @@ -504,6 +512,7 @@ void createColEqCondEnd(SSortMergeJoinPhysiNode* p) { SLogicConditionNode* pLogic = NULL; if (jtCtx.colEqNum > 1) { pLogic = (SLogicConditionNode*)nodesMakeNode(QUERY_NODE_LOGIC_CONDITION); + assert(pLogic); pLogic->node.resType.type = TSDB_DATA_TYPE_BOOL; pLogic->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; pLogic->condType = LOGIC_COND_TYPE_AND; @@ -512,18 +521,21 @@ void createColEqCondEnd(SSortMergeJoinPhysiNode* p) { for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (jtCtx.colEqList[i]) { SColumnNode* pCol1 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol1); pCol1->dataBlockId = RES_BLK_ID; pCol1->slotId = getDstSlotId(i); pCol1->node.resType.type = jtInputColType[i]; pCol1->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; SColumnNode* pCol2 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol2); pCol2->dataBlockId = RES_BLK_ID; pCol2->slotId = getDstSlotId(MAX_SLOT_NUM + i); pCol2->node.resType.type = jtInputColType[i]; pCol2->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; SOperatorNode* pOp = (SOperatorNode*)nodesMakeNode(QUERY_NODE_OPERATOR); + assert(pOp); pOp->opType = OP_TYPE_EQUAL; pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; @@ -531,7 +543,7 @@ void createColEqCondEnd(SSortMergeJoinPhysiNode* p) { pOp->pRight = (SNode*)pCol2; if (jtCtx.colEqNum > 1) { - nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp); + assert(0 == nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp)); } else { p->pFullOnCond = (SNode*)pOp; break; @@ -552,6 +564,7 @@ void createColOnCondEnd(SSortMergeJoinPhysiNode* p) { SLogicConditionNode* pLogic = NULL; if (jtCtx.colOnNum > 1) { pLogic = (SLogicConditionNode*)nodesMakeNode(QUERY_NODE_LOGIC_CONDITION); + assert(pLogic); pLogic->node.resType.type = TSDB_DATA_TYPE_BOOL; pLogic->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; pLogic->condType = LOGIC_COND_TYPE_AND; @@ -560,18 +573,21 @@ void createColOnCondEnd(SSortMergeJoinPhysiNode* p) { for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (jtCtx.colOnList[i]) { SColumnNode* pCol1 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol1); pCol1->dataBlockId = RES_BLK_ID; pCol1->slotId = getDstSlotId(i); pCol1->node.resType.type = jtInputColType[i]; pCol1->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; SColumnNode* pCol2 = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol2); pCol2->dataBlockId = RES_BLK_ID; pCol2->slotId = getDstSlotId(MAX_SLOT_NUM + i); pCol2->node.resType.type = jtInputColType[i]; pCol2->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; SOperatorNode* pOp = (SOperatorNode*)nodesMakeNode(QUERY_NODE_OPERATOR); + assert(pOp); pOp->opType = OP_TYPE_GREATER_THAN; pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; @@ -579,7 +595,7 @@ void createColOnCondEnd(SSortMergeJoinPhysiNode* p) { pOp->pRight = (SNode*)pCol2; if (jtCtx.colOnNum > 1) { - nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp); + assert(0 == nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp)); } else { p->pColOnCond = (SNode*)pOp; break; @@ -592,7 +608,8 @@ void createColOnCondEnd(SSortMergeJoinPhysiNode* p) { } SNode* pTmp = nodesCloneNode(p->pColOnCond); - jtMergeEqCond(&p->pFullOnCond, &pTmp); + assert(pTmp); + assert(0 == jtMergeEqCond(&p->pFullOnCond, &pTmp)); } @@ -603,18 +620,18 @@ void createColCond(SSortMergeJoinPhysiNode* p, int32_t cond) { case TEST_NO_COND: jtCtx.colEqNum = 0; jtCtx.colOnNum = 0; - memset(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); - memset(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); + TAOS_MEMSET(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); + TAOS_MEMSET(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); break; case TEST_EQ_COND: createColEqCondStart(p); jtCtx.colOnNum = 0; - memset(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); + TAOS_MEMSET(jtCtx.colOnList, 0, sizeof(jtCtx.colOnList)); break; case TEST_ON_COND: createColOnCondStart(p); jtCtx.colEqNum = 0; - memset(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); + TAOS_MEMSET(jtCtx.colEqList, 0, sizeof(jtCtx.colEqList)); break; case TEST_FULL_COND: createColEqCondStart(p); @@ -643,8 +660,8 @@ void createFilterStart(SSortMergeJoinPhysiNode* p, bool filter) { if (!filter) { jtCtx.leftFilterNum = 0; jtCtx.rightFilterNum = 0; - memset(jtCtx.leftFilterColList, 0, sizeof(jtCtx.leftFilterColList)); - memset(jtCtx.rightFilterColList, 0, sizeof(jtCtx.rightFilterColList)); + TAOS_MEMSET(jtCtx.leftFilterColList, 0, sizeof(jtCtx.leftFilterColList)); + TAOS_MEMSET(jtCtx.rightFilterColList, 0, sizeof(jtCtx.rightFilterColList)); return; } @@ -676,8 +693,8 @@ void createFilterStart(SSortMergeJoinPhysiNode* p, bool filter) { } int32_t idx = 0; - memset(jtCtx.leftFilterColList, 0, sizeof(jtCtx.leftFilterColList)); - memset(jtCtx.rightFilterColList, 0, sizeof(jtCtx.rightFilterColList)); + TAOS_MEMSET(jtCtx.leftFilterColList, 0, sizeof(jtCtx.leftFilterColList)); + TAOS_MEMSET(jtCtx.rightFilterColList, 0, sizeof(jtCtx.rightFilterColList)); for (int32_t i = 0; i < jtCtx.leftFilterNum; ) { idx = taosRand() % MAX_SLOT_NUM; if (jtCtx.leftFilterColList[idx]) { @@ -705,6 +722,7 @@ void createFilterEnd(SSortMergeJoinPhysiNode* p, bool filter) { SLogicConditionNode* pLogic = NULL; if ((jtCtx.leftFilterNum + jtCtx.rightFilterNum) > 1) { pLogic = (SLogicConditionNode*)nodesMakeNode(QUERY_NODE_LOGIC_CONDITION); + assert(pLogic); pLogic->node.resType.type = TSDB_DATA_TYPE_BOOL; pLogic->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; pLogic->condType = LOGIC_COND_TYPE_AND; @@ -713,18 +731,21 @@ void createFilterEnd(SSortMergeJoinPhysiNode* p, bool filter) { for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (jtCtx.leftFilterColList[i]) { SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol); pCol->dataBlockId = RES_BLK_ID; pCol->slotId = getDstSlotId(i); pCol->node.resType.type = jtInputColType[i]; pCol->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - sprintf(pCol->colName, "l%d", i); + (void)sprintf(pCol->colName, "l%d", i); SValueNode* pVal = (SValueNode*)nodesMakeNode(QUERY_NODE_VALUE); + assert(pVal); pVal->node.resType.type = jtInputColType[i]; pVal->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - nodesSetValueNodeValue(pVal, getFilterValue(jtInputColType[i])); + assert(0 == nodesSetValueNodeValue(pVal, getFilterValue(jtInputColType[i]))); SOperatorNode* pOp = (SOperatorNode*)nodesMakeNode(QUERY_NODE_OPERATOR); + assert(pOp); pOp->opType = OP_TYPE_GREATER_THAN; pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; @@ -732,7 +753,7 @@ void createFilterEnd(SSortMergeJoinPhysiNode* p, bool filter) { pOp->pRight = (SNode*)pVal; if ((jtCtx.leftFilterNum + jtCtx.rightFilterNum) > 1) { - nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp); + assert(0 == nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp)); } else { p->node.pConditions = (SNode*)pOp; break; @@ -743,18 +764,21 @@ void createFilterEnd(SSortMergeJoinPhysiNode* p, bool filter) { for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (jtCtx.rightFilterColList[i]) { SColumnNode* pCol = (SColumnNode*)nodesMakeNode(QUERY_NODE_COLUMN); + assert(pCol); pCol->dataBlockId = RES_BLK_ID; pCol->slotId = getDstSlotId(MAX_SLOT_NUM + i); pCol->node.resType.type = jtInputColType[i]; pCol->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - sprintf(pCol->colName, "r%d", i); + (void)sprintf(pCol->colName, "r%d", i); SValueNode* pVal = (SValueNode*)nodesMakeNode(QUERY_NODE_VALUE); + assert(pVal); pVal->node.resType.type = jtInputColType[i]; pVal->node.resType.bytes = tDataTypes[jtInputColType[i]].bytes; - nodesSetValueNodeValue(pVal, getFilterValue(jtInputColType[i])); + assert(0 == nodesSetValueNodeValue(pVal, getFilterValue(jtInputColType[i]))); SOperatorNode* pOp = (SOperatorNode*)nodesMakeNode(QUERY_NODE_OPERATOR); + assert(pOp); pOp->opType = OP_TYPE_GREATER_THAN; pOp->node.resType.type = TSDB_DATA_TYPE_BOOL; pOp->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BOOL].bytes; @@ -762,7 +786,7 @@ void createFilterEnd(SSortMergeJoinPhysiNode* p, bool filter) { pOp->pRight = (SNode*)pVal; if ((jtCtx.leftFilterNum + jtCtx.rightFilterNum) > 1) { - nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp); + assert(0 == nodesListMakeStrictAppend(&pLogic->pParameterList, (SNode*)pOp)); } else { p->node.pConditions = (SNode*)pOp; break; @@ -787,17 +811,19 @@ void updateColRowInfo() { void createBlockDescNode(SDataBlockDescNode** ppNode) { SDataBlockDescNode* pDesc = (SDataBlockDescNode*)nodesMakeNode(QUERY_NODE_DATABLOCK_DESC); + assert(pDesc); pDesc->dataBlockId = RES_BLK_ID; pDesc->totalRowSize = jtCtx.resColSize - MAX_SLOT_NUM * 2 * sizeof(bool); pDesc->outputRowSize = pDesc->totalRowSize; for (int32_t i = 0; i < jtCtx.resColNum; ++i) { SSlotDescNode* pSlot = (SSlotDescNode*)nodesMakeNode(QUERY_NODE_SLOT_DESC); + assert(pSlot); pSlot->slotId = i; int32_t slotIdx = jtCtx.resColInSlot[i] >= MAX_SLOT_NUM ? jtCtx.resColInSlot[i] - MAX_SLOT_NUM : jtCtx.resColInSlot[i]; pSlot->dataType.type = jtInputColType[slotIdx]; pSlot->dataType.bytes = tDataTypes[pSlot->dataType.type].bytes; - nodesListMakeStrictAppend(&pDesc->pSlots, (SNode *)pSlot); + assert(0 == nodesListMakeStrictAppend(&pDesc->pSlots, (SNode *)pSlot)); } *ppNode = pDesc; @@ -805,12 +831,14 @@ void createBlockDescNode(SDataBlockDescNode** ppNode) { SSortMergeJoinPhysiNode* createDummySortMergeJoinPhysiNode(SJoinTestParam* param) { SSortMergeJoinPhysiNode* p = (SSortMergeJoinPhysiNode*)nodesMakeNode(QUERY_NODE_PHYSICAL_PLAN_MERGE_JOIN); + assert(p); p->joinType = param->joinType; p->subType = param->subType; p->asofOpType = param->asofOp; p->grpJoin = param->grpJoin; if (p->subType == JOIN_STYPE_WIN || param->jLimit > 1 || taosRand() % 2) { SLimitNode* limitNode = (SLimitNode*)nodesMakeNode(QUERY_NODE_LIMIT); + assert(limitNode); limitNode->limit = param->jLimit; p->pJLimit = (SNode*)limitNode; } @@ -820,8 +848,11 @@ SSortMergeJoinPhysiNode* createDummySortMergeJoinPhysiNode(SJoinTestParam* param p->node.inputTsOrder = param->asc ? ORDER_ASC : ORDER_DESC; if (JOIN_STYPE_WIN == p->subType) { SWindowOffsetNode* pOffset = (SWindowOffsetNode*)nodesMakeNode(QUERY_NODE_WINDOW_OFFSET); + assert(pOffset); SValueNode* pStart = (SValueNode*)nodesMakeNode(QUERY_NODE_VALUE); + assert(pStart); SValueNode* pEnd = (SValueNode*)nodesMakeNode(QUERY_NODE_VALUE); + assert(pEnd); pStart->node.resType.type = TSDB_DATA_TYPE_BIGINT; pStart->node.resType.bytes = tDataTypes[TSDB_DATA_TYPE_BIGINT].bytes; pStart->datum.i = (taosRand() % 2) ? (((int32_t)-1) * (int64_t)(taosRand() % JT_MAX_WINDOW_OFFSET)) : (taosRand() % JT_MAX_WINDOW_OFFSET); @@ -863,6 +894,7 @@ SSortMergeJoinPhysiNode* createDummySortMergeJoinPhysiNode(SJoinTestParam* param SExecTaskInfo* createDummyTaskInfo(char* taskId) { SExecTaskInfo* p = (SExecTaskInfo*)taosMemoryCalloc(1, sizeof(SExecTaskInfo)); + assert(p); p->id.str = taskId; return p; @@ -870,6 +902,7 @@ SExecTaskInfo* createDummyTaskInfo(char* taskId) { SSDataBlock* createDummyBlock(int32_t blkId) { SSDataBlock* p = createDataBlock(); + assert(p); p->info.id.blockId = blkId; p->info.type = STREAM_INVALID; @@ -881,14 +914,14 @@ SSDataBlock* createDummyBlock(int32_t blkId) { SColumnInfoData idata = createColumnInfoData(jtInputColType[i], tDataTypes[jtInputColType[i]].bytes, i); - blockDataAppendColInfo(p, &idata); + assert(0 == blockDataAppendColInfo(p, &idata)); } return p; } void appendAsofLeftEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rightRows) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { if (!jtCtx.resColList[c]) { continue; @@ -897,7 +930,7 @@ void appendAsofLeftEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rig if (*((bool*)leftInRow + c)) { *(char*)(jtCtx.resColBuf + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); } } @@ -913,10 +946,10 @@ void appendAsofLeftEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rig if (jtCtx.resColList[MAX_SLOT_NUM + c]) { if (*(bool*)(rightResRows + c)) { *(bool*)(jtCtx.resColBuf + MAX_SLOT_NUM + c) = true; - memset(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], 0, tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMSET(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], 0, tDataTypes[jtInputColType[c]].bytes); } else { *(bool*)(jtCtx.resColBuf + MAX_SLOT_NUM + c) = false; - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rightResRows + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rightResRows + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); } } } @@ -927,7 +960,7 @@ void appendAsofLeftEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rig void appendLeftNonMatchGrp(char* leftInRow) { if (!jtCtrl.noKeepResRows) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { if (!jtCtx.resColList[c]) { continue; @@ -936,7 +969,7 @@ void appendLeftNonMatchGrp(char* leftInRow) { if (*((bool*)leftInRow + c)) { *(char*)(jtCtx.resColBuf + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); } } @@ -957,13 +990,15 @@ void appendAllAsofResRows() { if (0 == jtCtx.rightFilterNum) { for (int32_t i = 0; i < leftRows; ++i) { char* leftInRow = (char*)taosArrayGet(jtCtx.leftRowsList, i); + assert(leftInRow); appendLeftNonMatchGrp(leftInRow); } } } else { - ASSERT(rightRows <= jtCtx.jLimit); + assert(rightRows <= jtCtx.jLimit); for (int32_t i = 0; i < leftRows; ++i) { char* leftInRow = (char*)taosArrayGet(jtCtx.leftRowsList, i); + assert(leftInRow); appendAsofLeftEachResGrps(leftInRow, 0, rightRows); } } @@ -982,10 +1017,12 @@ void chkAppendAsofForwardGrpResRows(bool forceOut) { int32_t i = 0; for (; i < leftRows; ++i) { char* leftRow = (char*)taosArrayGet(jtCtx.leftRowsList, i); + assert(leftRow); int64_t* leftTs = (int64_t*)(leftRow + jtCtx.inColOffset[JT_PRIM_TS_SLOT_ID]); bool append = false; for (int32_t r = rightOffset; r < rightRows; ++r) { char* rightRow = (char*)taosArrayGet(jtCtx.rightRowsList, r); + assert(rightRow); int64_t* rightTs = (int64_t*)(rightRow + jtCtx.inColOffset[JT_PRIM_TS_SLOT_ID]); if (((jtCtx.asc && *leftTs > *rightTs) || (!jtCtx.asc && *leftTs < *rightTs)) || (*leftTs == *rightTs && (OP_TYPE_LOWER_THAN == jtCtx.asofOpType || OP_TYPE_GREATER_THAN == jtCtx.asofOpType))) { rightOffset++; @@ -1030,7 +1067,7 @@ void appendWinEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rightRow return; } - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { if (!jtCtx.resColList[c]) { continue; @@ -1039,7 +1076,7 @@ void appendWinEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rightRow if (*((bool*)leftInRow + c)) { *(char*)(jtCtx.resColBuf + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[c], leftInRow + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); } } @@ -1052,14 +1089,15 @@ void appendWinEachResGrps(char* leftInRow, int32_t rightOffset, int32_t rightRow } char* rightResRows = (char*)taosArrayGet(jtCtx.rightRowsList, r); + assert(rightResRows); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { if (jtCtx.resColList[MAX_SLOT_NUM + c]) { if (*(bool*)(rightResRows + c)) { *(bool*)(jtCtx.resColBuf + MAX_SLOT_NUM + c) = true; - memset(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], 0, tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMSET(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], 0, tDataTypes[jtInputColType[c]].bytes); } else { *(bool*)(jtCtx.resColBuf + MAX_SLOT_NUM + c) = false; - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rightResRows + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rightResRows + jtCtx.inColOffset[c], tDataTypes[jtInputColType[c]].bytes); } } } @@ -1080,6 +1118,7 @@ void chkAppendWinResRows(bool forceOut) { int32_t i = 0; for (; i < leftRows; ++i) { char* leftRow = (char*)taosArrayGet(jtCtx.leftRowsList, i); + assert(leftRow); int64_t* leftTs = (int64_t*)(leftRow + jtCtx.inColOffset[JT_PRIM_TS_SLOT_ID]); int64_t winStart = *leftTs + jtCtx.winStartOffset; int64_t winEnd = *leftTs + jtCtx.winEndOffset; @@ -1088,6 +1127,7 @@ void chkAppendWinResRows(bool forceOut) { bool winClosed = false; for (int32_t r = rightOffset; r < rightRows; ++r) { char* rightRow = (char*)taosArrayGet(jtCtx.rightRowsList, r); + assert(rightRow); int64_t* rightTs = (int64_t*)(rightRow + jtCtx.inColOffset[JT_PRIM_TS_SLOT_ID]); if ((jtCtx.asc && *rightTs < winStart) || (!jtCtx.asc && *rightTs > winEnd)) { rightOffset++; @@ -1154,8 +1194,9 @@ void createGrpRows(SSDataBlock** ppBlk, int32_t blkId, int32_t grpRows) { if (NULL == *ppBlk) { *ppBlk = createDummyBlock((blkId == LEFT_BLK_ID) ? LEFT_BLK_ID : RIGHT_BLK_ID); - blockDataEnsureCapacity(*ppBlk, jtCtx.blkRows); - taosArrayPush((blkId == LEFT_BLK_ID) ? jtCtx.leftBlkList : jtCtx.rightBlkList, ppBlk); + assert(*ppBlk); + assert(0 == blockDataEnsureCapacity(*ppBlk, jtCtx.blkRows)); + assert(NULL != taosArrayPush((blkId == LEFT_BLK_ID) ? jtCtx.leftBlkList : jtCtx.rightBlkList, ppBlk)); } if (jtCtx.grpJoin) { @@ -1207,8 +1248,9 @@ void createGrpRows(SSDataBlock** ppBlk, int32_t blkId, int32_t grpRows) { for (int32_t i = 0; i < grpRows; ++i) { if ((*ppBlk)->info.rows >= (*ppBlk)->info.capacity) { *ppBlk = createDummyBlock((blkId == LEFT_BLK_ID) ? LEFT_BLK_ID : RIGHT_BLK_ID); - blockDataEnsureCapacity(*ppBlk, jtCtx.blkRows); - taosArrayPush((blkId == LEFT_BLK_ID) ? jtCtx.leftBlkList : jtCtx.rightBlkList, ppBlk); + assert(*ppBlk); + assert(0 == blockDataEnsureCapacity(*ppBlk, jtCtx.blkRows)); + assert(NULL != taosArrayPush((blkId == LEFT_BLK_ID) ? jtCtx.leftBlkList : jtCtx.rightBlkList, ppBlk)); if (jtCtx.grpJoin) { (*ppBlk)->info.id.groupId = jtCtx.inGrpId; } @@ -1216,9 +1258,9 @@ void createGrpRows(SSDataBlock** ppBlk, int32_t blkId, int32_t grpRows) { filterOut = (peerFilterNum > 0 && (jtCtx.subType != JOIN_STYPE_ASOF && jtCtx.subType != JOIN_STYPE_WIN)) ? true : false; if (!filterOut) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); if (keepInput) { - memset(jtCtx.inColBuf, 0, jtCtx.inColSize); + TAOS_MEMSET(jtCtx.inColBuf, 0, jtCtx.inColSize); } } @@ -1262,14 +1304,15 @@ void createGrpRows(SSDataBlock** ppBlk, int32_t blkId, int32_t grpRows) { } SColumnInfoData* pCol = (SColumnInfoData*)taosArrayGet((*ppBlk)->pDataBlock, c); - colDataSetVal(pCol, (*ppBlk)->info.rows, pData, isNull); + assert(pCol); + assert(0 == colDataSetVal(pCol, (*ppBlk)->info.rows, pData, isNull)); if (keepInput) { if (!filterOut || (blkId != LEFT_BLK_ID)) { if (isNull) { *(char*)(jtCtx.inColBuf + c) = true; } else { - memcpy(jtCtx.inColBuf + jtCtx.inColOffset[c], pData, tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.inColBuf + jtCtx.inColOffset[c], pData, tDataTypes[jtInputColType[c]].bytes); } } else { addToRowList = false; @@ -1278,16 +1321,16 @@ void createGrpRows(SSDataBlock** ppBlk, int32_t blkId, int32_t grpRows) { if (isNull) { *(char*)(jtCtx.resColBuf + tableOffset + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[tableOffset + c], pData, tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[tableOffset + c], pData, tDataTypes[jtInputColType[c]].bytes); } } } if (keepInput && addToRowList) { - taosArrayPush(pTableRows, jtCtx.inColBuf); + assert(NULL != taosArrayPush(pTableRows, jtCtx.inColBuf)); if (blkId == RIGHT_BLK_ID) { bool fout = filterOut ? true : false; - taosArrayPush(jtCtx.rightFilterOut, &fout); + assert(NULL != taosArrayPush(jtCtx.rightFilterOut, &fout)); } } @@ -1328,27 +1371,28 @@ void createRowData(SSDataBlock* pBlk, int64_t tbOffset, int32_t rowIdx, int32_t for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { SColumnInfoData* pCol = (SColumnInfoData*)taosArrayGet(pBlk->pDataBlock, c); + assert(pCol); int32_t rv = taosRand() % 10; switch (jtInputColType[c]) { case TSDB_DATA_TYPE_TIMESTAMP: *(int64_t*)(jtCtx.colRowDataBuf + tbOffset + rowIdx * jtCtx.blkRowSize + jtCtx.colRowOffset[c]) = jtCtx.curTs; - colDataSetVal(pCol, pBlk->info.rows, (char*)&jtCtx.curTs, false); + assert(0 == colDataSetVal(pCol, pBlk->info.rows, (char*)&jtCtx.curTs, false)); break; case TSDB_DATA_TYPE_INT: if (rv) { tmpInt = (taosRand() % 2) ? INT_FILTER_VALUE + jtCtx.grpOffset[c] + taosRand() % vRange : INT_FILTER_VALUE - taosRand() % vRange; *(int32_t*)(jtCtx.colRowDataBuf + tbOffset + rowIdx * jtCtx.blkRowSize + jtCtx.colRowOffset[c]) = tmpInt; - colDataSetVal(pCol, pBlk->info.rows, (char*)&tmpInt, false); + assert(0 == colDataSetVal(pCol, pBlk->info.rows, (char*)&tmpInt, false)); } else { *(bool*)(jtCtx.colRowDataBuf + tbOffset + rowIdx * jtCtx.blkRowSize + c) = true; - colDataSetVal(pCol, pBlk->info.rows, NULL, true); + assert(0 == colDataSetVal(pCol, pBlk->info.rows, NULL, true)); } break; case TSDB_DATA_TYPE_BIGINT: tmpBig = (taosRand() % 2) ? BIGINT_FILTER_VALUE + jtCtx.curKeyOffset++ : BIGINT_FILTER_VALUE - jtCtx.curKeyOffset++; *(int64_t*)(jtCtx.colRowDataBuf + tbOffset + rowIdx * jtCtx.blkRowSize + jtCtx.colRowOffset[c]) = tmpBig; - colDataSetVal(pCol, pBlk->info.rows, (char*)&tmpBig, false); + assert(0 == colDataSetVal(pCol, pBlk->info.rows, (char*)&tmpBig, false)); break; default: break; @@ -1364,9 +1408,10 @@ void makeAppendBlkData(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left if (jtCtx.colRowDataBufSize < totalSize) { jtCtx.colRowDataBuf = (char*)taosMemoryRealloc(jtCtx.colRowDataBuf, totalSize); + assert(jtCtx.colRowDataBuf); } - memset(jtCtx.colRowDataBuf, 0, totalSize); + TAOS_MEMSET(jtCtx.colRowDataBuf, 0, totalSize); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { jtCtx.grpOffset[c] = c * TMAX(leftGrpRows, rightGrpRows); @@ -1376,8 +1421,9 @@ void makeAppendBlkData(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left for (int32_t i = 0; i < leftGrpRows; ++i) { if ((*ppLeft)->info.rows >= (*ppLeft)->info.capacity) { *ppLeft = createDummyBlock(LEFT_BLK_ID); - blockDataEnsureCapacity(*ppLeft, jtCtx.blkRows); - taosArrayPush(jtCtx.leftBlkList, ppLeft); + assert(*ppLeft); + assert(0 == blockDataEnsureCapacity(*ppLeft, jtCtx.blkRows)); + assert(NULL != taosArrayPush(jtCtx.leftBlkList, ppLeft)); if (jtCtx.grpJoin) { (*ppLeft)->info.id.groupId = jtCtx.inGrpId; } @@ -1390,8 +1436,9 @@ void makeAppendBlkData(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left for (int32_t i = 0; i < rightGrpRows; ++i) { if ((*ppRight)->info.rows >= (*ppRight)->info.capacity) { *ppRight = createDummyBlock(RIGHT_BLK_ID); - blockDataEnsureCapacity(*ppRight, jtCtx.blkRows); - taosArrayPush(jtCtx.rightBlkList, ppRight); + assert(*ppRight); + assert(0 == blockDataEnsureCapacity(*ppRight, jtCtx.blkRows)); + assert(NULL != taosArrayPush(jtCtx.rightBlkList, ppRight)); if (jtCtx.grpJoin) { (*ppRight)->info.id.groupId = jtCtx.inGrpId; } @@ -1404,14 +1451,14 @@ void makeAppendBlkData(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left void putNMatchRowToRes(char* lrow, int32_t tableOffset, int32_t peerOffset) { if (!jtCtrl.noKeepResRows) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { if (jtCtx.resColList[tableOffset + c]) { if (*(bool*)(lrow + c)) { *(bool*)(jtCtx.resColBuf + tableOffset + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[tableOffset + c], lrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[tableOffset + c], lrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); } } } @@ -1428,7 +1475,7 @@ void putNMatchRowToRes(char* lrow, int32_t tableOffset, int32_t peerOffset) { void putMatchRowToRes(char* lrow, char* rrow, int32_t cols) { if (!jtCtrl.noKeepResRows) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); if (cols & LEFT_TABLE_COLS) { for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { @@ -1436,7 +1483,7 @@ void putMatchRowToRes(char* lrow, char* rrow, int32_t cols) { if (*(bool*)(lrow + c)) { *(bool*)(jtCtx.resColBuf + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[c], lrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[c], lrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); } } } @@ -1448,7 +1495,7 @@ void putMatchRowToRes(char* lrow, char* rrow, int32_t cols) { if (*(bool*)(rrow + c)) { *(bool*)(jtCtx.resColBuf + MAX_SLOT_NUM + c) = true; } else { - memcpy(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); + TAOS_MEMCPY(jtCtx.resColBuf + jtCtx.resColOffset[MAX_SLOT_NUM + c], rrow + jtCtx.colRowOffset[c], tDataTypes[jtInputColType[c]].bytes); } } } @@ -1824,7 +1871,7 @@ void antiJoinAppendEqGrpRes(int32_t leftGrpRows, int32_t rightGrpRows) { int64_t lBig = 0, rBig = 0, fbig = 0; int64_t rightTbOffset = jtCtx.blkRowSize * leftGrpRows; - ASSERT(0 == jtCtx.rightFilterNum); + assert(0 == jtCtx.rightFilterNum); for (int32_t l = 0; l < leftGrpRows; ++l) { char* lrow = jtCtx.colRowDataBuf + jtCtx.blkRowSize * l; @@ -1977,9 +2024,9 @@ void addAsofEqInRows(int32_t rowsNum, int64_t tbOffset, bool leftTable) { continue; } - taosArrayPush(rowList, row); + assert(NULL != taosArrayPush(rowList, row)); if (!leftTable) { - taosArrayPush(jtCtx.rightFilterOut, &filterOut); + assert(NULL != taosArrayPush(jtCtx.rightFilterOut, &filterOut)); } } @@ -2103,9 +2150,9 @@ void addWinEqInRows(int32_t rowsNum, int64_t tbOffset, bool leftTable) { continue; } - taosArrayPush(rowList, row); + assert(NULL != taosArrayPush(rowList, row)); if (!leftTable) { - taosArrayPush(jtCtx.rightFilterOut, &filterOut); + assert(NULL != taosArrayPush(jtCtx.rightFilterOut, &filterOut)); } } } @@ -2127,7 +2174,7 @@ void fullJoinAppendEqGrpRes(int32_t leftGrpRows, int32_t rightGrpRows) { int64_t lBig = 0, rBig = 0, fbig = 0; int64_t rightTbOffset = jtCtx.blkRowSize * leftGrpRows; - memset(jtCtx.rightFinMatch, 0, rightGrpRows * sizeof(bool)); + TAOS_MEMSET(jtCtx.rightFinMatch, 0, rightGrpRows * sizeof(bool)); for (int32_t l = 0; l < leftGrpRows; ++l) { char* lrow = jtCtx.colRowDataBuf + jtCtx.blkRowSize * l; @@ -2285,8 +2332,9 @@ void createTsEqGrpRows(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left if (NULL == *ppLeft && leftGrpRows > 0) { *ppLeft = createDummyBlock(LEFT_BLK_ID); - blockDataEnsureCapacity(*ppLeft, jtCtx.blkRows); - taosArrayPush(jtCtx.leftBlkList, ppLeft); + assert(*ppLeft); + assert(0 == blockDataEnsureCapacity(*ppLeft, jtCtx.blkRows)); + assert(NULL != taosArrayPush(jtCtx.leftBlkList, ppLeft)); } if (jtCtx.grpJoin) { @@ -2295,8 +2343,9 @@ void createTsEqGrpRows(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left if (NULL == *ppRight && rightGrpRows > 0) { *ppRight = createDummyBlock(RIGHT_BLK_ID); - blockDataEnsureCapacity(*ppRight, jtCtx.blkRows); - taosArrayPush(jtCtx.rightBlkList, ppRight); + assert(*ppRight); + assert(0 == blockDataEnsureCapacity(*ppRight, jtCtx.blkRows)); + assert(NULL != taosArrayPush(jtCtx.rightBlkList, ppRight)); } if (jtCtx.grpJoin) { @@ -2311,7 +2360,7 @@ void createTsEqGrpRows(SSDataBlock** ppLeft, SSDataBlock** ppRight, int32_t left void forceFlushResRows() { if (JOIN_STYPE_ASOF == jtCtx.subType && taosArrayGetSize(jtCtx.leftRowsList) > 0) { - ASSERT((jtCtx.asc && (OP_TYPE_LOWER_EQUAL == jtCtx.asofOpType || OP_TYPE_LOWER_THAN == jtCtx.asofOpType)) + assert((jtCtx.asc && (OP_TYPE_LOWER_EQUAL == jtCtx.asofOpType || OP_TYPE_LOWER_THAN == jtCtx.asofOpType)) || (!jtCtx.asc && (OP_TYPE_GREATER_EQUAL == jtCtx.asofOpType || OP_TYPE_GREATER_THAN == jtCtx.asofOpType))); chkAppendAsofForwardGrpResRows(true); } else if (JOIN_STYPE_WIN == jtCtx.subType && taosArrayGetSize(jtCtx.leftRowsList) > 0) { @@ -2404,6 +2453,7 @@ void createDummyBlkList(int32_t leftMaxRows, int32_t leftMaxGrpRows, int32_t rig if (maxGrpRows > jtCtx.rightFinMatchNum) { jtCtx.rightFinMatchNum = maxGrpRows; jtCtx.rightFinMatch = (bool*)taosMemoryRealloc(jtCtx.rightFinMatch, maxGrpRows * sizeof(bool)); + assert(jtCtx.rightFinMatch); } taosArrayClear(jtCtx.leftRowsList); @@ -2466,43 +2516,44 @@ void joinTestReplaceRetrieveFp() { void printColList(char* title, bool left, int32_t* colList, bool filter, char* opStr) { bool first = true; - printf("\t %s:", title); + JT_PRINTF("\t %s:", title); for (int32_t i = 0; i < MAX_SLOT_NUM; ++i) { if (colList[i]) { if (!first) { - printf(" AND "); + JT_PRINTF(" AND "); } first = false; if (filter) { - printf("%sc%d%s%" PRId64 , left ? "l" : "r", i, opStr, jtFilterValue[i]); + JT_PRINTF("%sc%d%s%" PRId64 , left ? "l" : "r", i, opStr, jtFilterValue[i]); } else { - printf("lc%d%src%d", i, opStr, i); + JT_PRINTF("lc%d%src%d", i, opStr, i); } } } - printf("\n"); + JT_PRINTF("\n"); } void printInputRowData(SSDataBlock* pBlk, int32_t* rowIdx) { if (jtCtx.grpJoin) { - printf("%5" PRIu64, pBlk->info.id.groupId); + JT_PRINTF("%5" PRIu64, pBlk->info.id.groupId); } for (int32_t c = 0; c < MAX_SLOT_NUM; ++c) { SColumnInfoData* pCol = (SColumnInfoData*)taosArrayGet(pBlk->pDataBlock, c); - ASSERT(pCol->info.type == jtInputColType[c]); + assert(pCol); + assert(pCol->info.type == jtInputColType[c]); if (colDataIsNull_s(pCol, *rowIdx)) { - printf("%18s", " NULL"); + JT_PRINTF("%18s", " NULL"); } else { switch (jtInputColType[c]) { case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_BIGINT: - printf("%18" PRId64, *(int64_t*)colDataGetData(pCol, *rowIdx)); + JT_PRINTF("%18" PRId64, *(int64_t*)colDataGetData(pCol, *rowIdx)); break; case TSDB_DATA_TYPE_INT: - printf("%18d", *(int32_t*)colDataGetData(pCol, *rowIdx)); + JT_PRINTF("%18d", *(int32_t*)colDataGetData(pCol, *rowIdx)); break; default: - ASSERT(0); + assert(0); } } } @@ -2513,41 +2564,43 @@ void printInputRowData(SSDataBlock* pBlk, int32_t* rowIdx) { void printInputData() { int32_t leftRowIdx = 0, rightRowIdx = 0; - printf("\nInput Data:\n"); + JT_PRINTF("\nInput Data:\n"); while (jtCtx.leftBlkReadIdx < taosArrayGetSize(jtCtx.leftBlkList) || jtCtx.rightBlkReadIdx < taosArrayGetSize(jtCtx.rightBlkList)) { if (jtCtx.leftBlkReadIdx < taosArrayGetSize(jtCtx.leftBlkList)) { while (true) { SSDataBlock* pBlk = (SSDataBlock*)taosArrayGetP(jtCtx.leftBlkList, jtCtx.leftBlkReadIdx); + assert(pBlk); if (leftRowIdx < pBlk->info.rows) { printInputRowData(pBlk, &leftRowIdx); break; } - printf("\t%*s-------------------------blk end-------------------------------", jtCtx.grpJoin ? 6 : 0, " "); + JT_PRINTF("\t%*s-------------------------blk end-------------------------------", jtCtx.grpJoin ? 6 : 0, " "); jtCtx.leftBlkReadIdx++; leftRowIdx = 0; break; } } else { - printf("%*s", jtCtx.grpJoin ? 77 : 72, " "); + JT_PRINTF("%*s", jtCtx.grpJoin ? 77 : 72, " "); } if (jtCtx.rightBlkReadIdx < taosArrayGetSize(jtCtx.rightBlkList)) { while (true) { SSDataBlock* pBlk = (SSDataBlock*)taosArrayGetP(jtCtx.rightBlkList, jtCtx.rightBlkReadIdx); + assert(pBlk); if (rightRowIdx < pBlk->info.rows) { printInputRowData(pBlk, &rightRowIdx); break; } - printf("\t%*s--------------------------blk end----------------------------\t", jtCtx.grpJoin ? 6 : 0, " "); + JT_PRINTF("\t%*s--------------------------blk end----------------------------\t", jtCtx.grpJoin ? 6 : 0, " "); jtCtx.rightBlkReadIdx++; rightRowIdx = 0; break; } } - printf("\n"); + JT_PRINTF("\n"); } jtCtx.leftBlkReadIdx = jtCtx.rightBlkReadIdx = 0; @@ -2555,13 +2608,13 @@ void printInputData() { char* getInputStatStr(char* inputStat) { if (jtCtx.inputStat & (1 << LEFT_BLK_ID)) { - strcat(inputStat, "L"); + TAOS_STRCAT(inputStat, "L"); } if (jtCtx.inputStat & (1 << RIGHT_BLK_ID)) { - strcat(inputStat, "R"); + TAOS_STRCAT(inputStat, "R"); } if (jtCtx.inputStat & (1 << 2)) { - strcat(inputStat, "E"); + TAOS_STRCAT(inputStat, "E"); } return inputStat; } @@ -2589,19 +2642,19 @@ void printBasicInfo(char* caseName) { } char inputStat[4] = {0}; - printf("\n%dth TEST [%s] START\nBasic Info:\n\t asc:%d\n\t filter:%d\n\t maxRows:left-%d right-%d\n\t " + JT_PRINTF("\n%dth TEST [%s] START\nBasic Info:\n\t asc:%d\n\t filter:%d\n\t maxRows:left-%d right-%d\n\t " "maxGrpRows:left-%d right-%d\n\t blkRows:%d\n\t colCond:%s\n\t joinType:%s\n\t " "subType:%s\n\t inputStat:%s\n\t groupJoin:%s\n", jtCtx.loopIdx, caseName, jtCtx.asc, jtCtx.filter, jtCtx.leftMaxRows, jtCtx.rightMaxRows, jtCtx.leftMaxGrpRows, jtCtx.rightMaxGrpRows, jtCtx.blkRows, jtColCondStr[jtCtx.colCond], jtJoinTypeStr[jtCtx.joinType], jtSubTypeStr[jtCtx.subType], getInputStatStr(inputStat), jtCtx.grpJoin ? "true" : "false"); if (JOIN_STYPE_ASOF == jtCtx.subType) { - printf("\t asofOp:%s\n\t JLimit:%" PRId64 "\n", getAsofOpStr(), jtCtx.jLimit); + JT_PRINTF("\t asofOp:%s\n\t JLimit:%" PRId64 "\n", getAsofOpStr(), jtCtx.jLimit); } else if (JOIN_STYPE_WIN == jtCtx.subType) { - printf("\t windowOffset:[%" PRId64 ", %" PRId64 "]\n\t JLimit:%" PRId64 "\n", jtCtx.winStartOffset, jtCtx.winEndOffset, jtCtx.jLimit); + JT_PRINTF("\t windowOffset:[%" PRId64 ", %" PRId64 "]\n\t JLimit:%" PRId64 "\n", jtCtx.winStartOffset, jtCtx.winEndOffset, jtCtx.jLimit); } - printf("Input Info:\n\t totalBlk:left-%d right-%d\n\t totalRows:left-%d right-%d\n\t " + JT_PRINTF("Input Info:\n\t totalBlk:left-%d right-%d\n\t totalRows:left-%d right-%d\n\t " "blkRowSize:%d\n\t inputCols:left-%s %s %s %s right-%s %s %s %s\n", (int32_t)taosArrayGetSize(jtCtx.leftBlkList), (int32_t)taosArrayGetSize(jtCtx.rightBlkList), jtCtx.leftTotalRows, jtCtx.rightTotalRows, @@ -2610,30 +2663,30 @@ void printBasicInfo(char* caseName) { tDataTypes[jtInputColType[1]].name, tDataTypes[jtInputColType[2]].name, tDataTypes[jtInputColType[3]].name); if (jtCtx.colEqNum) { - printf("\t colEqNum:%d\n", jtCtx.colEqNum); + JT_PRINTF("\t colEqNum:%d\n", jtCtx.colEqNum); printColList("colEqList", false, jtCtx.colEqList, false, "="); } if (jtCtx.colOnNum) { - printf("\t colOnNum:%d\n", jtCtx.colOnNum); + JT_PRINTF("\t colOnNum:%d\n", jtCtx.colOnNum); printColList("colOnList", false, jtCtx.colOnList, false, ">"); } if (jtCtx.leftFilterNum) { - printf("\t leftFilterNum:%d\n", jtCtx.leftFilterNum); + JT_PRINTF("\t leftFilterNum:%d\n", jtCtx.leftFilterNum); printColList("leftFilterList", true, jtCtx.leftFilterColList, true, ">"); } if (jtCtx.rightFilterNum) { - printf("\t rightFilterNum:%d\n", jtCtx.rightFilterNum); + JT_PRINTF("\t rightFilterNum:%d\n", jtCtx.rightFilterNum); printColList("rightFilterList", false, jtCtx.rightFilterColList, true, ">"); } - printf("\t resColSize:%d\n\t resColNum:%d\n\t resColList:", jtCtx.resColSize, jtCtx.resColNum); + JT_PRINTF("\t resColSize:%d\n\t resColNum:%d\n\t resColList:", jtCtx.resColSize, jtCtx.resColNum); for (int32_t i = 0; i < jtCtx.resColNum; ++i) { int32_t s = jtCtx.resColInSlot[i]; int32_t idx = s >= MAX_SLOT_NUM ? s - MAX_SLOT_NUM : s; - printf("%sc%d[%s]\t", s >= MAX_SLOT_NUM ? "r" : "l", s, tDataTypes[jtInputColType[idx]].name); + JT_PRINTF("%sc%d[%s]\t", s >= MAX_SLOT_NUM ? "r" : "l", s, tDataTypes[jtInputColType[idx]].name); } if (jtCtrl.printInputRow) { @@ -2646,8 +2699,8 @@ void printOutputInfo() { return; } - printf("\nOutput Info:\n\t expectedRows:%d\n\t ", jtCtx.resRows); - printf("Actual Result:\n"); + JT_PRINTF("\nOutput Info:\n\t expectedRows:%d\n\t ", jtCtx.resRows); + JT_PRINTF("Actual Result:\n"); } void printActualResInfo() { @@ -2655,7 +2708,7 @@ void printActualResInfo() { return; } - printf("Actual Result Summary:\n\t blkNum:%d\n\t rowNum:%d%s\n\t leftBlkRead:%d\n\t rightBlkRead:%d\n\t +rows:%d%s\n\t " + JT_PRINTF("Actual Result Summary:\n\t blkNum:%d\n\t rowNum:%d%s\n\t leftBlkRead:%d\n\t rightBlkRead:%d\n\t +rows:%d%s\n\t " "-rows:%d%s\n\t matchRows:%d%s\n\t executionTime:%" PRId64 "us\n", jtRes.blkNum, jtRes.rowNum, jtRes.rowNum == jtCtx.resRows ? "" : "*", @@ -2667,7 +2720,7 @@ void printActualResInfo() { } void printStatInfo(char* caseName) { - printf("\n TEST [%s] Stat:\n\t maxResRows:%d\n\t maxResBlkRows:%d\n\t totalResRows:%" PRId64 "\n\t useMSecs:%" PRId64 "\n", + JT_PRINTF("\n TEST [%s] Stat:\n\t maxResRows:%d\n\t maxResBlkRows:%d\n\t totalResRows:%" PRId64 "\n\t useMSecs:%" PRId64 "\n", caseName, jtStat.maxResRows, jtStat.maxResBlkRows, jtStat.totalResRows, jtStat.useMSecs); } @@ -2689,7 +2742,7 @@ void checkJoinDone(char* caseName) { printActualResInfo(); - printf("\n%dth TEST [%s] Final Result: %s\n", jtCtx.loopIdx, caseName, jtRes.succeed ? "SUCCEED" : "FAILED"); + JT_PRINTF("\n%dth TEST [%s] Final Result: %s\n", jtCtx.loopIdx, caseName, jtRes.succeed ? "SUCCEED" : "FAILED"); } void putRowToResColBuf(SSDataBlock* pBlock, int32_t r, bool ignoreTbCols) { @@ -2701,6 +2754,7 @@ void putRowToResColBuf(SSDataBlock* pBlock, int32_t r, bool ignoreTbCols) { } SColumnInfoData* pCol = (SColumnInfoData*)taosArrayGet(pBlock->pDataBlock, c); + assert(pCol); switch (jtInputColType[slot % MAX_SLOT_NUM]) { case TSDB_DATA_TYPE_TIMESTAMP: case TSDB_DATA_TYPE_BIGINT: @@ -2739,7 +2793,7 @@ void checkJoinRes(SSDataBlock* pBlock) { jtRes.matchNum += pBlock->info.rows; } else { for (int32_t r = 0; r < pBlock->info.rows; ++r) { - memset(jtCtx.resColBuf, 0, jtCtx.resColSize); + TAOS_MEMSET(jtCtx.resColBuf, 0, jtCtx.resColSize); putRowToResColBuf(pBlock, r, true); @@ -2766,7 +2820,7 @@ void resetForJoinRerun(int32_t dsNum, SSortMergeJoinPhysiNode* pNode, SExecTaskI jtCtx.rightBlkReadIdx = 0; jtCtx.curKeyOffset = 0; - memset(&jtRes, 0, sizeof(jtRes)); + TAOS_MEMSET(&jtRes, 0, sizeof(jtRes)); jtRes.succeed = true; SOperatorInfo* pDownstreams[2]; @@ -2800,10 +2854,10 @@ void jtInitLogFile() { tsAsyncLog = 0; qDebugFlag = 159; - strcpy(tsLogDir, TD_LOG_DIR_PATH); + TAOS_STRCPY(tsLogDir, TD_LOG_DIR_PATH); if (taosInitLog(defaultLogFileNamePrefix, maxLogFileNum) < 0) { - printf("failed to open log file in directory:%s\n", tsLogDir); + JT_PRINTF("failed to open log file in directory:%s\n", tsLogDir); } } @@ -2812,12 +2866,15 @@ void jtInitLogFile() { void initJoinTest() { jtCtx.leftBlkList = taosArrayInit(10, POINTER_BYTES); jtCtx.rightBlkList = taosArrayInit(10, POINTER_BYTES); + assert(jtCtx.leftBlkList && jtCtx.rightBlkList); jtCtx.jtResRows = tSimpleHashInit(10000000, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY)); + assert(jtCtx.jtResRows); joinTestReplaceRetrieveFp(); if (jtCtrl.logHistory) { jtStat.pHistory = taosArrayInit(100000, sizeof(SJoinTestHistory)); + assert(jtStat.pHistory); } int32_t offset = MAX_SLOT_NUM * sizeof(bool); @@ -2827,10 +2884,12 @@ void initJoinTest() { } jtCtx.inColSize = offset; jtCtx.inColBuf = (char*)taosMemoryMalloc(jtCtx.inColSize); + assert(jtCtx.inColBuf); jtCtx.leftRowsList = taosArrayInit(1024, jtCtx.inColSize); jtCtx.rightRowsList = taosArrayInit(1024, jtCtx.inColSize); jtCtx.rightFilterOut = taosArrayInit(1024, sizeof(bool)); + assert(jtCtx.leftRowsList && jtCtx.rightRowsList && jtCtx.rightFilterOut); jtInitLogFile(); } @@ -2838,22 +2897,24 @@ void initJoinTest() { void handleTestDone() { if (jtCtrl.logHistory) { SJoinTestHistory h; - memcpy(&h.ctx, &jtCtx, sizeof(h.ctx)); - memcpy(&h.res, &jtRes, sizeof(h.res)); - taosArrayPush(jtStat.pHistory, &h); + TAOS_MEMCPY(&h.ctx, &jtCtx, sizeof(h.ctx)); + TAOS_MEMCPY(&h.res, &jtRes, sizeof(h.res)); + assert(NULL != taosArrayPush(jtStat.pHistory, &h)); } int32_t blkNum = taosArrayGetSize(jtCtx.leftBlkList); for (int32_t i = 0; i < blkNum; ++i) { SSDataBlock* pBlk = (SSDataBlock*)taosArrayGetP(jtCtx.leftBlkList, i); - blockDataDestroy(pBlk); + assert(pBlk); + (void)blockDataDestroy(pBlk); } taosArrayClear(jtCtx.leftBlkList); blkNum = taosArrayGetSize(jtCtx.rightBlkList); for (int32_t i = 0; i < blkNum; ++i) { SSDataBlock* pBlk = (SSDataBlock*)taosArrayGetP(jtCtx.rightBlkList, i); - blockDataDestroy(pBlk); + assert(pBlk); + (void)blockDataDestroy(pBlk); } taosArrayClear(jtCtx.rightBlkList); @@ -2867,6 +2928,7 @@ void runSingleTest(char* caseName, SJoinTestParam* param) { bool contLoop = true; SSortMergeJoinPhysiNode* pNode = createDummySortMergeJoinPhysiNode(param); + assert(pNode); createDummyBlkList(1000, 1000, 1000, 1000, 100); while (contLoop) { @@ -2906,6 +2968,7 @@ TEST(innerJoin, noCondTest) { SJoinTestParam param; char* caseName = "innerJoin:noCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_INNER; @@ -2933,6 +2996,7 @@ TEST(innerJoin, eqCondTest) { SJoinTestParam param; char* caseName = "innerJoin:eqCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_INNER; @@ -2960,6 +3024,7 @@ TEST(innerJoin, onCondTest) { SJoinTestParam param; char* caseName = "innerJoin:onCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_INNER; @@ -2987,6 +3052,7 @@ TEST(innerJoin, fullCondTest) { SJoinTestParam param; char* caseName = "innerJoin:fullCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_INNER; @@ -3017,6 +3083,7 @@ TEST(leftOuterJoin, noCondTest) { SJoinTestParam param; char* caseName = "leftOuterJoin:noCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3045,6 +3112,7 @@ TEST(leftOuterJoin, eqCondTest) { SJoinTestParam param; char* caseName = "leftOuterJoin:eqCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3072,6 +3140,7 @@ TEST(leftOuterJoin, onCondTest) { SJoinTestParam param; char* caseName = "leftOuterJoin:onCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3099,6 +3168,7 @@ TEST(leftOuterJoin, fullCondTest) { SJoinTestParam param; char* caseName = "leftOuterJoin:fullCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3128,6 +3198,7 @@ TEST(fullOuterJoin, noCondTest) { SJoinTestParam param; char* caseName = "fullOuterJoin:noCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_FULL; @@ -3155,6 +3226,7 @@ TEST(fullOuterJoin, eqCondTest) { SJoinTestParam param; char* caseName = "fullOuterJoin:eqCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_FULL; @@ -3183,6 +3255,7 @@ TEST(fullOuterJoin, onCondTest) { SJoinTestParam param; char* caseName = "fullOuterJoin:onCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_FULL; @@ -3210,6 +3283,7 @@ TEST(fullOuterJoin, fullCondTest) { SJoinTestParam param; char* caseName = "fullOuterJoin:fullCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_FULL; @@ -3239,6 +3313,7 @@ TEST(leftSemiJoin, noCondTest) { SJoinTestParam param; char* caseName = "leftSemiJoin:noCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3266,6 +3341,7 @@ TEST(leftSemiJoin, eqCondTest) { SJoinTestParam param; char* caseName = "leftSemiJoin:eqCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3294,6 +3370,7 @@ TEST(leftSemiJoin, onCondTest) { SJoinTestParam param; char* caseName = "leftSemiJoin:onCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3321,6 +3398,7 @@ TEST(leftSemiJoin, fullCondTest) { SJoinTestParam param; char* caseName = "leftSemiJoin:fullCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3350,6 +3428,7 @@ TEST(leftAntiJoin, noCondTest) { SJoinTestParam param; char* caseName = "leftAntiJoin:noCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3377,6 +3456,7 @@ TEST(leftAntiJoin, eqCondTest) { SJoinTestParam param; char* caseName = "leftAntiJoin:eqCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3405,6 +3485,7 @@ TEST(leftAntiJoin, onCondTest) { SJoinTestParam param; char* caseName = "leftAntiJoin:onCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3432,6 +3513,7 @@ TEST(leftAntiJoin, fullCondTest) { SJoinTestParam param; char* caseName = "leftAntiJoin:fullCondTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3461,6 +3543,7 @@ TEST(leftAsofJoin, noCondGreaterThanTest) { SJoinTestParam param; char* caseName = "leftAsofJoin:noCondGreaterThanTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3492,6 +3575,7 @@ TEST(leftAsofJoin, noCondGreaterEqTest) { SJoinTestParam param; char* caseName = "leftAsofJoin:noCondGreaterEqTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3523,6 +3607,7 @@ TEST(leftAsofJoin, noCondEqTest) { SJoinTestParam param; char* caseName = "leftAsofJoin:noCondEqTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3554,6 +3639,7 @@ TEST(leftAsofJoin, noCondLowerThanTest) { SJoinTestParam param; char* caseName = "leftAsofJoin:noCondLowerThanTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3586,6 +3672,7 @@ TEST(leftAsofJoin, noCondLowerEqTest) { SJoinTestParam param; char* caseName = "leftAsofJoin:noCondLowerEqTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT; @@ -3621,6 +3708,7 @@ TEST(leftWinJoin, noCondProjectionTest) { SJoinTestParam param; char* caseName = "leftWinJoin:noCondProjectionTest"; SExecTaskInfo* pTask = createDummyTaskInfo(caseName); + assert(pTask); param.pTask = pTask; param.joinType = JOIN_TYPE_LEFT;