diff --git a/source/common/src/tdataformat.c b/source/common/src/tdataformat.c index 1d52a77472..7657c198e5 100644 --- a/source/common/src/tdataformat.c +++ b/source/common/src/tdataformat.c @@ -2218,13 +2218,13 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / switch (pColData->flag) { case HAS_NONE: case HAS_NULL: { - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); } break; case (HAS_NULL | HAS_NONE): { - if (GET_BIT1(pColData->pBitMap, iStart) == BIT_FLG_NONE) { + if (GET_BIT1(pColData->pBitMap, iStart) == 0) { for (int32_t i = iStart + 1; i < iEnd; ++i) { - if (GET_BIT1(pColData->pBitMap, i) == BIT_FLG_NULL) { - SET_BIT1(pColData->pBitMap, iStart, BIT_FLG_NULL); + if (GET_BIT1(pColData->pBitMap, i) == 1) { + SET_BIT1(pColData->pBitMap, iStart, 1); break; } } @@ -2233,7 +2233,7 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i)); } - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); uint8_t flag = 0; for (int32_t i = 0; i < pColData->nVal; ++i) { @@ -2254,7 +2254,7 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / if (IS_VAR_DATA_TYPE(pColData->type)) { int32_t nDiff = pColData->aOffset[iEnd - 1] - pColData->aOffset[iStart]; - memmove(&pColData->pData[pColData->aOffset[iStart]], &pColData->pData[pColData->aOffset[iEnd - 1]], + memmove(pColData->pData + pColData->aOffset[iStart], pColData->pData + pColData->aOffset[iEnd - 1], pColData->nData - pColData->aOffset[iEnd - 1]); pColData->nData -= nDiff; @@ -2262,13 +2262,13 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / pColData->aOffset[j] = pColData->aOffset[i] - nDiff; } } else { - memmove(&pColData->pData[TYPE_BYTES[pColData->type] * iStart], - &pColData->pData[TYPE_BYTES[pColData->type] * (iEnd - 1)], + memmove(pColData->pData + TYPE_BYTES[pColData->type] * iStart, + pColData->pData + TYPE_BYTES[pColData->type] * (iEnd - 1), TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd + 1)); pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1)); } - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); } break; case (HAS_VALUE | HAS_NONE): { uint8_t bv; @@ -2337,13 +2337,13 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i)); } } - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); } break; case (HAS_VALUE | HAS_NULL): { if (IS_VAR_DATA_TYPE(pColData->type)) { int32_t nDiff = pColData->aOffset[iEnd - 1] - pColData->aOffset[iStart]; - memmove(&pColData->pData[pColData->aOffset[iStart]], &pColData->pData[pColData->aOffset[iEnd - 1]], + memmove(pColData->pData + pColData->aOffset[iStart], pColData->pData + pColData->aOffset[iEnd - 1], pColData->nData - pColData->aOffset[iEnd - 1]); pColData->nData -= nDiff; @@ -2351,8 +2351,8 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / pColData->aOffset[j] = pColData->aOffset[i] - nDiff; } } else { - memmove(&pColData->pData[TYPE_BYTES[pColData->type] * iStart], - &pColData->pData[TYPE_BYTES[pColData->type] * (iEnd - 1)], + memmove(pColData->pData + TYPE_BYTES[pColData->type] * iStart, + pColData->pData + TYPE_BYTES[pColData->type] * (iEnd - 1), TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd + 1)); pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1)); } @@ -2361,12 +2361,11 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i)); } - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); uint8_t flag = 0; for (int32_t i = 0; i < pColData->nVal; ++i) { - uint8_t bv = GET_BIT1(pColData->pBitMap, i); - if (bv) { + if (GET_BIT1(pColData->pBitMap, i)) { flag |= HAS_VALUE; } else { flag |= HAS_NULL; @@ -2379,7 +2378,7 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / case (HAS_VALUE | HAS_NULL | HAS_NONE): { // TODO ASSERT(0); - pColData->nVal = pColData->nVal - (iEnd - iStart - 1); + pColData->nVal -= (iEnd - iStart - 1); } break; default: ASSERT(0); @@ -2389,7 +2388,7 @@ static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd / static void tColDataMerge(SColData *aColData, int32_t nColData) { int32_t iStart = 0; for (;;) { - if (iStart >= aColData[0].nVal) break; + if (iStart >= aColData[0].nVal - 1) break; int32_t iEnd = iStart + 1; while (iEnd < aColData[0].nVal) {