From 5a72ca804b7432f3b4783c4fc1cb6f1e740747b2 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sat, 14 May 2022 23:03:02 +0800 Subject: [PATCH] fix(query): set the correct row index during generating join results. --- source/libs/executor/src/executorimpl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/libs/executor/src/executorimpl.c b/source/libs/executor/src/executorimpl.c index 2cbfb9b344..d08345a02f 100644 --- a/source/libs/executor/src/executorimpl.c +++ b/source/libs/executor/src/executorimpl.c @@ -5500,18 +5500,21 @@ static SSDataBlock* doMergeJoin(struct SOperatorInfo* pOperator) { int32_t blockId = pExprInfo->base.pParam[0].pCol->dataBlockId; int32_t slotId = pExprInfo->base.pParam[0].pCol->slotId; + int32_t rowIndex = -1; SColumnInfoData* pSrc = NULL; if (pJoinInfo->pLeft->info.blockId == blockId) { pSrc = taosArrayGet(pJoinInfo->pLeft->pDataBlock, slotId); + rowIndex = pJoinInfo->leftPos; } else { pSrc = taosArrayGet(pJoinInfo->pRight->pDataBlock, slotId); + rowIndex = pJoinInfo->rightPos; } - if (colDataIsNull_s(pSrc, pJoinInfo->leftPos)) { + if (colDataIsNull_s(pSrc, rowIndex)) { colDataAppendNULL(pDst, nrows); } else { - char* p = colDataGetData(pSrc, pJoinInfo->leftPos); + char* p = colDataGetData(pSrc, rowIndex); colDataAppend(pDst, nrows, p, false); } }