From 49f49fd238c1390dbd1bd40eaf0994ea7defb635 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Wed, 21 Feb 2024 19:26:12 +0800 Subject: [PATCH] more code --- include/common/tdataformat.h | 9 ++++++++- source/common/src/tdataformat.c | 17 ++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/common/tdataformat.h b/include/common/tdataformat.h index 4d272d5eac..e19d174185 100644 --- a/include/common/tdataformat.h +++ b/include/common/tdataformat.h @@ -95,7 +95,7 @@ const static uint8_t BIT2_MAP[4] = {0b11111100, 0b11110011, 0b11001111, 0b001111 #define COL_VAL_IS_VALUE(CV) ((CV)->flag == CV_FLAG_VALUE) // SValueColumn ================================ -int32_t tValueColumnInit(SValueColumn *valCol, int8_t type); +int32_t tValueColumnInit(SValueColumn *valCol); int32_t tValueColumnDestroy(SValueColumn *valCol); int32_t tValueColumnClear(SValueColumn *valCol); int32_t tValueColumnAppend(SValueColumn *valCol, const SValue *value); @@ -291,6 +291,13 @@ STSchema *tBuildTSchema(SSchema *aSchema, int32_t numOfCols, int32_t version); } \ } while (0) +struct SValueColumn { + int8_t type; + uint32_t numOfValues; + SBuffer data; + SBuffer offsets; +}; + #endif #ifdef __cplusplus diff --git a/source/common/src/tdataformat.c b/source/common/src/tdataformat.c index 2662fd7251..1634ff027f 100644 --- a/source/common/src/tdataformat.c +++ b/source/common/src/tdataformat.c @@ -3786,15 +3786,8 @@ void (*tColDataCalcSMA[])(SColData *pColData, int64_t *sum, int64_t *max, int64_ }; // SValueColumn ================================ -struct SValueColumn { - int8_t type; - uint32_t numOfValues; - SBuffer data; - SBuffer offsets; -}; - -int32_t tValueColumnInit(SValueColumn *valCol, int8_t type) { - valCol->type = type; +int32_t tValueColumnInit(SValueColumn *valCol) { + valCol->type = TSDB_DATA_TYPE_NULL; valCol->numOfValues = 0; tBufferInit(&valCol->data); tBufferInit(&valCol->offsets); @@ -3810,6 +3803,7 @@ int32_t tValueColumnDestroy(SValueColumn *valCol) { } int32_t tValueColumnClear(SValueColumn *valCol) { + valCol->type = TSDB_DATA_TYPE_NULL; valCol->numOfValues = 0; tBufferClear(&valCol->data); tBufferClear(&valCol->offsets); @@ -3819,7 +3813,12 @@ int32_t tValueColumnClear(SValueColumn *valCol) { int32_t tValueColumnAppend(SValueColumn *valCol, const SValue *value) { int32_t code; + if (valCol->numOfValues == 0) { + valCol->type = value->type; + } + ASSERT(value->type == valCol->type); + if (IS_VAR_DATA_TYPE(value->type)) { int32_t offset = tBufferGetSize(&valCol->data); if ((code = tBufferAppend(&valCol->offsets, &offset, sizeof(offset)))) {