diff --git a/include/common/tdataformat.h b/include/common/tdataformat.h index 9879efae7eff858d6ef71d3ad60ad73f4a15acee..fcf50d0c01b59c23c462062a0c1eb60b2f867a6a 100644 --- a/include/common/tdataformat.h +++ b/include/common/tdataformat.h @@ -38,13 +38,22 @@ typedef struct STagVal STagVal; typedef struct STag STag; // bitmap -#define N1(n) ((1 << (n)) - 1) -#define BIT1_SIZE(n) (((n)-1) / 8 + 1) -#define BIT2_SIZE(n) (((n)-1) / 4 + 1) -#define SET_BIT1(p, i, v) ((p)[(i) / 8] |= (((uint8_t)(v)) << ((i) % 8))) -#define GET_BIT1(p, i) (((p)[(i) / 8] >> ((i) % 8)) & ((uint8_t)1)) -#define SET_BIT2(p, i, v) ((p)[(i) / 4] |= (((uint8_t)(v)) << (((i) % 4) * 2))) -#define GET_BIT2(p, i) (((p)[(i) / 4] >> (((i) % 4) * 2)) & ((uint8_t)3)) +#define N1(n) ((1 << (n)) - 1) +#define BIT1_SIZE(n) (((n)-1) / 8 + 1) +#define BIT2_SIZE(n) (((n)-1) / 4 + 1) +#define SET_BIT1(p, i, v) \ + do { \ + (p)[(i) / 8] &= N1((i) % 8); \ + (p)[(i) / 8] |= (((uint8_t)(v)) << (((i) % 8))); \ + } while (0) + +#define GET_BIT1(p, i) (((p)[(i) / 8] >> ((i) % 8)) & ((uint8_t)1)) +#define SET_BIT2(p, i, v) \ + do { \ + p[(i) / 4] &= N1((i) % 4 * 2); \ + (p)[(i) / 4] |= (((uint8_t)(v)) << (((i) % 4) * 2)); \ + } while (0) +#define GET_BIT2(p, i) (((p)[(i) / 4] >> (((i) % 4) * 2)) & ((uint8_t)3)) // STSchema int32_t tTSchemaCreate(int32_t sver, SSchema *pSchema, int32_t nCols, STSchema **ppTSchema); diff --git a/source/dnode/vnode/src/tsdb/tsdbCommit.c b/source/dnode/vnode/src/tsdb/tsdbCommit.c index 6eea51a546c85b2e4250455ff3505c289fcef96c..f625d72d6324125ce9e77c8e031323db2437e7dc 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCommit.c +++ b/source/dnode/vnode/src/tsdb/tsdbCommit.c @@ -955,6 +955,7 @@ static void tsdbCommitDataEnd(SCommitter *pCommitter) { taosArrayDestroy(pCommitter->aBlockIdxN); tMapDataClear(&pCommitter->nBlockMap); tBlockDataClear(&pCommitter->nBlockData); + tTSchemaDestroy(pCommitter->pTSchema); } static int32_t tsdbCommitData(SCommitter *pCommitter) {