refact more code
This commit is contained in:
parent
1bab3c1b4d
commit
1cac65d8c0
|
@ -143,96 +143,12 @@ static int32_t tGnrtDiskCol(SDiskColBuilder *pBuilder, SDiskCol *pDiskCol) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void tDiskColUpdateSmaBool(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
extern void (*tSmaUpdateImpl[])(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet);
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateSmaTinyint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
int8_t val = *(int8_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateSmaSmallint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
int16_t val = *(int16_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateSmaInt(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
int32_t val = *(int32_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateBigint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
int64_t val = *(int64_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateFloat(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
float val = *(float *)&pColVal->value.val;
|
|
||||||
*(double *)&pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || *(double *)&pBuilder->sma.min > val) *(double *)&pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || *(double *)&pBuilder->sma.max < val) *(double *)&pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateDouble(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
double val = *(double *)&pColVal->value.val;
|
|
||||||
*(double *)&pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || *(double *)&pBuilder->sma.min > val) *(double *)&pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || *(double *)&pBuilder->sma.max < val) *(double *)&pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateUTinyint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
uint8_t val = *(uint8_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateUSmallint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
uint16_t val = *(uint16_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateUInt(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
uint32_t val = *(uint32_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static FORCE_INLINE void tDiskColUpdateUBigint(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
|
||||||
uint64_t val = *(uint64_t *)&pColVal->value.val;
|
|
||||||
pBuilder->sma.sum += val;
|
|
||||||
if (!pBuilder->minSet || pBuilder->sma.min > val) pBuilder->sma.min = val;
|
|
||||||
if (!pBuilder->maxSet || pBuilder->sma.max < val) pBuilder->sma.max = val;
|
|
||||||
}
|
|
||||||
static void (*tDiskColUpdateSmaImpl[])(SDiskColBuilder *pBuilder, SColVal *pColVal) = {
|
|
||||||
NULL, // TSDB_DATA_TYPE_NULL
|
|
||||||
tDiskColUpdateSmaBool, // TSDB_DATA_TYPE_BOOL
|
|
||||||
tDiskColUpdateSmaTinyint, // TSDB_DATA_TYPE_TINYINT
|
|
||||||
tDiskColUpdateSmaSmallint, // TSDB_DATA_TYPE_SMALLINT
|
|
||||||
tDiskColUpdateSmaInt, // TSDB_DATA_TYPE_INT
|
|
||||||
tDiskColUpdateBigint, // TSDB_DATA_TYPE_BIGINT
|
|
||||||
tDiskColUpdateFloat, // TSDB_DATA_TYPE_FLOAT
|
|
||||||
tDiskColUpdateDouble, // TSDB_DATA_TYPE_DOUBLE
|
|
||||||
NULL, // TSDB_DATA_TYPE_VARCHAR
|
|
||||||
tDiskColUpdateBigint, // TSDB_DATA_TYPE_TIMESTAMP
|
|
||||||
NULL, // TSDB_DATA_TYPE_NCHAR
|
|
||||||
tDiskColUpdateUTinyint, // TSDB_DATA_TYPE_UTINYINT
|
|
||||||
tDiskColUpdateUSmallint, // TSDB_DATA_TYPE_USMALLINT
|
|
||||||
tDiskColUpdateUInt, // TSDB_DATA_TYPE_UINT
|
|
||||||
tDiskColUpdateUBigint, // TSDB_DATA_TYPE_UBIGINT
|
|
||||||
NULL, // TSDB_DATA_TYPE_JSON
|
|
||||||
NULL, // TSDB_DATA_TYPE_VARBINARY
|
|
||||||
NULL, // TSDB_DATA_TYPE_DECIMAL
|
|
||||||
NULL, // TSDB_DATA_TYPE_BLOB
|
|
||||||
NULL, // TSDB_DATA_TYPE_MEDIUMBLOB
|
|
||||||
};
|
|
||||||
static FORCE_INLINE void tDiskColUpdateSma(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
static FORCE_INLINE void tDiskColUpdateSma(SDiskColBuilder *pBuilder, SColVal *pColVal) {
|
||||||
if (pColVal->isNone || pColVal->isNull) {
|
if (pColVal->isNone || pColVal->isNull) {
|
||||||
pBuilder->sma.numOfNull++;
|
pBuilder->sma.numOfNull++;
|
||||||
} else {
|
} else {
|
||||||
tDiskColUpdateSmaImpl[pBuilder->type](pBuilder, pColVal);
|
tSmaUpdateImpl[pBuilder->type](&pBuilder->sma, pColVal, &pBuilder->minSet, &pBuilder->maxSet);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1492,185 +1492,107 @@ int32_t tGetColumnDataAgg(uint8_t *p, SColumnDataAgg *pColAgg) {
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define SMA_UPDATE(SUM_V, MIN_V, MAX_V, VAL, MINSET, MAXSET) \
|
||||||
|
do { \
|
||||||
|
(SUM_V) += (VAL); \
|
||||||
|
if (!(MINSET)) { \
|
||||||
|
(MIN_V) = (VAL); \
|
||||||
|
(MINSET) = 1; \
|
||||||
|
} else if ((MIN_V) > (VAL)) { \
|
||||||
|
(MIN_V) = (VAL); \
|
||||||
|
} \
|
||||||
|
if (!(MAXSET)) { \
|
||||||
|
(MAX_V) = (VAL); \
|
||||||
|
(MAXSET) = 1; \
|
||||||
|
} else if ((MAX_V) < (VAL)) { \
|
||||||
|
(MAX_V) = (VAL); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
static FORCE_INLINE void tSmaUpdateBool(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
int8_t val = *(int8_t *)&pColVal->value.val ? 1 : 0;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateTinyint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet,
|
||||||
|
uint8_t *maxSet) {
|
||||||
|
int8_t val = *(int8_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateSmallint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet,
|
||||||
|
uint8_t *maxSet) {
|
||||||
|
int16_t val = *(int16_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateInt(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
int32_t val = *(int32_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateBigint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
int64_t val = *(int64_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateFloat(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
float val = *(float *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(*(double *)&pColAgg->sum, *(double *)&pColAgg->min, *(double *)&pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateDouble(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
double val = *(double *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(*(double *)&pColAgg->sum, *(double *)&pColAgg->min, *(double *)&pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateUTinyint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet,
|
||||||
|
uint8_t *maxSet) {
|
||||||
|
uint8_t val = *(uint8_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateUSmallint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet,
|
||||||
|
uint8_t *maxSet) {
|
||||||
|
uint16_t val = *(uint16_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateUInt(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) {
|
||||||
|
uint32_t val = *(uint32_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
static FORCE_INLINE void tSmaUpdateUBigint(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet,
|
||||||
|
uint8_t *maxSet) {
|
||||||
|
uint64_t val = *(uint64_t *)&pColVal->value.val;
|
||||||
|
SMA_UPDATE(pColAgg->sum, pColAgg->min, pColAgg->max, val, *minSet, *maxSet);
|
||||||
|
}
|
||||||
|
void (*tSmaUpdateImpl[])(SColumnDataAgg *pColAgg, SColVal *pColVal, uint8_t *minSet, uint8_t *maxSet) = {
|
||||||
|
NULL,
|
||||||
|
tSmaUpdateBool, // TSDB_DATA_TYPE_BOOL
|
||||||
|
tSmaUpdateTinyint, // TSDB_DATA_TYPE_TINYINT
|
||||||
|
tSmaUpdateSmallint, // TSDB_DATA_TYPE_SMALLINT
|
||||||
|
tSmaUpdateInt, // TSDB_DATA_TYPE_INT
|
||||||
|
tSmaUpdateBigint, // TSDB_DATA_TYPE_BIGINT
|
||||||
|
tSmaUpdateFloat, // TSDB_DATA_TYPE_FLOAT
|
||||||
|
tSmaUpdateDouble, // TSDB_DATA_TYPE_DOUBLE
|
||||||
|
NULL, // TSDB_DATA_TYPE_VARCHAR
|
||||||
|
tSmaUpdateBigint, // TSDB_DATA_TYPE_TIMESTAMP
|
||||||
|
NULL, // TSDB_DATA_TYPE_NCHAR
|
||||||
|
tSmaUpdateUTinyint, // TSDB_DATA_TYPE_UTINYINT
|
||||||
|
tSmaUpdateUSmallint, // TSDB_DATA_TYPE_USMALLINT
|
||||||
|
tSmaUpdateUInt, // TSDB_DATA_TYPE_UINT
|
||||||
|
tSmaUpdateUBigint, // TSDB_DATA_TYPE_UBIGINT
|
||||||
|
NULL, // TSDB_DATA_TYPE_JSON
|
||||||
|
NULL, // TSDB_DATA_TYPE_VARBINARY
|
||||||
|
NULL, // TSDB_DATA_TYPE_DECIMAL
|
||||||
|
NULL, // TSDB_DATA_TYPE_BLOB
|
||||||
|
NULL, // TSDB_DATA_TYPE_MEDIUMBLOB
|
||||||
|
};
|
||||||
void tsdbCalcColDataSMA(SColData *pColData, SColumnDataAgg *pColAgg) {
|
void tsdbCalcColDataSMA(SColData *pColData, SColumnDataAgg *pColAgg) {
|
||||||
SColVal colVal;
|
|
||||||
SColVal *pColVal = &colVal;
|
|
||||||
|
|
||||||
memset(pColAgg, 0, sizeof(*pColAgg));
|
|
||||||
bool minAssigned = false;
|
|
||||||
bool maxAssigned = false;
|
|
||||||
|
|
||||||
*pColAgg = (SColumnDataAgg){.colId = pColData->cid};
|
*pColAgg = (SColumnDataAgg){.colId = pColData->cid};
|
||||||
for (int32_t iVal = 0; iVal < pColData->nVal; iVal++) {
|
uint8_t minSet = 0;
|
||||||
tColDataGetValue(pColData, iVal, pColVal);
|
uint8_t maxSet = 0;
|
||||||
|
|
||||||
if (pColVal->isNone || pColVal->isNull) {
|
SColVal cv;
|
||||||
|
for (int32_t iVal = 0; iVal < pColData->nVal; iVal++) {
|
||||||
|
tColDataGetValue(pColData, iVal, &cv);
|
||||||
|
|
||||||
|
if (cv.isNone || cv.isNull) {
|
||||||
pColAgg->numOfNull++;
|
pColAgg->numOfNull++;
|
||||||
} else {
|
} else {
|
||||||
switch (pColData->type) {
|
tSmaUpdateImpl[pColData->type](pColAgg, &cv, &minSet, &maxSet);
|
||||||
case TSDB_DATA_TYPE_NULL:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TINYINT: {
|
|
||||||
int8_t i8 = *(int8_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += i8;
|
|
||||||
if (!minAssigned || pColAgg->min > i8) {
|
|
||||||
pColAgg->min = i8;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < i8) {
|
|
||||||
pColAgg->max = i8;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_SMALLINT: {
|
|
||||||
int16_t i16 = *(int16_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += i16;
|
|
||||||
if (!minAssigned || pColAgg->min > i16) {
|
|
||||||
pColAgg->min = i16;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < i16) {
|
|
||||||
pColAgg->max = i16;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_INT: {
|
|
||||||
int32_t i32 = *(int32_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += i32;
|
|
||||||
if (!minAssigned || pColAgg->min > i32) {
|
|
||||||
pColAgg->min = i32;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < i32) {
|
|
||||||
pColAgg->max = i32;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_BIGINT: {
|
|
||||||
int64_t i64 = *(int64_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += i64;
|
|
||||||
if (!minAssigned || pColAgg->min > i64) {
|
|
||||||
pColAgg->min = i64;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < i64) {
|
|
||||||
pColAgg->max = i64;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
|
||||||
float f = *(float *)&colVal.value.val;
|
|
||||||
*(double *)(&pColAgg->sum) += f;
|
|
||||||
if (!minAssigned || *(double *)(&pColAgg->min) > f) {
|
|
||||||
*(double *)(&pColAgg->min) = f;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || *(double *)(&pColAgg->max) < f) {
|
|
||||||
*(double *)(&pColAgg->max) = f;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
|
||||||
double d = *(double *)&colVal.value.val;
|
|
||||||
*(double *)(&pColAgg->sum) += d;
|
|
||||||
if (!minAssigned || *(double *)(&pColAgg->min) > d) {
|
|
||||||
*(double *)(&pColAgg->min) = d;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || *(double *)(&pColAgg->max) < d) {
|
|
||||||
*(double *)(&pColAgg->max) = d;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_VARCHAR:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP: {
|
|
||||||
int64_t ts = *(int64_t *)&colVal.value.val;
|
|
||||||
if (!minAssigned || pColAgg->min > ts) {
|
|
||||||
pColAgg->min = ts;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < ts) {
|
|
||||||
pColAgg->max = ts;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_NCHAR:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_UTINYINT: {
|
|
||||||
uint8_t u8 = *(uint8_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += u8;
|
|
||||||
if (!minAssigned || pColAgg->min > u8) {
|
|
||||||
pColAgg->min = u8;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < u8) {
|
|
||||||
pColAgg->max = u8;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_USMALLINT: {
|
|
||||||
uint16_t u16 = *(uint16_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += u16;
|
|
||||||
if (!minAssigned || pColAgg->min > u16) {
|
|
||||||
pColAgg->min = u16;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < u16) {
|
|
||||||
pColAgg->max = u16;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_UINT: {
|
|
||||||
uint32_t u32 = *(uint32_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += u32;
|
|
||||||
if (!minAssigned || pColAgg->min > u32) {
|
|
||||||
pColAgg->min = u32;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!minAssigned || pColAgg->max < u32) {
|
|
||||||
pColAgg->max = u32;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_UBIGINT: {
|
|
||||||
uint64_t u64 = *(uint64_t *)&colVal.value.val;
|
|
||||||
pColAgg->sum += u64;
|
|
||||||
if (!minAssigned || pColAgg->min > u64) {
|
|
||||||
pColAgg->min = u64;
|
|
||||||
minAssigned = true;
|
|
||||||
}
|
|
||||||
if (!maxAssigned || pColAgg->max < u64) {
|
|
||||||
pColAgg->max = u64;
|
|
||||||
maxAssigned = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TSDB_DATA_TYPE_JSON:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_VARBINARY:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_DECIMAL:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_BLOB:
|
|
||||||
break;
|
|
||||||
case TSDB_DATA_TYPE_MEDIUMBLOB:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ASSERT(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue