Merge remote-tracking branch 'origin/feature/3_liaohj' into feature/3_liaohj
This commit is contained in:
commit
24c38d30e3
|
@ -2,7 +2,7 @@
|
||||||
# taos-tools
|
# taos-tools
|
||||||
ExternalProject_Add(taos-tools
|
ExternalProject_Add(taos-tools
|
||||||
GIT_REPOSITORY https://github.com/taosdata/taos-tools.git
|
GIT_REPOSITORY https://github.com/taosdata/taos-tools.git
|
||||||
GIT_TAG 634399d
|
GIT_TAG 61cbfd2
|
||||||
SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools"
|
SOURCE_DIR "${TD_SOURCE_DIR}/tools/taos-tools"
|
||||||
BINARY_DIR ""
|
BINARY_DIR ""
|
||||||
#BUILD_IN_SOURCE TRUE
|
#BUILD_IN_SOURCE TRUE
|
||||||
|
|
|
@ -58,7 +58,6 @@ typedef struct SBlockOrderInfo {
|
||||||
#define BitmapLen(_n) (((_n) + ((1 << NBIT) - 1)) >> NBIT)
|
#define BitmapLen(_n) (((_n) + ((1 << NBIT) - 1)) >> NBIT)
|
||||||
|
|
||||||
#define colDataGetVarData(p1_, r_) ((p1_)->pData + (p1_)->varmeta.offset[(r_)])
|
#define colDataGetVarData(p1_, r_) ((p1_)->pData + (p1_)->varmeta.offset[(r_)])
|
||||||
|
|
||||||
#define colDataGetNumData(p1_, r_) ((p1_)->pData + ((r_) * (p1_)->info.bytes))
|
#define colDataGetNumData(p1_, r_) ((p1_)->pData + ((r_) * (p1_)->info.bytes))
|
||||||
// SColumnInfoData, rowNumber
|
// SColumnInfoData, rowNumber
|
||||||
#define colDataGetData(p1_, r_) \
|
#define colDataGetData(p1_, r_) \
|
||||||
|
@ -83,33 +82,6 @@ static FORCE_INLINE bool colDataIsNull_s(const SColumnInfoData* pColumnInfoData,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE bool colDataIsNNull_s(const SColumnInfoData* pColumnInfoData, int32_t startIndex,
|
|
||||||
uint32_t nRows) {
|
|
||||||
if (!pColumnInfoData->hasNull) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
|
||||||
for (int32_t i = startIndex; i < nRows; ++i) {
|
|
||||||
if (!colDataIsNull_var(pColumnInfoData, i)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (pColumnInfoData->nullbitmap == NULL) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int32_t i = startIndex; i < nRows; ++i) {
|
|
||||||
if (!colDataIsNull_f(pColumnInfoData->nullbitmap, i)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FORCE_INLINE bool colDataIsNull(const SColumnInfoData* pColumnInfoData, uint32_t totalRows, uint32_t row,
|
static FORCE_INLINE bool colDataIsNull(const SColumnInfoData* pColumnInfoData, uint32_t totalRows, uint32_t row,
|
||||||
SColumnDataAgg* pColAgg) {
|
SColumnDataAgg* pColAgg) {
|
||||||
if (!pColumnInfoData->hasNull) {
|
if (!pColumnInfoData->hasNull) {
|
||||||
|
@ -137,18 +109,18 @@ static FORCE_INLINE bool colDataIsNull(const SColumnInfoData* pColumnInfoData, u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendNULL(SColumnInfoData* pColumnInfoData, uint32_t currentRow) {
|
static FORCE_INLINE void colDataSetNULL(SColumnInfoData* pColumnInfoData, uint32_t rowIndex) {
|
||||||
// There is a placehold for each NULL value of binary or nchar type.
|
// There is a placehold for each NULL value of binary or nchar type.
|
||||||
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
||||||
colDataSetNull_var(pColumnInfoData, currentRow); // it is a null value of VAR type.
|
colDataSetNull_var(pColumnInfoData, rowIndex); // it is a null value of VAR type.
|
||||||
} else {
|
} else {
|
||||||
colDataSetNull_f_s(pColumnInfoData, currentRow);
|
colDataSetNull_f_s(pColumnInfoData, rowIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
pColumnInfoData->hasNull = true;
|
pColumnInfoData->hasNull = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendNNULL(SColumnInfoData* pColumnInfoData, uint32_t start, size_t nRows) {
|
static FORCE_INLINE void colDataSetNNULL(SColumnInfoData* pColumnInfoData, uint32_t start, size_t nRows) {
|
||||||
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
||||||
for (int32_t i = start; i < start + nRows; ++i) {
|
for (int32_t i = start; i < start + nRows; ++i) {
|
||||||
colDataSetNull_var(pColumnInfoData, i); // it is a null value of VAR type.
|
colDataSetNull_var(pColumnInfoData, i); // it is a null value of VAR type.
|
||||||
|
@ -163,50 +135,50 @@ static FORCE_INLINE void colDataAppendNNULL(SColumnInfoData* pColumnInfoData, ui
|
||||||
pColumnInfoData->hasNull = true;
|
pColumnInfoData->hasNull = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendInt8(SColumnInfoData* pColumnInfoData, uint32_t currentRow, int8_t* v) {
|
static FORCE_INLINE void colDataSetInt8(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, int8_t* v) {
|
||||||
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_TINYINT ||
|
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_TINYINT ||
|
||||||
pColumnInfoData->info.type == TSDB_DATA_TYPE_UTINYINT || pColumnInfoData->info.type == TSDB_DATA_TYPE_BOOL);
|
pColumnInfoData->info.type == TSDB_DATA_TYPE_UTINYINT || pColumnInfoData->info.type == TSDB_DATA_TYPE_BOOL);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(int8_t*)p = *(int8_t*)v;
|
*(int8_t*)p = *(int8_t*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendInt16(SColumnInfoData* pColumnInfoData, uint32_t currentRow, int16_t* v) {
|
static FORCE_INLINE void colDataSetInt16(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, int16_t* v) {
|
||||||
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_SMALLINT ||
|
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_SMALLINT ||
|
||||||
pColumnInfoData->info.type == TSDB_DATA_TYPE_USMALLINT);
|
pColumnInfoData->info.type == TSDB_DATA_TYPE_USMALLINT);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(int16_t*)p = *(int16_t*)v;
|
*(int16_t*)p = *(int16_t*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendInt32(SColumnInfoData* pColumnInfoData, uint32_t currentRow, int32_t* v) {
|
static FORCE_INLINE void colDataSetInt32(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, int32_t* v) {
|
||||||
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_INT || pColumnInfoData->info.type == TSDB_DATA_TYPE_UINT);
|
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_INT || pColumnInfoData->info.type == TSDB_DATA_TYPE_UINT);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(int32_t*)p = *(int32_t*)v;
|
*(int32_t*)p = *(int32_t*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendInt64(SColumnInfoData* pColumnInfoData, uint32_t currentRow, int64_t* v) {
|
static FORCE_INLINE void colDataSetInt64(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, int64_t* v) {
|
||||||
int32_t type = pColumnInfoData->info.type;
|
int32_t type = pColumnInfoData->info.type;
|
||||||
ASSERT(type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT || type == TSDB_DATA_TYPE_TIMESTAMP);
|
ASSERT(type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT || type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(int64_t*)p = *(int64_t*)v;
|
*(int64_t*)p = *(int64_t*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendFloat(SColumnInfoData* pColumnInfoData, uint32_t currentRow, float* v) {
|
static FORCE_INLINE void colDataSetFloat(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, float* v) {
|
||||||
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_FLOAT);
|
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_FLOAT);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(float*)p = *(float*)v;
|
*(float*)p = *(float*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void colDataAppendDouble(SColumnInfoData* pColumnInfoData, uint32_t currentRow, double* v) {
|
static FORCE_INLINE void colDataSetDouble(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, double* v) {
|
||||||
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_DOUBLE);
|
ASSERT(pColumnInfoData->info.type == TSDB_DATA_TYPE_DOUBLE);
|
||||||
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow;
|
char* p = pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex;
|
||||||
*(double*)p = *(double*)v;
|
*(double*)p = *(double*)v;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t getJsonValueLen(const char* data);
|
int32_t getJsonValueLen(const char* data);
|
||||||
|
|
||||||
int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t currentRow, const char* pData, bool isNull);
|
int32_t colDataSetVal(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, const char* pData, bool isNull);
|
||||||
int32_t colDataAppendNItems(SColumnInfoData* pColumnInfoData, uint32_t currentRow, const char* pData,
|
int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, const char* pData, bool isNull);
|
||||||
uint32_t numOfRows);
|
int32_t colDataSetNItems(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, const char* pData, uint32_t numOfRows);
|
||||||
int32_t colDataMergeCol(SColumnInfoData* pColumnInfoData, int32_t numOfRow1, int32_t* capacity,
|
int32_t colDataMergeCol(SColumnInfoData* pColumnInfoData, int32_t numOfRow1, int32_t* capacity,
|
||||||
const SColumnInfoData* pSource, int32_t numOfRow2);
|
const SColumnInfoData* pSource, int32_t numOfRow2);
|
||||||
int32_t colDataAssign(SColumnInfoData* pColumnInfoData, const SColumnInfoData* pSource, int32_t numOfRows,
|
int32_t colDataAssign(SColumnInfoData* pColumnInfoData, const SColumnInfoData* pSource, int32_t numOfRows,
|
||||||
|
@ -245,7 +217,7 @@ void blockDataEmpty(SSDataBlock* pDataBlock);
|
||||||
|
|
||||||
size_t blockDataGetCapacityInRow(const SSDataBlock* pBlock, size_t pageSize);
|
size_t blockDataGetCapacityInRow(const SSDataBlock* pBlock, size_t pageSize);
|
||||||
|
|
||||||
int32_t blockDataTrimFirstNRows(SSDataBlock* pBlock, size_t n);
|
int32_t blockDataTrimFirstRows(SSDataBlock* pBlock, size_t n);
|
||||||
int32_t blockDataKeepFirstNRows(SSDataBlock* pBlock, size_t n);
|
int32_t blockDataKeepFirstNRows(SSDataBlock* pBlock, size_t n);
|
||||||
|
|
||||||
int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src);
|
int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src);
|
||||||
|
@ -280,13 +252,6 @@ static FORCE_INLINE int32_t blockGetEncodeSize(const SSDataBlock* pBlock) {
|
||||||
return blockDataGetSerialMetaSize(taosArrayGetSize(pBlock->pDataBlock)) + blockDataGetSize(pBlock);
|
return blockDataGetSerialMetaSize(taosArrayGetSize(pBlock->pDataBlock)) + blockDataGetSize(pBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE int32_t blockCompressColData(SColumnInfoData* pColRes, int32_t numOfRows, char* data,
|
|
||||||
int8_t compressed) {
|
|
||||||
int32_t colSize = colDataGetLength(pColRes, numOfRows);
|
|
||||||
return (*(tDataTypes[pColRes->info.type].compFunc))(pColRes->pData, colSize, numOfRows, data,
|
|
||||||
colSize + COMP_OVERFLOW_BYTES, compressed, NULL, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,7 +53,7 @@ typedef struct SArray {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SArray* taosArrayInit(size_t size, size_t elemSize);
|
SArray* taosArrayInit(size_t size, size_t elemSize);
|
||||||
SArray* taosArrayInit_s(size_t size, size_t elemSize, size_t initialSize);
|
SArray* taosArrayInit_s(size_t elemSize, size_t initialSize);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -417,12 +417,12 @@ static int32_t buildShowVariablesBlock(SArray* pVars, SSDataBlock** block) {
|
||||||
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(name, pInfo->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(name, pInfo->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
||||||
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, name, false);
|
colDataSetVal(pColInfo, i, name, false);
|
||||||
|
|
||||||
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(value, pInfo->value, TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(value, pInfo->value, TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, value, false);
|
colDataSetVal(pColInfo, i, value, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = numOfCfg;
|
pBlock->info.rows = numOfCfg;
|
||||||
|
|
|
@ -63,13 +63,17 @@ int32_t getJsonValueLen(const char* data) {
|
||||||
return dataLen;
|
return dataLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t currentRow, const char* pData, bool isNull) {
|
int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, const char* pData, bool isNull) {
|
||||||
|
return colDataSetVal(pColumnInfoData, rowIndex, pData, isNull);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t colDataSetVal(SColumnInfoData* pColumnInfoData, uint32_t rowIndex, const char* pData, bool isNull) {
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
// There is a placehold for each NULL value of binary or nchar type.
|
// There is a placehold for each NULL value of binary or nchar type.
|
||||||
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
||||||
pColumnInfoData->varmeta.offset[currentRow] = -1; // it is a null value of VAR type.
|
pColumnInfoData->varmeta.offset[rowIndex] = -1; // it is a null value of VAR type.
|
||||||
} else {
|
} else {
|
||||||
colDataSetNull_f_s(pColumnInfoData, currentRow);
|
colDataSetNull_f_s(pColumnInfoData, rowIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
pColumnInfoData->hasNull = true;
|
pColumnInfoData->hasNull = true;
|
||||||
|
@ -106,12 +110,12 @@ int32_t colDataAppend(SColumnInfoData* pColumnInfoData, uint32_t currentRow, con
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t len = pColumnInfoData->varmeta.length;
|
uint32_t len = pColumnInfoData->varmeta.length;
|
||||||
pColumnInfoData->varmeta.offset[currentRow] = len;
|
pColumnInfoData->varmeta.offset[rowIndex] = len;
|
||||||
|
|
||||||
memmove(pColumnInfoData->pData + len, pData, dataLen);
|
memmove(pColumnInfoData->pData + len, pData, dataLen);
|
||||||
pColumnInfoData->varmeta.length += dataLen;
|
pColumnInfoData->varmeta.length += dataLen;
|
||||||
} else {
|
} else {
|
||||||
memcpy(pColumnInfoData->pData + pColumnInfoData->info.bytes * currentRow, pData, pColumnInfoData->info.bytes);
|
memcpy(pColumnInfoData->pData + pColumnInfoData->info.bytes * rowIndex, pData, pColumnInfoData->info.bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -172,7 +176,7 @@ static void doCopyNItems(struct SColumnInfoData* pColumnInfoData, int32_t curren
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t colDataAppendNItems(SColumnInfoData* pColumnInfoData, uint32_t currentRow, const char* pData,
|
int32_t colDataSetNItems(SColumnInfoData* pColumnInfoData, uint32_t currentRow, const char* pData,
|
||||||
uint32_t numOfRows) {
|
uint32_t numOfRows) {
|
||||||
int32_t len = pColumnInfoData->info.bytes;
|
int32_t len = pColumnInfoData->info.bytes;
|
||||||
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
||||||
|
@ -513,10 +517,10 @@ SSDataBlock* blockDataExtractBlock(SSDataBlock* pBlock, int32_t startIndex, int3
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
colDataAppendNULL(pDstCol, j - startIndex);
|
colDataSetNULL(pDstCol, j - startIndex);
|
||||||
} else {
|
} else {
|
||||||
char* p = colDataGetData(pColData, j);
|
char* p = colDataGetData(pColData, j);
|
||||||
colDataAppend(pDstCol, j - startIndex, p, false);
|
colDataSetVal(pDstCol, j - startIndex, p, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -619,6 +623,33 @@ int32_t blockDataFromBuf(SSDataBlock* pBlock, const char* buf) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool colDataIsNNull(const SColumnInfoData* pColumnInfoData, int32_t startIndex,
|
||||||
|
uint32_t nRows) {
|
||||||
|
if (!pColumnInfoData->hasNull) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_VAR_DATA_TYPE(pColumnInfoData->info.type)) {
|
||||||
|
for (int32_t i = startIndex; i < nRows; ++i) {
|
||||||
|
if (!colDataIsNull_var(pColumnInfoData, i)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (pColumnInfoData->nullbitmap == NULL) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int32_t i = startIndex; i < nRows; ++i) {
|
||||||
|
if (!colDataIsNull_f(pColumnInfoData->nullbitmap, i)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
// todo remove this
|
// todo remove this
|
||||||
int32_t blockDataFromBuf1(SSDataBlock* pBlock, const char* buf, size_t capacity) {
|
int32_t blockDataFromBuf1(SSDataBlock* pBlock, const char* buf, size_t capacity) {
|
||||||
pBlock->info.rows = *(int32_t*)buf;
|
pBlock->info.rows = *(int32_t*)buf;
|
||||||
|
@ -661,7 +692,7 @@ int32_t blockDataFromBuf1(SSDataBlock* pBlock, const char* buf, size_t capacity)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!colDataIsNNull_s(pCol, 0, pBlock->info.rows)) {
|
if (!colDataIsNNull(pCol, 0, pBlock->info.rows)) {
|
||||||
memcpy(pCol->pData, pStart, colLength);
|
memcpy(pCol->pData, pStart, colLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -783,13 +814,13 @@ static int32_t doAssignOneTuple(SColumnInfoData* pDstCols, int32_t numOfRows, co
|
||||||
SColumnInfoData* pSrc = taosArrayGet(pSrcBlock->pDataBlock, i);
|
SColumnInfoData* pSrc = taosArrayGet(pSrcBlock->pDataBlock, i);
|
||||||
|
|
||||||
if (pSrc->hasNull && colDataIsNull(pSrc, pSrcBlock->info.rows, tupleIndex, pSrcBlock->pBlockAgg[i])) {
|
if (pSrc->hasNull && colDataIsNull(pSrc, pSrcBlock->info.rows, tupleIndex, pSrcBlock->pBlockAgg[i])) {
|
||||||
code = colDataAppend(pDst, numOfRows, NULL, true);
|
code = colDataSetVal(pDst, numOfRows, NULL, true);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
char* p = colDataGetData(pSrc, tupleIndex);
|
char* p = colDataGetData(pSrc, tupleIndex);
|
||||||
code = colDataAppend(pDst, numOfRows, p, false);
|
code = colDataSetVal(pDst, numOfRows, p, false);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -1413,7 +1444,7 @@ SSDataBlock* blockCopyOneRow(const SSDataBlock* pDataBlock, int32_t rowIdx) {
|
||||||
SColumnInfoData* pSrc = taosArrayGet(pDataBlock->pDataBlock, i);
|
SColumnInfoData* pSrc = taosArrayGet(pDataBlock->pDataBlock, i);
|
||||||
void* pData = colDataGetData(pSrc, rowIdx);
|
void* pData = colDataGetData(pSrc, rowIdx);
|
||||||
bool isNull = colDataIsNull(pSrc, pDataBlock->info.rows, rowIdx, NULL);
|
bool isNull = colDataIsNull(pSrc, pDataBlock->info.rows, rowIdx, NULL);
|
||||||
colDataAppend(pDst, 0, pData, isNull);
|
colDataSetVal(pDst, 0, pData, isNull);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = 1;
|
pBlock->info.rows = 1;
|
||||||
|
@ -1644,7 +1675,7 @@ static void colDataTrimFirstNRows(SColumnInfoData* pColInfoData, size_t n, size_
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t blockDataTrimFirstNRows(SSDataBlock* pBlock, size_t n) {
|
int32_t blockDataTrimFirstRows(SSDataBlock* pBlock, size_t n) {
|
||||||
if (n == 0) {
|
if (n == 0) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -2356,7 +2387,7 @@ const char* blockDecode(SSDataBlock* pBlock, const char* pData) {
|
||||||
pStart += sizeof(uint64_t);
|
pStart += sizeof(uint64_t);
|
||||||
|
|
||||||
if (pBlock->pDataBlock == NULL) {
|
if (pBlock->pDataBlock == NULL) {
|
||||||
pBlock->pDataBlock = taosArrayInit_s(numOfCols, sizeof(SColumnInfoData), numOfCols);
|
pBlock->pDataBlock = taosArrayInit_s(sizeof(SColumnInfoData), numOfCols);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfCols; ++i) {
|
for (int32_t i = 0; i < numOfCols; ++i) {
|
||||||
|
|
|
@ -109,14 +109,14 @@ TEST(testCase, Datablock_test) {
|
||||||
if (i & 0x01) {
|
if (i & 0x01) {
|
||||||
int32_t len = sprintf(buf, str, i);
|
int32_t len = sprintf(buf, str, i);
|
||||||
STR_TO_VARSTR(varbuf, buf)
|
STR_TO_VARSTR(varbuf, buf)
|
||||||
colDataAppend(p0, i, (const char*)&i, false);
|
colDataSetVal(p0, i, (const char*)&i, false);
|
||||||
colDataAppend(p1, i, (const char*)varbuf, false);
|
colDataSetVal(p1, i, (const char*)varbuf, false);
|
||||||
|
|
||||||
memset(varbuf, 0, sizeof(varbuf));
|
memset(varbuf, 0, sizeof(varbuf));
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(p0, i, (const char*)&i, true);
|
colDataSetVal(p0, i, (const char*)&i, true);
|
||||||
colDataAppend(p1, i, (const char*)varbuf, true);
|
colDataSetVal(p1, i, (const char*)varbuf, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
b->info.rows++;
|
b->info.rows++;
|
||||||
|
@ -185,8 +185,8 @@ TEST(testCase, non_var_dataBlock_split_test) {
|
||||||
SColumnInfoData* p1 = (SColumnInfoData*)taosArrayGet(b->pDataBlock, 1);
|
SColumnInfoData* p1 = (SColumnInfoData*)taosArrayGet(b->pDataBlock, 1);
|
||||||
|
|
||||||
int8_t v = i;
|
int8_t v = i;
|
||||||
colDataAppend(p0, i, (const char*)&i, false);
|
colDataSetVal(p0, i, (const char*)&i, false);
|
||||||
colDataAppend(p1, i, (const char*)&v, false);
|
colDataSetVal(p1, i, (const char*)&v, false);
|
||||||
b->info.rows++;
|
b->info.rows++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,12 +231,12 @@ TEST(testCase, var_dataBlock_split_test) {
|
||||||
SColumnInfoData* p1 = (SColumnInfoData*)taosArrayGet(b->pDataBlock, 1);
|
SColumnInfoData* p1 = (SColumnInfoData*)taosArrayGet(b->pDataBlock, 1);
|
||||||
|
|
||||||
int8_t v = i;
|
int8_t v = i;
|
||||||
colDataAppend(p0, i, (const char*)&i, false);
|
colDataSetVal(p0, i, (const char*)&i, false);
|
||||||
|
|
||||||
sprintf(buf, "the number of row:%d", i);
|
sprintf(buf, "the number of row:%d", i);
|
||||||
int32_t len = sprintf(buf1, buf, i);
|
int32_t len = sprintf(buf1, buf, i);
|
||||||
STR_TO_VARSTR(buf1, buf)
|
STR_TO_VARSTR(buf1, buf)
|
||||||
colDataAppend(p1, i, buf1, false);
|
colDataSetVal(p1, i, buf1, false);
|
||||||
b->info.rows++;
|
b->info.rows++;
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
|
|
|
@ -242,19 +242,19 @@ int32_t dmAppendVariablesToBlock(SSDataBlock *pBlock, int32_t dnodeId) {
|
||||||
GRANT_CFG_SKIP;
|
GRANT_CFG_SKIP;
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, (const char *)&dnodeId, false);
|
colDataSetVal(pColInfo, i, (const char *)&dnodeId, false);
|
||||||
|
|
||||||
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(name, pItem->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(name, pItem->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, name, false);
|
colDataSetVal(pColInfo, i, name, false);
|
||||||
|
|
||||||
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
int32_t valueLen = 0;
|
int32_t valueLen = 0;
|
||||||
cfgDumpItemValue(pItem, &value[VARSTR_HEADER_SIZE], TSDB_CONFIG_VALUE_LEN, &valueLen);
|
cfgDumpItemValue(pItem, &value[VARSTR_HEADER_SIZE], TSDB_CONFIG_VALUE_LEN, &valueLen);
|
||||||
varDataSetLen(value, valueLen);
|
varDataSetLen(value, valueLen);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, value, false);
|
colDataSetVal(pColInfo, i, value, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,6 @@ static int32_t vmPutMsgToQueue(SVnodeMgmt *pMgmt, SRpcMsg *pMsg, EQueueType qtyp
|
||||||
dGError("vgId:%d, msg:%p failed to put into vnode queue since %s, type:%s qtype:%d contLen:%d", pHead->vgId, pMsg,
|
dGError("vgId:%d, msg:%p failed to put into vnode queue since %s, type:%s qtype:%d contLen:%d", pHead->vgId, pMsg,
|
||||||
terrstr(), TMSG_INFO(pMsg->msgType), qtype, pHead->contLen);
|
terrstr(), TMSG_INFO(pMsg->msgType), qtype, pHead->contLen);
|
||||||
terrno = (terrno != 0) ? terrno : -1;
|
terrno = (terrno != 0) ? terrno : -1;
|
||||||
vmSendResponse(pMsg);
|
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -278,31 +278,31 @@ static int32_t mndRetrieveClusters(SRpcMsg *pMsg, SShowObj *pShow, SSDataBlock *
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pCluster->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pCluster->id, false);
|
||||||
|
|
||||||
char buf[tListLen(pCluster->name) + VARSTR_HEADER_SIZE] = {0};
|
char buf[tListLen(pCluster->name) + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf, pCluster->name, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, pCluster->name, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, buf, false);
|
colDataSetVal(pColInfo, numOfRows, buf, false);
|
||||||
|
|
||||||
int32_t upTime = mndGetClusterUpTimeImp(pCluster);
|
int32_t upTime = mndGetClusterUpTimeImp(pCluster);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&upTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&upTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pCluster->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pCluster->createdTime, false);
|
||||||
|
|
||||||
char ver[12] = {0};
|
char ver[12] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(ver, tsVersionName, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(ver, tsVersionName, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)ver, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)ver, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
if (tsExpireTime <= 0) {
|
if (tsExpireTime <= 0) {
|
||||||
colDataAppendNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&tsExpireTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&tsExpireTime, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbRelease(pSdb, pCluster);
|
sdbRelease(pSdb, pCluster);
|
||||||
|
|
|
@ -1054,28 +1054,28 @@ static int32_t mndRetrieveConsumer(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *
|
||||||
|
|
||||||
// consumer id
|
// consumer id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConsumer->consumerId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumer->consumerId, false);
|
||||||
|
|
||||||
// consumer group
|
// consumer group
|
||||||
char cgroup[TSDB_CGROUP_LEN + VARSTR_HEADER_SIZE] = {0};
|
char cgroup[TSDB_CGROUP_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
tstrncpy(varDataVal(cgroup), pConsumer->cgroup, TSDB_CGROUP_LEN);
|
tstrncpy(varDataVal(cgroup), pConsumer->cgroup, TSDB_CGROUP_LEN);
|
||||||
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)cgroup, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)cgroup, false);
|
||||||
|
|
||||||
// client id
|
// client id
|
||||||
char clientId[256 + VARSTR_HEADER_SIZE] = {0};
|
char clientId[256 + VARSTR_HEADER_SIZE] = {0};
|
||||||
tstrncpy(varDataVal(clientId), pConsumer->clientId, 256);
|
tstrncpy(varDataVal(clientId), pConsumer->clientId, 256);
|
||||||
varDataSetLen(clientId, strlen(varDataVal(clientId)));
|
varDataSetLen(clientId, strlen(varDataVal(clientId)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)clientId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)clientId, false);
|
||||||
|
|
||||||
// status
|
// status
|
||||||
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
tstrncpy(varDataVal(status), mndConsumerStatusName(pConsumer->status), 20);
|
tstrncpy(varDataVal(status), mndConsumerStatusName(pConsumer->status), 20);
|
||||||
varDataSetLen(status, strlen(varDataVal(status)));
|
varDataSetLen(status, strlen(varDataVal(status)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)status, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)status, false);
|
||||||
|
|
||||||
// one subscribed topic
|
// one subscribed topic
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
|
@ -1083,26 +1083,26 @@ static int32_t mndRetrieveConsumer(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *
|
||||||
char topic[TSDB_TOPIC_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char topic[TSDB_TOPIC_FNAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
const char *topicName = mndTopicGetShowName(taosArrayGetP(pConsumer->assignedTopics, i));
|
const char *topicName = mndTopicGetShowName(taosArrayGetP(pConsumer->assignedTopics, i));
|
||||||
STR_TO_VARSTR(topic, topicName);
|
STR_TO_VARSTR(topic, topicName);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)topic, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)topic, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, numOfRows, NULL, true);
|
colDataSetVal(pColInfo, numOfRows, NULL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// end point
|
// end point
|
||||||
/*pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);*/
|
/*pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);*/
|
||||||
/*colDataAppend(pColInfo, numOfRows, (const char *)&pConsumer->ep, true);*/
|
/*colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumer->ep, true);*/
|
||||||
|
|
||||||
// up time
|
// up time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConsumer->upTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumer->upTime, false);
|
||||||
|
|
||||||
// subscribe time
|
// subscribe time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConsumer->subscribeTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumer->subscribeTime, false);
|
||||||
|
|
||||||
// rebalance time
|
// rebalance time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConsumer->rebalanceTime, pConsumer->rebalanceTime == 0);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumer->rebalanceTime, pConsumer->rebalanceTime == 0);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1641,46 +1641,46 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb,
|
||||||
for (int32_t i = 0; i < pShow->numOfColumns; ++i) {
|
for (int32_t i = 0; i < pShow->numOfColumns; ++i) {
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, i);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, i);
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
colDataAppend(pColInfo, rows, buf, false);
|
colDataSetVal(pColInfo, rows, buf, false);
|
||||||
} else if (i == 1) {
|
} else if (i == 1) {
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->createdTime, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false);
|
||||||
} else if (i == 3) {
|
} else if (i == 3) {
|
||||||
colDataAppend(pColInfo, rows, (const char *)&numOfTables, false);
|
colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false);
|
||||||
} else if (i == 14) {
|
} else if (i == 14) {
|
||||||
colDataAppend(pColInfo, rows, precVstr, false);
|
colDataSetVal(pColInfo, rows, precVstr, false);
|
||||||
} else if (i == 15) {
|
} else if (i == 15) {
|
||||||
colDataAppend(pColInfo, rows, statusVstr, false);
|
colDataSetVal(pColInfo, rows, statusVstr, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfo, rows);
|
colDataSetNULL(pColInfo, rows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, buf, false);
|
colDataSetVal(pColInfo, rows, buf, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->createdTime, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->createdTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.numOfVgroups, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfVgroups, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&numOfTables, false);
|
colDataSetVal(pColInfo, rows, (const char *)&numOfTables, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.replications, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.replications, false);
|
||||||
|
|
||||||
const char *strictStr = pDb->cfg.strict ? "on" : "off";
|
const char *strictStr = pDb->cfg.strict ? "on" : "off";
|
||||||
char strictVstr[24] = {0};
|
char strictVstr[24] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(strictVstr, strictStr, 24);
|
STR_WITH_MAXSIZE_TO_VARSTR(strictVstr, strictStr, 24);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)strictVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)strictVstr, false);
|
||||||
|
|
||||||
char durationVstr[128] = {0};
|
char durationVstr[128] = {0};
|
||||||
int32_t len = sprintf(&durationVstr[VARSTR_HEADER_SIZE], "%dm", pDb->cfg.daysPerFile);
|
int32_t len = sprintf(&durationVstr[VARSTR_HEADER_SIZE], "%dm", pDb->cfg.daysPerFile);
|
||||||
varDataSetLen(durationVstr, len);
|
varDataSetLen(durationVstr, len);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)durationVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)durationVstr, false);
|
||||||
|
|
||||||
char keepVstr[128] = {0};
|
char keepVstr[128] = {0};
|
||||||
if (pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep1 || pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep2) {
|
if (pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep1 || pDb->cfg.daysToKeep0 > pDb->cfg.daysToKeep2) {
|
||||||
|
@ -1692,86 +1692,86 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb,
|
||||||
}
|
}
|
||||||
varDataSetLen(keepVstr, len);
|
varDataSetLen(keepVstr, len);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)keepVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)keepVstr, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.buffer, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.buffer, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.pageSize, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pageSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.pages, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.pages, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.minRows, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.minRows, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.maxRows, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.maxRows, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.compression, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.compression, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)precVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)precVstr, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)statusVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)statusVstr, false);
|
||||||
|
|
||||||
char *rentensionVstr = buildRetension(pDb->cfg.pRetensions);
|
char *rentensionVstr = buildRetension(pDb->cfg.pRetensions);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
if (rentensionVstr == NULL) {
|
if (rentensionVstr == NULL) {
|
||||||
colDataAppendNULL(pColInfo, rows);
|
colDataSetNULL(pColInfo, rows);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, rows, (const char *)rentensionVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)rentensionVstr, false);
|
||||||
taosMemoryFree(rentensionVstr);
|
taosMemoryFree(rentensionVstr);
|
||||||
}
|
}
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.numOfStables, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.numOfStables, false);
|
||||||
|
|
||||||
const char *cacheModelStr = getCacheModelStr(pDb->cfg.cacheLast);
|
const char *cacheModelStr = getCacheModelStr(pDb->cfg.cacheLast);
|
||||||
char cacheModelVstr[24] = {0};
|
char cacheModelVstr[24] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(cacheModelVstr, cacheModelStr, 24);
|
STR_WITH_MAXSIZE_TO_VARSTR(cacheModelVstr, cacheModelStr, 24);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)cacheModelVstr, false);
|
colDataSetVal(pColInfo, rows, (const char *)cacheModelVstr, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.cacheLastSize, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.cacheLastSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walLevel, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walLevel, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walFsyncPeriod, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walFsyncPeriod, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walRetentionPeriod, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionPeriod, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walRetentionSize, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRetentionSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walRollPeriod, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walRollPeriod, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.walSegmentSize, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.walSegmentSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.sstTrigger, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.sstTrigger, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
int16_t hashPrefix = pDb->cfg.hashPrefix;
|
int16_t hashPrefix = pDb->cfg.hashPrefix;
|
||||||
if (hashPrefix > 0) {
|
if (hashPrefix > 0) {
|
||||||
hashPrefix = pDb->cfg.hashPrefix - strlen(pDb->name) - 1;
|
hashPrefix = pDb->cfg.hashPrefix - strlen(pDb->name) - 1;
|
||||||
}
|
}
|
||||||
colDataAppend(pColInfo, rows, (const char *)&hashPrefix, false);
|
colDataSetVal(pColInfo, rows, (const char *)&hashPrefix, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.hashSuffix, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.hashSuffix, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, rows, (const char *)&pDb->cfg.tsdbPageSize, false);
|
colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.tsdbPageSize, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(buf);
|
taosMemoryFree(buf);
|
||||||
|
|
|
@ -1005,11 +1005,11 @@ static int32_t mndRetrieveConfigs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
|
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf, cfgOpts[i], TSDB_CONFIG_OPTION_LEN);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, cfgOpts[i], TSDB_CONFIG_OPTION_LEN);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)buf, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)buf, false);
|
||||||
|
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(bufVal, cfgVals[i], TSDB_CONFIG_VALUE_LEN);
|
STR_WITH_MAXSIZE_TO_VARSTR(bufVal, cfgVals[i], TSDB_CONFIG_VALUE_LEN);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)bufVal, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)bufVal, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
@ -1037,20 +1037,20 @@ static int32_t mndRetrieveDnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pDnode->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pDnode->id, false);
|
||||||
|
|
||||||
char buf[tListLen(pDnode->ep) + VARSTR_HEADER_SIZE] = {0};
|
char buf[tListLen(pDnode->ep) + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf, pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf, pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, buf, false);
|
colDataSetVal(pColInfo, numOfRows, buf, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
int16_t id = mndGetVnodesNum(pMnode, pDnode->id);
|
int16_t id = mndGetVnodesNum(pMnode, pDnode->id);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&id, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pDnode->numOfSupportVnodes, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pDnode->numOfSupportVnodes, false);
|
||||||
|
|
||||||
const char *status = "ready";
|
const char *status = "ready";
|
||||||
if (objStatus == SDB_STATUS_CREATING) status = "creating";
|
if (objStatus == SDB_STATUS_CREATING) status = "creating";
|
||||||
|
@ -1067,16 +1067,16 @@ static int32_t mndRetrieveDnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
char b1[16] = {0};
|
char b1[16] = {0};
|
||||||
STR_TO_VARSTR(b1, status);
|
STR_TO_VARSTR(b1, status);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, b1, false);
|
colDataSetVal(pColInfo, numOfRows, b1, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pDnode->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pDnode->createdTime, false);
|
||||||
|
|
||||||
char *b = taosMemoryCalloc(VARSTR_HEADER_SIZE + strlen(offlineReason[pDnode->offlineReason]) + 1, 1);
|
char *b = taosMemoryCalloc(VARSTR_HEADER_SIZE + strlen(offlineReason[pDnode->offlineReason]) + 1, 1);
|
||||||
STR_TO_VARSTR(b, online ? "" : offlineReason[pDnode->offlineReason]);
|
STR_TO_VARSTR(b, online ? "" : offlineReason[pDnode->offlineReason]);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, b, false);
|
colDataSetVal(pColInfo, numOfRows, b, false);
|
||||||
taosMemoryFreeClear(b);
|
taosMemoryFreeClear(b);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
|
|
|
@ -511,39 +511,39 @@ static int32_t mndRetrieveFuncs(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b1, pFunc->name, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(b1, pFunc->name, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b1, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b1, false);
|
||||||
|
|
||||||
if (pFunc->pComment) {
|
if (pFunc->pComment) {
|
||||||
char *b2 = taosMemoryCalloc(1, pShow->pMeta->pSchemas[cols].bytes);
|
char *b2 = taosMemoryCalloc(1, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b2, pFunc->pComment, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(b2, pFunc->pComment, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b2, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b2, false);
|
||||||
} else {
|
} else {
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, NULL, true);
|
colDataSetVal(pColInfo, numOfRows, NULL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t isAgg = (pFunc->funcType == TSDB_FUNC_TYPE_AGGREGATE) ? 1 : 0;
|
int32_t isAgg = (pFunc->funcType == TSDB_FUNC_TYPE_AGGREGATE) ? 1 : 0;
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&isAgg, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&isAgg, false);
|
||||||
|
|
||||||
char b3[TSDB_TYPE_STR_MAX_LEN + 1] = {0};
|
char b3[TSDB_TYPE_STR_MAX_LEN + 1] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b3, mnodeGenTypeStr(buf, TSDB_TYPE_STR_MAX_LEN, pFunc->outputType, pFunc->outputLen),
|
STR_WITH_MAXSIZE_TO_VARSTR(b3, mnodeGenTypeStr(buf, TSDB_TYPE_STR_MAX_LEN, pFunc->outputType, pFunc->outputLen),
|
||||||
pShow->pMeta->pSchemas[cols].bytes);
|
pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b3, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b3, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pFunc->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->createdTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pFunc->codeSize, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->codeSize, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pFunc->bufSize, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pFunc->bufSize, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pFunc);
|
sdbRelease(pSdb, pFunc);
|
||||||
|
|
|
@ -29,85 +29,85 @@ static int32_t mndRetrieveGrant(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
const char *src = "community";
|
const char *src = "community";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "false";
|
src = "false";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
src = "unlimited";
|
src = "unlimited";
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
STR_WITH_MAXSIZE_TO_VARSTR(tmp, src, 32);
|
||||||
colDataAppend(pColInfo, numOfRows, tmp, false);
|
colDataSetVal(pColInfo, numOfRows, tmp, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -608,13 +608,13 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
||||||
|
|
||||||
char b1[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
char b1[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b1, pObj->pDnode->ep, TSDB_EP_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(b1, pObj->pDnode->ep, TSDB_EP_LEN + VARSTR_HEADER_SIZE);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, b1, false);
|
colDataSetVal(pColInfo, numOfRows, b1, false);
|
||||||
|
|
||||||
char role[20] = "offline";
|
char role[20] = "offline";
|
||||||
if (pObj->id == pMnode->selfDnodeId) {
|
if (pObj->id == pMnode->selfDnodeId) {
|
||||||
|
@ -630,7 +630,7 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
char b2[12 + VARSTR_HEADER_SIZE] = {0};
|
char b2[12 + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b2, role, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(b2, role, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b2, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b2, false);
|
||||||
|
|
||||||
const char *status = "ready";
|
const char *status = "ready";
|
||||||
if (objStatus == SDB_STATUS_CREATING) status = "creating";
|
if (objStatus == SDB_STATUS_CREATING) status = "creating";
|
||||||
|
@ -639,10 +639,10 @@ static int32_t mndRetrieveMnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
char b3[9 + VARSTR_HEADER_SIZE] = {0};
|
char b3[9 + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b3, status, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(b3, status, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b3, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b3, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
|
|
|
@ -709,32 +709,32 @@ static int32_t mndRetrieveConns(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->id, false);
|
||||||
|
|
||||||
char user[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char user[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(user, pConn->user);
|
STR_TO_VARSTR(user, pConn->user);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)user, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)user, false);
|
||||||
|
|
||||||
char app[TSDB_APP_NAME_LEN + VARSTR_HEADER_SIZE];
|
char app[TSDB_APP_NAME_LEN + VARSTR_HEADER_SIZE];
|
||||||
STR_TO_VARSTR(app, pConn->app);
|
STR_TO_VARSTR(app, pConn->app);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)app, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)app, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->pid, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->pid, false);
|
||||||
|
|
||||||
char endpoint[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
char endpoint[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
||||||
sprintf(&endpoint[VARSTR_HEADER_SIZE], "%s:%d", taosIpStr(pConn->ip), pConn->port);
|
sprintf(&endpoint[VARSTR_HEADER_SIZE], "%s:%d", taosIpStr(pConn->ip), pConn->port);
|
||||||
varDataLen(endpoint) = strlen(&endpoint[VARSTR_HEADER_SIZE]);
|
varDataLen(endpoint) = strlen(&endpoint[VARSTR_HEADER_SIZE]);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)endpoint, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)endpoint, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->loginTimeMs, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->loginTimeMs, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->lastAccessTimeMs, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->lastAccessTimeMs, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
@ -777,44 +777,44 @@ static int32_t mndRetrieveQueries(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
sprintf(&queryId[VARSTR_HEADER_SIZE], "%x:%" PRIx64, pConn->id, pQuery->reqRid);
|
sprintf(&queryId[VARSTR_HEADER_SIZE], "%x:%" PRIx64, pConn->id, pQuery->reqRid);
|
||||||
varDataLen(queryId) = strlen(&queryId[VARSTR_HEADER_SIZE]);
|
varDataLen(queryId) = strlen(&queryId[VARSTR_HEADER_SIZE]);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)queryId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)queryId, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pQuery->queryId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pQuery->queryId, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->id, false);
|
||||||
|
|
||||||
char app[TSDB_APP_NAME_LEN + VARSTR_HEADER_SIZE];
|
char app[TSDB_APP_NAME_LEN + VARSTR_HEADER_SIZE];
|
||||||
STR_TO_VARSTR(app, pConn->app);
|
STR_TO_VARSTR(app, pConn->app);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)app, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)app, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConn->pid, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConn->pid, false);
|
||||||
|
|
||||||
char user[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char user[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(user, pConn->user);
|
STR_TO_VARSTR(user, pConn->user);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)user, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)user, false);
|
||||||
|
|
||||||
char endpoint[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
char endpoint[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
||||||
sprintf(&endpoint[VARSTR_HEADER_SIZE], "%s:%d", taosIpStr(pConn->ip), pConn->port);
|
sprintf(&endpoint[VARSTR_HEADER_SIZE], "%s:%d", taosIpStr(pConn->ip), pConn->port);
|
||||||
varDataLen(endpoint) = strlen(&endpoint[VARSTR_HEADER_SIZE]);
|
varDataLen(endpoint) = strlen(&endpoint[VARSTR_HEADER_SIZE]);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)endpoint, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)endpoint, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pQuery->stime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pQuery->stime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pQuery->useconds, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pQuery->useconds, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pQuery->stableQuery, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pQuery->stableQuery, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pQuery->subPlanNum, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pQuery->subPlanNum, false);
|
||||||
|
|
||||||
char subStatus[TSDB_SHOW_SUBQUERY_LEN + VARSTR_HEADER_SIZE] = {0};
|
char subStatus[TSDB_SHOW_SUBQUERY_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
int32_t strSize = sizeof(subStatus);
|
int32_t strSize = sizeof(subStatus);
|
||||||
|
@ -828,12 +828,12 @@ static int32_t mndRetrieveQueries(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
}
|
}
|
||||||
varDataLen(subStatus) = strlen(&subStatus[VARSTR_HEADER_SIZE]);
|
varDataLen(subStatus) = strlen(&subStatus[VARSTR_HEADER_SIZE]);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, subStatus, false);
|
colDataSetVal(pColInfo, numOfRows, subStatus, false);
|
||||||
|
|
||||||
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(sql, pQuery->sql);
|
STR_TO_VARSTR(sql, pQuery->sql);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)sql, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)sql, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
@ -867,55 +867,55 @@ static int32_t mndRetrieveApps(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlo
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->appId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->appId, false);
|
||||||
|
|
||||||
char ip[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
char ip[TSDB_IPv4ADDR_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
||||||
sprintf(&ip[VARSTR_HEADER_SIZE], "%s", taosIpStr(pApp->ip));
|
sprintf(&ip[VARSTR_HEADER_SIZE], "%s", taosIpStr(pApp->ip));
|
||||||
varDataLen(ip) = strlen(&ip[VARSTR_HEADER_SIZE]);
|
varDataLen(ip) = strlen(&ip[VARSTR_HEADER_SIZE]);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)ip, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)ip, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->pid, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->pid, false);
|
||||||
|
|
||||||
char name[TSDB_APP_NAME_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
char name[TSDB_APP_NAME_LEN + 6 + VARSTR_HEADER_SIZE] = {0};
|
||||||
sprintf(&name[VARSTR_HEADER_SIZE], "%s", pApp->name);
|
sprintf(&name[VARSTR_HEADER_SIZE], "%s", pApp->name);
|
||||||
varDataLen(name) = strlen(&name[VARSTR_HEADER_SIZE]);
|
varDataLen(name) = strlen(&name[VARSTR_HEADER_SIZE]);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)name, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)name, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->startTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->startTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.numOfInsertsReq, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.numOfInsertsReq, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.numOfInsertRows, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.numOfInsertRows, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.insertElapsedTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.insertElapsedTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.insertBytes, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.insertBytes, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.fetchBytes, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.fetchBytes, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.queryElapsedTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.queryElapsedTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.numOfSlowQueries, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.numOfSlowQueries, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.totalRequests, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.totalRequests, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->summary.currentRequests, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->summary.currentRequests, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pApp->lastAccessTimeMs, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pApp->lastAccessTimeMs, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -507,15 +507,15 @@ static int32_t mndRetrieveQnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
||||||
|
|
||||||
char ep[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
char ep[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(ep, pObj->pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(ep, pObj->pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)ep, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)ep, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
|
|
|
@ -1220,19 +1220,19 @@ static int32_t mndRetrieveSma(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
|
||||||
STR_TO_VARSTR(n3, (char *)tNameGetTableName(&stbName));
|
STR_TO_VARSTR(n3, (char *)tNameGetTableName(&stbName));
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)n1, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)n1, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)n2, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)n2, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)n3, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)n3, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSma->dstVgId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSma->dstVgId, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSma->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSma->createdTime, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pSma);
|
sdbRelease(pSdb, pSma);
|
||||||
|
|
|
@ -441,16 +441,16 @@ static int32_t mndRetrieveSnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->id, false);
|
||||||
|
|
||||||
char ep[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
char ep[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(ep, pObj->pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(ep, pObj->pDnode->ep, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)ep, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)ep, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pObj->createdTime, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
|
|
|
@ -2525,7 +2525,7 @@ static int32_t mndRetrieveStb(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
|
||||||
varDataSetLen(stbName, strlen(&stbName[VARSTR_HEADER_SIZE]));
|
varDataSetLen(stbName, strlen(&stbName[VARSTR_HEADER_SIZE]));
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)stbName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)stbName, false);
|
||||||
|
|
||||||
char db[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char db[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
tNameFromString(&name, pStb->db, T_NAME_ACCT | T_NAME_DB);
|
tNameFromString(&name, pStb->db, T_NAME_ACCT | T_NAME_DB);
|
||||||
|
@ -2533,31 +2533,31 @@ static int32_t mndRetrieveStb(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
|
||||||
varDataSetLen(db, strlen(varDataVal(db)));
|
varDataSetLen(db, strlen(varDataVal(db)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)db, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)db, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStb->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStb->createdTime, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStb->numOfColumns, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStb->numOfColumns, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStb->numOfTags, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStb->numOfTags, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStb->updateTime, false); // number of tables
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStb->updateTime, false); // number of tables
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
if (pStb->commentLen > 0) {
|
if (pStb->commentLen > 0) {
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, pStb->comment);
|
STR_TO_VARSTR(comment, pStb->comment);
|
||||||
colDataAppend(pColInfo, numOfRows, comment, false);
|
colDataSetVal(pColInfo, numOfRows, comment, false);
|
||||||
} else if (pStb->commentLen == 0) {
|
} else if (pStb->commentLen == 0) {
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, "");
|
STR_TO_VARSTR(comment, "");
|
||||||
colDataAppend(pColInfo, numOfRows, comment, false);
|
colDataSetVal(pColInfo, numOfRows, comment, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
char watermark[64 + VARSTR_HEADER_SIZE] = {0};
|
char watermark[64 + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -2565,14 +2565,14 @@ static int32_t mndRetrieveStb(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
|
||||||
varDataSetLen(watermark, strlen(varDataVal(watermark)));
|
varDataSetLen(watermark, strlen(varDataVal(watermark)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)watermark, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)watermark, false);
|
||||||
|
|
||||||
char maxDelay[64 + VARSTR_HEADER_SIZE] = {0};
|
char maxDelay[64 + VARSTR_HEADER_SIZE] = {0};
|
||||||
sprintf(varDataVal(maxDelay), "%" PRId64 "a,%" PRId64 "a", pStb->maxdelay[0], pStb->maxdelay[1]);
|
sprintf(varDataVal(maxDelay), "%" PRId64 "a,%" PRId64 "a", pStb->maxdelay[0], pStb->maxdelay[1]);
|
||||||
varDataSetLen(maxDelay, strlen(varDataVal(maxDelay)));
|
varDataSetLen(maxDelay, strlen(varDataVal(maxDelay)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)maxDelay, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)maxDelay, false);
|
||||||
|
|
||||||
char rollup[160 + VARSTR_HEADER_SIZE] = {0};
|
char rollup[160 + VARSTR_HEADER_SIZE] = {0};
|
||||||
int32_t rollupNum = (int32_t)taosArrayGetSize(pStb->pFuncs);
|
int32_t rollupNum = (int32_t)taosArrayGetSize(pStb->pFuncs);
|
||||||
|
@ -2591,7 +2591,7 @@ static int32_t mndRetrieveStb(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBloc
|
||||||
varDataSetLen(rollup, strlen(varDataVal(rollup)));
|
varDataSetLen(rollup, strlen(varDataVal(rollup)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)rollup, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)rollup, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pStb);
|
sdbRelease(pSdb, pStb);
|
||||||
|
|
|
@ -479,7 +479,7 @@ static int32_t mndCreateStbForStream(SMnode *pMnode, STrans *pTrans, const SStre
|
||||||
tstrncpy(createReq.name, pStream->targetSTbName, TSDB_TABLE_FNAME_LEN);
|
tstrncpy(createReq.name, pStream->targetSTbName, TSDB_TABLE_FNAME_LEN);
|
||||||
createReq.numOfColumns = pStream->outputSchema.nCols;
|
createReq.numOfColumns = pStream->outputSchema.nCols;
|
||||||
createReq.numOfTags = 1; // group id
|
createReq.numOfTags = 1; // group id
|
||||||
createReq.pColumns = taosArrayInit_s(createReq.numOfColumns, sizeof(SField), createReq.numOfColumns);
|
createReq.pColumns = taosArrayInit_s(sizeof(SField), createReq.numOfColumns);
|
||||||
// build fields
|
// build fields
|
||||||
for (int32_t i = 0; i < createReq.numOfColumns; i++) {
|
for (int32_t i = 0; i < createReq.numOfColumns; i++) {
|
||||||
SField *pField = taosArrayGet(createReq.pColumns, i);
|
SField *pField = taosArrayGet(createReq.pColumns, i);
|
||||||
|
@ -488,7 +488,7 @@ static int32_t mndCreateStbForStream(SMnode *pMnode, STrans *pTrans, const SStre
|
||||||
pField->type = pStream->outputSchema.pSchema[i].type;
|
pField->type = pStream->outputSchema.pSchema[i].type;
|
||||||
pField->bytes = pStream->outputSchema.pSchema[i].bytes;
|
pField->bytes = pStream->outputSchema.pSchema[i].bytes;
|
||||||
}
|
}
|
||||||
createReq.pTags = taosArrayInit_s(createReq.numOfTags, sizeof(SField), 1);
|
createReq.pTags = taosArrayInit_s(sizeof(SField), 1);
|
||||||
|
|
||||||
// build tags
|
// build tags
|
||||||
SField *pField = taosArrayGet(createReq.pTags, 0);
|
SField *pField = taosArrayGet(createReq.pTags, 0);
|
||||||
|
@ -1055,52 +1055,52 @@ static int32_t mndRetrieveStream(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
char streamName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char streamName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(streamName, mndGetDbStr(pStream->name), sizeof(streamName));
|
STR_WITH_MAXSIZE_TO_VARSTR(streamName, mndGetDbStr(pStream->name), sizeof(streamName));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)streamName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)streamName, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStream->createTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStream->createTime, false);
|
||||||
|
|
||||||
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(sql, pStream->sql, sizeof(sql));
|
STR_WITH_MAXSIZE_TO_VARSTR(sql, pStream->sql, sizeof(sql));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)sql, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)sql, false);
|
||||||
|
|
||||||
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
char status2[20] = {0};
|
char status2[20] = {0};
|
||||||
mndShowStreamStatus(status2, pStream);
|
mndShowStreamStatus(status2, pStream);
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(status, status2, sizeof(status));
|
STR_WITH_MAXSIZE_TO_VARSTR(status, status2, sizeof(status));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&status, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&status, false);
|
||||||
|
|
||||||
char sourceDB[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char sourceDB[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(sourceDB, mndGetDbStr(pStream->sourceDb), sizeof(sourceDB));
|
STR_WITH_MAXSIZE_TO_VARSTR(sourceDB, mndGetDbStr(pStream->sourceDb), sizeof(sourceDB));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&sourceDB, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&sourceDB, false);
|
||||||
|
|
||||||
char targetDB[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char targetDB[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(targetDB, mndGetDbStr(pStream->targetDb), sizeof(targetDB));
|
STR_WITH_MAXSIZE_TO_VARSTR(targetDB, mndGetDbStr(pStream->targetDb), sizeof(targetDB));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&targetDB, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&targetDB, false);
|
||||||
|
|
||||||
if (pStream->targetSTbName[0] == 0) {
|
if (pStream->targetSTbName[0] == 0) {
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, NULL, true);
|
colDataSetVal(pColInfo, numOfRows, NULL, true);
|
||||||
} else {
|
} else {
|
||||||
char targetSTB[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char targetSTB[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(targetSTB, mndGetStbStr(pStream->targetSTbName), sizeof(targetSTB));
|
STR_WITH_MAXSIZE_TO_VARSTR(targetSTB, mndGetStbStr(pStream->targetSTbName), sizeof(targetSTB));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&targetSTB, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&targetSTB, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pStream->watermark, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pStream->watermark, false);
|
||||||
|
|
||||||
char trigger[20 + VARSTR_HEADER_SIZE] = {0};
|
char trigger[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
char trigger2[20] = {0};
|
char trigger2[20] = {0};
|
||||||
mndShowStreamTrigger(trigger2, pStream);
|
mndShowStreamTrigger(trigger2, pStream);
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(trigger, trigger2, sizeof(trigger));
|
STR_WITH_MAXSIZE_TO_VARSTR(trigger, trigger2, sizeof(trigger));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&trigger, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&trigger, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pStream);
|
sdbRelease(pSdb, pStream);
|
||||||
|
@ -1152,11 +1152,11 @@ static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
char streamName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char streamName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(streamName, mndGetDbStr(pStream->name), sizeof(streamName));
|
STR_WITH_MAXSIZE_TO_VARSTR(streamName, mndGetDbStr(pStream->name), sizeof(streamName));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)streamName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)streamName, false);
|
||||||
|
|
||||||
// task id
|
// task id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTask->taskId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTask->taskId, false);
|
||||||
|
|
||||||
// node type
|
// node type
|
||||||
char nodeType[20 + VARSTR_HEADER_SIZE] = {0};
|
char nodeType[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -1167,12 +1167,12 @@ static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
} else {
|
} else {
|
||||||
memcpy(varDataVal(nodeType), "snode", 5);
|
memcpy(varDataVal(nodeType), "snode", 5);
|
||||||
}
|
}
|
||||||
colDataAppend(pColInfo, numOfRows, nodeType, false);
|
colDataSetVal(pColInfo, numOfRows, nodeType, false);
|
||||||
|
|
||||||
// node id
|
// node id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
int32_t nodeId = TMAX(pTask->nodeId, 0);
|
int32_t nodeId = TMAX(pTask->nodeId, 0);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&nodeId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&nodeId, false);
|
||||||
|
|
||||||
// level
|
// level
|
||||||
char level[20 + VARSTR_HEADER_SIZE] = {0};
|
char level[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -1188,7 +1188,7 @@ static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
} else if (pTask->taskLevel == TASK_LEVEL__SINK) {
|
} else if (pTask->taskLevel == TASK_LEVEL__SINK) {
|
||||||
}
|
}
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&level, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&level, false);
|
||||||
|
|
||||||
// status
|
// status
|
||||||
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
char status[20 + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -1196,7 +1196,7 @@ static int32_t mndRetrieveStreamTask(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
strcpy(status, "normal");
|
strcpy(status, "normal");
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(status, status2, sizeof(status));
|
STR_WITH_MAXSIZE_TO_VARSTR(status, status2, sizeof(status));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&status, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&status, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1009,18 +1009,18 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock
|
||||||
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)topic, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)topic, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)cgroup, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)cgroup, false);
|
||||||
|
|
||||||
// vg id
|
// vg id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgEp->vgId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgEp->vgId, false);
|
||||||
|
|
||||||
// consumer id
|
// consumer id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pConsumerEp->consumerId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pConsumerEp->consumerId, false);
|
||||||
|
|
||||||
mDebug("mnd show subscriptions: topic %s, consumer %" PRId64 " cgroup %s vgid %d", varDataVal(topic),
|
mDebug("mnd show subscriptions: topic %s, consumer %" PRId64 " cgroup %s vgid %d", varDataVal(topic),
|
||||||
pConsumerEp->consumerId, varDataVal(cgroup), pVgEp->vgId);
|
pConsumerEp->consumerId, varDataVal(cgroup), pVgEp->vgId);
|
||||||
|
@ -1029,11 +1029,11 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock
|
||||||
#if 0
|
#if 0
|
||||||
// subscribe time
|
// subscribe time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSub->subscribeTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSub->subscribeTime, false);
|
||||||
|
|
||||||
// rebalance time
|
// rebalance time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSub->rebalanceTime, pConsumer->rebalanceTime == 0);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSub->rebalanceTime, pConsumer->rebalanceTime == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
|
@ -1057,18 +1057,18 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock
|
||||||
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
varDataSetLen(cgroup, strlen(varDataVal(cgroup)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)topic, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)topic, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)cgroup, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)cgroup, false);
|
||||||
|
|
||||||
// vg id
|
// vg id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgEp->vgId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgEp->vgId, false);
|
||||||
|
|
||||||
// consumer id
|
// consumer id
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, NULL, true);
|
colDataSetVal(pColInfo, numOfRows, NULL, true);
|
||||||
|
|
||||||
mDebug("mnd show subscriptions(unassigned): topic %s, cgroup %s vgid %d", varDataVal(topic), varDataVal(cgroup),
|
mDebug("mnd show subscriptions(unassigned): topic %s, cgroup %s vgid %d", varDataVal(topic), varDataVal(cgroup),
|
||||||
pVgEp->vgId);
|
pVgEp->vgId);
|
||||||
|
@ -1077,11 +1077,11 @@ int32_t mndRetrieveSubscribe(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBlock
|
||||||
#if 0
|
#if 0
|
||||||
// subscribe time
|
// subscribe time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSub->subscribeTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSub->subscribeTime, false);
|
||||||
|
|
||||||
// rebalance time
|
// rebalance time
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pSub->rebalanceTime, pConsumer->rebalanceTime == 0);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pSub->rebalanceTime, pConsumer->rebalanceTime == 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
|
|
|
@ -839,7 +839,7 @@ static int32_t mndRetrieveTopic(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
STR_TO_VARSTR(topicName, pName);
|
STR_TO_VARSTR(topicName, pName);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)topicName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)topicName, false);
|
||||||
|
|
||||||
char dbName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char dbName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
tNameFromString(&n, pTopic->db, T_NAME_ACCT | T_NAME_DB);
|
tNameFromString(&n, pTopic->db, T_NAME_ACCT | T_NAME_DB);
|
||||||
|
@ -847,16 +847,16 @@ static int32_t mndRetrieveTopic(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
varDataSetLen(dbName, strlen(varDataVal(dbName)));
|
varDataSetLen(dbName, strlen(varDataVal(dbName)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)dbName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)dbName, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTopic->createTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTopic->createTime, false);
|
||||||
|
|
||||||
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
char sql[TSDB_SHOW_SQL_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(sql, pTopic->sql);
|
STR_TO_VARSTR(sql, pTopic->sql);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)sql, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)sql, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pTopic);
|
sdbRelease(pSdb, pTopic);
|
||||||
|
|
|
@ -1658,36 +1658,36 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->id, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->id, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->createdTime, false);
|
||||||
|
|
||||||
char stage[TSDB_TRANS_STAGE_LEN + VARSTR_HEADER_SIZE] = {0};
|
char stage[TSDB_TRANS_STAGE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(stage, mndTransStr(pTrans->stage), pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(stage, mndTransStr(pTrans->stage), pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)stage, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)stage, false);
|
||||||
|
|
||||||
char opername[TSDB_TRANS_OPER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char opername[TSDB_TRANS_OPER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(opername, pTrans->opername, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(opername, pTrans->opername, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)opername, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)opername, false);
|
||||||
|
|
||||||
char dbname[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char dbname[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(dbname, mndGetDbStr(pTrans->dbname), pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(dbname, mndGetDbStr(pTrans->dbname), pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)dbname, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)dbname, false);
|
||||||
|
|
||||||
char stbname[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char stbname[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(stbname, mndGetDbStr(pTrans->stbname), pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(stbname, mndGetDbStr(pTrans->stbname), pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)stbname, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)stbname, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->failedTimes, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->failedTimes, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pTrans->lastExecTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pTrans->lastExecTime, false);
|
||||||
|
|
||||||
char lastInfo[TSDB_TRANS_ERROR_LEN + VARSTR_HEADER_SIZE] = {0};
|
char lastInfo[TSDB_TRANS_ERROR_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
char detail[TSDB_TRANS_ERROR_LEN + 1] = {0};
|
char detail[TSDB_TRANS_ERROR_LEN + 1] = {0};
|
||||||
|
@ -1703,7 +1703,7 @@ static int32_t mndRetrieveTrans(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
}
|
}
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(lastInfo, detail, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(lastInfo, detail, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)lastInfo, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)lastInfo, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pTrans);
|
sdbRelease(pSdb, pTrans);
|
||||||
|
|
|
@ -795,23 +795,23 @@ static int32_t mndRetrieveUsers(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pBl
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
char name[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char name[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(name, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(name, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)name, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)name, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pUser->superUser, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pUser->superUser, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pUser->enable, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pUser->enable, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pUser->sysInfo, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pUser->sysInfo, false);
|
||||||
|
|
||||||
cols++;
|
cols++;
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pUser->createdTime, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pUser->createdTime, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pUser);
|
sdbRelease(pSdb, pUser);
|
||||||
|
@ -848,17 +848,17 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)userName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)userName, false);
|
||||||
|
|
||||||
char privilege[20] = {0};
|
char privilege[20] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "all", pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "all", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)privilege, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)privilege, false);
|
||||||
|
|
||||||
char objName[20] = {0};
|
char objName[20] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(objName, "all", pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(objName, "all", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)objName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)objName, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
@ -869,12 +869,12 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)userName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)userName, false);
|
||||||
|
|
||||||
char privilege[20] = {0};
|
char privilege[20] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "read", pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "read", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)privilege, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)privilege, false);
|
||||||
|
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
char objName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char objName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -882,7 +882,7 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
tNameGetDbName(&name, varDataVal(objName));
|
tNameGetDbName(&name, varDataVal(objName));
|
||||||
varDataSetLen(objName, strlen(varDataVal(objName)));
|
varDataSetLen(objName, strlen(varDataVal(objName)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)objName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)objName, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
db = taosHashIterate(pUser->readDbs, db);
|
db = taosHashIterate(pUser->readDbs, db);
|
||||||
|
@ -894,12 +894,12 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)userName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)userName, false);
|
||||||
|
|
||||||
char privilege[20] = {0};
|
char privilege[20] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "write", pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "write", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)privilege, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)privilege, false);
|
||||||
|
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
char objName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char objName[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -907,7 +907,7 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
tNameGetDbName(&name, varDataVal(objName));
|
tNameGetDbName(&name, varDataVal(objName));
|
||||||
varDataSetLen(objName, strlen(varDataVal(objName)));
|
varDataSetLen(objName, strlen(varDataVal(objName)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)objName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)objName, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
db = taosHashIterate(pUser->writeDbs, db);
|
db = taosHashIterate(pUser->writeDbs, db);
|
||||||
|
@ -919,18 +919,18 @@ static int32_t mndRetrievePrivileges(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock
|
||||||
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
char userName[TSDB_USER_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(userName, pUser->user, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)userName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)userName, false);
|
||||||
|
|
||||||
char privilege[20] = {0};
|
char privilege[20] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "subscribe", pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(privilege, "subscribe", pShow->pMeta->pSchemas[cols].bytes);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)privilege, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)privilege, false);
|
||||||
|
|
||||||
char topicName[TSDB_TOPIC_NAME_LEN + VARSTR_HEADER_SIZE + 5] = {0};
|
char topicName[TSDB_TOPIC_NAME_LEN + VARSTR_HEADER_SIZE + 5] = {0};
|
||||||
tstrncpy(varDataVal(topicName), mndGetDbStr(topic), TSDB_TOPIC_NAME_LEN - 2);
|
tstrncpy(varDataVal(topicName), mndGetDbStr(topic), TSDB_TOPIC_NAME_LEN - 2);
|
||||||
varDataSetLen(topicName, strlen(varDataVal(topicName)));
|
varDataSetLen(topicName, strlen(varDataVal(topicName)));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)topicName, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)topicName, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
topic = taosHashIterate(pUser->topics, topic);
|
topic = taosHashIterate(pUser->topics, topic);
|
||||||
|
|
|
@ -681,7 +681,7 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
|
|
||||||
cols = 0;
|
cols = 0;
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false);
|
||||||
|
|
||||||
SName name = {0};
|
SName name = {0};
|
||||||
char db[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char db[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -690,17 +690,17 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
varDataSetLen(db, strlen(varDataVal(db)));
|
varDataSetLen(db, strlen(varDataVal(db)));
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)db, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)db, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgroup->numOfTables, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->numOfTables, false);
|
||||||
|
|
||||||
// default 3 replica, add 1 replica if move vnode
|
// default 3 replica, add 1 replica if move vnode
|
||||||
for (int32_t i = 0; i < 4; ++i) {
|
for (int32_t i = 0; i < 4; ++i) {
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
if (i < pVgroup->replica) {
|
if (i < pVgroup->replica) {
|
||||||
int16_t dnodeId = (int16_t)pVgroup->vnodeGid[i].dnodeId;
|
int16_t dnodeId = (int16_t)pVgroup->vnodeGid[i].dnodeId;
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&dnodeId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&dnodeId, false);
|
||||||
|
|
||||||
bool exist = false;
|
bool exist = false;
|
||||||
bool online = false;
|
bool online = false;
|
||||||
|
@ -731,20 +731,20 @@ static int32_t mndRetrieveVgroups(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *p
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(buf1, role, pShow->pMeta->pSchemas[cols].bytes);
|
STR_WITH_MAXSIZE_TO_VARSTR(buf1, role, pShow->pMeta->pSchemas[cols].bytes);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)buf1, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)buf1, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppendNULL(pColInfo, numOfRows);
|
colDataSetNULL(pColInfo, numOfRows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
int32_t cacheUsage = (int32_t)pVgroup->cacheUsage;
|
int32_t cacheUsage = (int32_t)pVgroup->cacheUsage;
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&cacheUsage, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&cacheUsage, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgroup->isTsma, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->isTsma, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pVgroup);
|
sdbRelease(pSdb, pVgroup);
|
||||||
|
@ -840,15 +840,15 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
cols = 0;
|
cols = 0;
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->vgId, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgroup->replica, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgroup->replica, false);
|
||||||
|
|
||||||
char buf[20] = {0};
|
char buf[20] = {0};
|
||||||
STR_TO_VARSTR(buf, syncStr(pVgid->syncState));
|
STR_TO_VARSTR(buf, syncStr(pVgid->syncState));
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)buf, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)buf, false);
|
||||||
|
|
||||||
const char *dbname = mndGetDbStr(pVgroup->dbName);
|
const char *dbname = mndGetDbStr(pVgroup->dbName);
|
||||||
char b1[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char b1[TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -858,10 +858,10 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b1, "NULL", TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(b1, "NULL", TSDB_DB_NAME_LEN + VARSTR_HEADER_SIZE);
|
||||||
}
|
}
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b1, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b1, false);
|
||||||
|
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)&pVgid->dnodeId, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)&pVgid->dnodeId, false);
|
||||||
|
|
||||||
SDnodeObj *pDnode = mndAcquireDnode(pMnode, pVgid->dnodeId);
|
SDnodeObj *pDnode = mndAcquireDnode(pMnode, pVgid->dnodeId);
|
||||||
char b2[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
char b2[TSDB_EP_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
|
@ -871,7 +871,7 @@ static int32_t mndRetrieveVnodes(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock *pB
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(b2, "NULL", TSDB_EP_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(b2, "NULL", TSDB_EP_LEN + VARSTR_HEADER_SIZE);
|
||||||
}
|
}
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, cols++);
|
||||||
colDataAppend(pColInfo, numOfRows, (const char *)b2, false);
|
colDataSetVal(pColInfo, numOfRows, (const char *)b2, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,10 +279,7 @@ static void tdDestroyRSmaStat(void *pRSmaStat) {
|
||||||
// step 1: set rsma trigger stat cancelled
|
// step 1: set rsma trigger stat cancelled
|
||||||
atomic_store_8(RSMA_TRIGGER_STAT(pStat), TASK_TRIGGER_STAT_CANCELLED);
|
atomic_store_8(RSMA_TRIGGER_STAT(pStat), TASK_TRIGGER_STAT_CANCELLED);
|
||||||
|
|
||||||
// step 2: destroy the rsma info and associated fetch tasks
|
// step 2: wait for all triggered fetch tasks to finish
|
||||||
taosHashCleanup(RSMA_INFO_HASH(pStat));
|
|
||||||
|
|
||||||
// step 3: wait for all triggered fetch tasks to finish
|
|
||||||
int32_t nLoops = 0;
|
int32_t nLoops = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
if (T_REF_VAL_GET((SSmaStat *)pStat) == 0) {
|
if (T_REF_VAL_GET((SSmaStat *)pStat) == 0) {
|
||||||
|
@ -298,9 +295,12 @@ static void tdDestroyRSmaStat(void *pRSmaStat) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// step 4:
|
// step 3:
|
||||||
tdRsmaStopExecutor(pSma);
|
tdRsmaStopExecutor(pSma);
|
||||||
|
|
||||||
|
// step 4: destroy the rsma info and associated fetch tasks
|
||||||
|
taosHashCleanup(RSMA_INFO_HASH(pStat));
|
||||||
|
|
||||||
// step 5:
|
// step 5:
|
||||||
tdRSmaFSClose(RSMA_FS(pStat));
|
tdRSmaFSClose(RSMA_FS(pStat));
|
||||||
|
|
||||||
|
|
|
@ -1264,17 +1264,17 @@ int32_t tqProcessDelReq(STQ* pTq, void* pReq, int32_t len, int64_t ver) {
|
||||||
for (int32_t i = 0; i < sz; i++) {
|
for (int32_t i = 0; i < sz; i++) {
|
||||||
// start key column
|
// start key column
|
||||||
SColumnInfoData* pStartCol = taosArrayGet(pDelBlock->pDataBlock, START_TS_COLUMN_INDEX);
|
SColumnInfoData* pStartCol = taosArrayGet(pDelBlock->pDataBlock, START_TS_COLUMN_INDEX);
|
||||||
colDataAppend(pStartCol, i, (const char*)&pRes->skey, false); // end key column
|
colDataSetVal(pStartCol, i, (const char*)&pRes->skey, false); // end key column
|
||||||
SColumnInfoData* pEndCol = taosArrayGet(pDelBlock->pDataBlock, END_TS_COLUMN_INDEX);
|
SColumnInfoData* pEndCol = taosArrayGet(pDelBlock->pDataBlock, END_TS_COLUMN_INDEX);
|
||||||
colDataAppend(pEndCol, i, (const char*)&pRes->ekey, false);
|
colDataSetVal(pEndCol, i, (const char*)&pRes->ekey, false);
|
||||||
// uid column
|
// uid column
|
||||||
SColumnInfoData* pUidCol = taosArrayGet(pDelBlock->pDataBlock, UID_COLUMN_INDEX);
|
SColumnInfoData* pUidCol = taosArrayGet(pDelBlock->pDataBlock, UID_COLUMN_INDEX);
|
||||||
int64_t* pUid = taosArrayGet(pRes->uidList, i);
|
int64_t* pUid = taosArrayGet(pRes->uidList, i);
|
||||||
colDataAppend(pUidCol, i, (const char*)pUid, false);
|
colDataSetVal(pUidCol, i, (const char*)pUid, false);
|
||||||
|
|
||||||
colDataAppendNULL(taosArrayGet(pDelBlock->pDataBlock, GROUPID_COLUMN_INDEX), i);
|
colDataSetNULL(taosArrayGet(pDelBlock->pDataBlock, GROUPID_COLUMN_INDEX), i);
|
||||||
colDataAppendNULL(taosArrayGet(pDelBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX), i);
|
colDataSetNULL(taosArrayGet(pDelBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX), i);
|
||||||
colDataAppendNULL(taosArrayGet(pDelBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX), i);
|
colDataSetNULL(taosArrayGet(pDelBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX), i);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayDestroy(pRes->uidList);
|
taosArrayDestroy(pRes->uidList);
|
||||||
|
|
|
@ -544,7 +544,7 @@ int32_t tqRetrieveDataBlock(SSDataBlock* pBlock, STqReader* pReader) {
|
||||||
if (!tdSTSRowIterFetch(&iter, pColData->info.colId, pColData->info.type, &sVal)) {
|
if (!tdSTSRowIterFetch(&iter, pColData->info.colId, pColData->info.type, &sVal)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (colDataAppend(pColData, curRow, sVal.val, sVal.valType != TD_VTYPE_NORM) < 0) {
|
if (colDataSetVal(pColData, curRow, sVal.val, sVal.valType != TD_VTYPE_NORM) < 0) {
|
||||||
goto FAIL;
|
goto FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -673,7 +673,7 @@ int32_t tqRetrieveTaosxBlock(STqReader* pReader, SArray* blocks, SArray* schemas
|
||||||
|
|
||||||
ASSERT(sVal.valType != TD_VTYPE_NONE);
|
ASSERT(sVal.valType != TD_VTYPE_NONE);
|
||||||
|
|
||||||
if (colDataAppend(pColData, curRow, sVal.val, sVal.valType == TD_VTYPE_NULL) < 0) {
|
if (colDataSetVal(pColData, curRow, sVal.val, sVal.valType == TD_VTYPE_NULL) < 0) {
|
||||||
goto FAIL;
|
goto FAIL;
|
||||||
}
|
}
|
||||||
tqDebug("vgId:%d, row %d col %d append %d", pReader->pWalReader->pWal->cfg.vgId, curRow, i,
|
tqDebug("vgId:%d, row %d col %d append %d", pReader->pWalReader->pWal->cfg.vgId, curRow, i,
|
||||||
|
|
|
@ -67,7 +67,7 @@ static int32_t saveOneRow(SArray* pRow, SSDataBlock* pBlock, SCacheRowsReader* p
|
||||||
// pColInfoData->info.bytes includes the VARSTR_HEADER_SIZE, need to substruct it
|
// pColInfoData->info.bytes includes the VARSTR_HEADER_SIZE, need to substruct it
|
||||||
p->hasResult = true;
|
p->hasResult = true;
|
||||||
varDataSetLen(pRes[i], pColInfoData->info.bytes - VARSTR_HEADER_SIZE);
|
varDataSetLen(pRes[i], pColInfoData->info.bytes - VARSTR_HEADER_SIZE);
|
||||||
colDataAppend(pColInfoData, numOfRows, (const char*)pRes[i], false);
|
colDataSetVal(pColInfoData, numOfRows, (const char*)pRes[i], false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows += allNullRow ? 0 : 1;
|
pBlock->info.rows += allNullRow ? 0 : 1;
|
||||||
|
@ -77,7 +77,7 @@ static int32_t saveOneRow(SArray* pRow, SSDataBlock* pBlock, SCacheRowsReader* p
|
||||||
|
|
||||||
if (slotIds[i] == -1) {
|
if (slotIds[i] == -1) {
|
||||||
SLastCol* pColVal = (SLastCol*)taosArrayGet(pRow, 0);
|
SLastCol* pColVal = (SLastCol*)taosArrayGet(pRow, 0);
|
||||||
colDataAppend(pColInfoData, numOfRows, (const char*)&pColVal->ts, false);
|
colDataSetVal(pColInfoData, numOfRows, (const char*)&pColVal->ts, false);
|
||||||
} else {
|
} else {
|
||||||
int32_t slotId = slotIds[i];
|
int32_t slotId = slotIds[i];
|
||||||
SLastCol* pColVal = (SLastCol*)taosArrayGet(pRow, slotId);
|
SLastCol* pColVal = (SLastCol*)taosArrayGet(pRow, slotId);
|
||||||
|
@ -85,14 +85,14 @@ static int32_t saveOneRow(SArray* pRow, SSDataBlock* pBlock, SCacheRowsReader* p
|
||||||
|
|
||||||
if (IS_VAR_DATA_TYPE(pColVal->colVal.type)) {
|
if (IS_VAR_DATA_TYPE(pColVal->colVal.type)) {
|
||||||
if (!COL_VAL_IS_VALUE(&pColVal->colVal)) {
|
if (!COL_VAL_IS_VALUE(&pColVal->colVal)) {
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
varDataSetLen(pReader->transferBuf[slotId], pVal->value.nData);
|
varDataSetLen(pReader->transferBuf[slotId], pVal->value.nData);
|
||||||
memcpy(varDataVal(pReader->transferBuf[slotId]), pVal->value.pData, pVal->value.nData);
|
memcpy(varDataVal(pReader->transferBuf[slotId]), pVal->value.pData, pVal->value.nData);
|
||||||
colDataAppend(pColInfoData, numOfRows, pReader->transferBuf[slotId], false);
|
colDataSetVal(pColInfoData, numOfRows, pReader->transferBuf[slotId], false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfoData, numOfRows, (const char*)&pVal->value.val, !COL_VAL_IS_VALUE(pVal));
|
colDataSetVal(pColInfoData, numOfRows, (const char*)&pVal->value.val, !COL_VAL_IS_VALUE(pVal));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -821,7 +821,7 @@ static void doCopyColVal(SColumnInfoData* pColInfoData, int32_t rowIndex, int32_
|
||||||
SBlockLoadSuppInfo* pSup) {
|
SBlockLoadSuppInfo* pSup) {
|
||||||
if (IS_VAR_DATA_TYPE(pColVal->type)) {
|
if (IS_VAR_DATA_TYPE(pColVal->type)) {
|
||||||
if (!COL_VAL_IS_VALUE(pColVal)) {
|
if (!COL_VAL_IS_VALUE(pColVal)) {
|
||||||
colDataAppendNULL(pColInfoData, rowIndex);
|
colDataSetNULL(pColInfoData, rowIndex);
|
||||||
} else {
|
} else {
|
||||||
varDataSetLen(pSup->buildBuf[colIndex], pColVal->value.nData);
|
varDataSetLen(pSup->buildBuf[colIndex], pColVal->value.nData);
|
||||||
ASSERT(pColVal->value.nData <= pColInfoData->info.bytes);
|
ASSERT(pColVal->value.nData <= pColInfoData->info.bytes);
|
||||||
|
@ -829,10 +829,10 @@ static void doCopyColVal(SColumnInfoData* pColInfoData, int32_t rowIndex, int32_
|
||||||
memcpy(varDataVal(pSup->buildBuf[colIndex]), pColVal->value.pData, pColVal->value.nData);
|
memcpy(varDataVal(pSup->buildBuf[colIndex]), pColVal->value.pData, pColVal->value.nData);
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pColInfoData, rowIndex, pSup->buildBuf[colIndex], false);
|
colDataSetVal(pColInfoData, rowIndex, pSup->buildBuf[colIndex], false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfoData, rowIndex, (const char*)&pColVal->value, !COL_VAL_IS_VALUE(pColVal));
|
colDataSetVal(pColInfoData, rowIndex, (const char*)&pColVal->value, !COL_VAL_IS_VALUE(pColVal));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1105,7 +1105,7 @@ static int32_t copyBlockDataToSDataBlock(STsdbReader* pReader) {
|
||||||
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
|
|
||||||
if (pData->flag == HAS_NONE || pData->flag == HAS_NULL || pData->flag == (HAS_NULL | HAS_NONE)) {
|
if (pData->flag == HAS_NONE || pData->flag == HAS_NULL || pData->flag == (HAS_NULL | HAS_NONE)) {
|
||||||
colDataAppendNNULL(pColData, 0, dumpedRows);
|
colDataSetNNULL(pColData, 0, dumpedRows);
|
||||||
} else {
|
} else {
|
||||||
if (IS_MATHABLE_TYPE(pColData->info.type)) {
|
if (IS_MATHABLE_TYPE(pColData->info.type)) {
|
||||||
copyNumericCols(pData, pDumpInfo, pColData, dumpedRows, asc);
|
copyNumericCols(pData, pDumpInfo, pColData, dumpedRows, asc);
|
||||||
|
@ -1121,7 +1121,7 @@ static int32_t copyBlockDataToSDataBlock(STsdbReader* pReader) {
|
||||||
i += 1;
|
i += 1;
|
||||||
} else { // the specified column does not exist in file block, fill with null data
|
} else { // the specified column does not exist in file block, fill with null data
|
||||||
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
colDataAppendNNULL(pColData, 0, dumpedRows);
|
colDataSetNNULL(pColData, 0, dumpedRows);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1129,7 +1129,7 @@ static int32_t copyBlockDataToSDataBlock(STsdbReader* pReader) {
|
||||||
// fill the mis-matched columns with null value
|
// fill the mis-matched columns with null value
|
||||||
while (i < numOfOutputCols) {
|
while (i < numOfOutputCols) {
|
||||||
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
pColData = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
colDataAppendNNULL(pColData, 0, dumpedRows);
|
colDataSetNNULL(pColData, 0, dumpedRows);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3631,7 +3631,7 @@ int32_t doAppendRowFromTSRow(SSDataBlock* pBlock, STsdbReader* pReader, STSRow*
|
||||||
} else if (colId < pSchema->columns[j].colId) {
|
} else if (colId < pSchema->columns[j].colId) {
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, pSupInfo->slotId[i]);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
|
|
||||||
colDataAppendNULL(pColInfoData, outputRowIndex);
|
colDataSetNULL(pColInfoData, outputRowIndex);
|
||||||
i += 1;
|
i += 1;
|
||||||
} else if (colId > pSchema->columns[j].colId) {
|
} else if (colId > pSchema->columns[j].colId) {
|
||||||
j += 1;
|
j += 1;
|
||||||
|
@ -3641,7 +3641,7 @@ int32_t doAppendRowFromTSRow(SSDataBlock* pBlock, STsdbReader* pReader, STSRow*
|
||||||
// set null value since current column does not exist in the "pSchema"
|
// set null value since current column does not exist in the "pSchema"
|
||||||
while (i < pSupInfo->numOfCols) {
|
while (i < pSupInfo->numOfCols) {
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, pSupInfo->slotId[i]);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
colDataAppendNULL(pColInfoData, outputRowIndex);
|
colDataSetNULL(pColInfoData, outputRowIndex);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3681,7 +3681,7 @@ int32_t doAppendRowFromFileBlock(SSDataBlock* pResBlock, STsdbReader* pReader, S
|
||||||
j += 1;
|
j += 1;
|
||||||
} else if (pData->cid > pCol->info.colId) {
|
} else if (pData->cid > pCol->info.colId) {
|
||||||
// the specified column does not exist in file block, fill with null data
|
// the specified column does not exist in file block, fill with null data
|
||||||
colDataAppendNULL(pCol, outputRowIndex);
|
colDataSetNULL(pCol, outputRowIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
i += 1;
|
i += 1;
|
||||||
|
@ -3689,7 +3689,7 @@ int32_t doAppendRowFromFileBlock(SSDataBlock* pResBlock, STsdbReader* pReader, S
|
||||||
|
|
||||||
while (i < numOfOutputCols) {
|
while (i < numOfOutputCols) {
|
||||||
SColumnInfoData* pCol = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
SColumnInfoData* pCol = taosArrayGet(pResBlock->pDataBlock, pSupInfo->slotId[i]);
|
||||||
colDataAppendNULL(pCol, outputRowIndex);
|
colDataSetNULL(pCol, outputRowIndex);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1707,7 +1707,7 @@ int32_t ctgLaunchGetTbMetasTask(SCtgTask* pTask) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
pTask->msgCtxs = taosArrayInit_s(pCtx->fetchNum, sizeof(SCtgMsgCtx), pCtx->fetchNum);
|
pTask->msgCtxs = taosArrayInit_s(sizeof(SCtgMsgCtx), pCtx->fetchNum);
|
||||||
for (int32_t i = 0; i < pCtx->fetchNum; ++i) {
|
for (int32_t i = 0; i < pCtx->fetchNum; ++i) {
|
||||||
SCtgFetch* pFetch = taosArrayGet(pCtx->pFetchs, i);
|
SCtgFetch* pFetch = taosArrayGet(pCtx->pFetchs, i);
|
||||||
SName* pName = ctgGetFetchName(pCtx->pNames, pFetch);
|
SName* pName = ctgGetFetchName(pCtx->pNames, pFetch);
|
||||||
|
@ -1857,7 +1857,7 @@ int32_t ctgLaunchGetTbHashsTask(SCtgTask* pTask) {
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
pTask->msgCtxs = taosArrayInit_s(pCtx->fetchNum, sizeof(SCtgMsgCtx), pCtx->fetchNum);
|
pTask->msgCtxs = taosArrayInit_s(sizeof(SCtgMsgCtx), pCtx->fetchNum);
|
||||||
|
|
||||||
for (int32_t i = 0; i < pCtx->fetchNum; ++i) {
|
for (int32_t i = 0; i < pCtx->fetchNum; ++i) {
|
||||||
SCtgFetch* pFetch = taosArrayGet(pCtx->pFetchs, i);
|
SCtgFetch* pFetch = taosArrayGet(pCtx->pFetchs, i);
|
||||||
|
|
|
@ -104,13 +104,13 @@ static void setDescResultIntoDataBlock(bool sysInfoUser, SSDataBlock* pBlock, in
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
STR_TO_VARSTR(buf, pMeta->schema[i].name);
|
STR_TO_VARSTR(buf, pMeta->schema[i].name);
|
||||||
colDataAppend(pCol1, pBlock->info.rows, buf, false);
|
colDataSetVal(pCol1, pBlock->info.rows, buf, false);
|
||||||
STR_TO_VARSTR(buf, tDataTypes[pMeta->schema[i].type].name);
|
STR_TO_VARSTR(buf, tDataTypes[pMeta->schema[i].type].name);
|
||||||
colDataAppend(pCol2, pBlock->info.rows, buf, false);
|
colDataSetVal(pCol2, pBlock->info.rows, buf, false);
|
||||||
int32_t bytes = getSchemaBytes(pMeta->schema + i);
|
int32_t bytes = getSchemaBytes(pMeta->schema + i);
|
||||||
colDataAppend(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
colDataSetVal(pCol3, pBlock->info.rows, (const char*)&bytes, false);
|
||||||
STR_TO_VARSTR(buf, i >= pMeta->tableInfo.numOfColumns ? "TAG" : "");
|
STR_TO_VARSTR(buf, i >= pMeta->tableInfo.numOfColumns ? "TAG" : "");
|
||||||
colDataAppend(pCol4, pBlock->info.rows, buf, false);
|
colDataSetVal(pCol4, pBlock->info.rows, buf, false);
|
||||||
++(pBlock->info.rows);
|
++(pBlock->info.rows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbFName, S
|
||||||
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
char buf1[SHOW_CREATE_DB_RESULT_FIELD1_LEN] = {0};
|
char buf1[SHOW_CREATE_DB_RESULT_FIELD1_LEN] = {0};
|
||||||
STR_TO_VARSTR(buf1, dbFName);
|
STR_TO_VARSTR(buf1, dbFName);
|
||||||
colDataAppend(pCol1, 0, buf1, false);
|
colDataSetVal(pCol1, 0, buf1, false);
|
||||||
|
|
||||||
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
||||||
char buf2[SHOW_CREATE_DB_RESULT_FIELD2_LEN] = {0};
|
char buf2[SHOW_CREATE_DB_RESULT_FIELD2_LEN] = {0};
|
||||||
|
@ -278,7 +278,7 @@ static void setCreateDBResultIntoDataBlock(SSDataBlock* pBlock, char* dbFName, S
|
||||||
|
|
||||||
(varDataLen(buf2)) = len;
|
(varDataLen(buf2)) = len;
|
||||||
|
|
||||||
colDataAppend(pCol2, 0, buf2, false);
|
colDataSetVal(pCol2, 0, buf2, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
static int32_t execShowCreateDatabase(SShowCreateDatabaseStmt* pStmt, SRetrieveTableRsp** pRsp) {
|
||||||
|
@ -488,7 +488,7 @@ static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* p
|
||||||
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* pCol1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
char buf1[SHOW_CREATE_TB_RESULT_FIELD1_LEN] = {0};
|
char buf1[SHOW_CREATE_TB_RESULT_FIELD1_LEN] = {0};
|
||||||
STR_TO_VARSTR(buf1, tbName);
|
STR_TO_VARSTR(buf1, tbName);
|
||||||
colDataAppend(pCol1, 0, buf1, false);
|
colDataSetVal(pCol1, 0, buf1, false);
|
||||||
|
|
||||||
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
SColumnInfoData* pCol2 = taosArrayGet(pBlock->pDataBlock, 1);
|
||||||
char* buf2 = taosMemoryMalloc(SHOW_CREATE_TB_RESULT_FIELD2_LEN);
|
char* buf2 = taosMemoryMalloc(SHOW_CREATE_TB_RESULT_FIELD2_LEN);
|
||||||
|
@ -526,7 +526,7 @@ static int32_t setCreateTBResultIntoDataBlock(SSDataBlock* pBlock, SDbCfgInfo* p
|
||||||
|
|
||||||
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
varDataLen(buf2) = (len > 65535) ? 65535 : len;
|
||||||
|
|
||||||
colDataAppend(pCol2, 0, buf2, false);
|
colDataSetVal(pCol2, 0, buf2, false);
|
||||||
|
|
||||||
taosMemoryFree(buf2);
|
taosMemoryFree(buf2);
|
||||||
|
|
||||||
|
@ -649,14 +649,14 @@ int32_t setLocalVariablesResultIntoDataBlock(SSDataBlock* pBlock) {
|
||||||
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
char name[TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(name, pItem->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
STR_WITH_MAXSIZE_TO_VARSTR(name, pItem->name, TSDB_CONFIG_OPTION_LEN + VARSTR_HEADER_SIZE);
|
||||||
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, name, false);
|
colDataSetVal(pColInfo, i, name, false);
|
||||||
|
|
||||||
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
char value[TSDB_CONFIG_VALUE_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
int32_t valueLen = 0;
|
int32_t valueLen = 0;
|
||||||
cfgDumpItemValue(pItem, &value[VARSTR_HEADER_SIZE], TSDB_CONFIG_VALUE_LEN, &valueLen);
|
cfgDumpItemValue(pItem, &value[VARSTR_HEADER_SIZE], TSDB_CONFIG_VALUE_LEN, &valueLen);
|
||||||
varDataSetLen(value, valueLen);
|
varDataSetLen(value, valueLen);
|
||||||
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
pColInfo = taosArrayGet(pBlock->pDataBlock, c++);
|
||||||
colDataAppend(pColInfo, i, value, false);
|
colDataSetVal(pColInfo, i, value, false);
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
}
|
}
|
||||||
|
@ -712,9 +712,9 @@ int32_t buildSelectResultDataBlock(SNodeList* pProjects, SSDataBlock* pBlock) {
|
||||||
return TSDB_CODE_PAR_INVALID_SELECTED_EXPR;
|
return TSDB_CODE_PAR_INVALID_SELECTED_EXPR;
|
||||||
} else {
|
} else {
|
||||||
if (((SValueNode*)pProj)->isNull) {
|
if (((SValueNode*)pProj)->isNull) {
|
||||||
colDataAppend(taosArrayGet(pBlock->pDataBlock, index++), 0, NULL, true);
|
colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, NULL, true);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(taosArrayGet(pBlock->pDataBlock, index++), 0, nodesGetValueFromNode((SValueNode*)pProj), false);
|
colDataSetVal(taosArrayGet(pBlock->pDataBlock, index++), 0, nodesGetValueFromNode((SValueNode*)pProj), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1648,7 +1648,7 @@ int32_t qExplainGetRspFromCtx(void *ctx, SRetrieveTableRsp **pRsp) {
|
||||||
|
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
SQueryExplainRowInfo *row = taosArrayGet(pCtx->rows, i);
|
SQueryExplainRowInfo *row = taosArrayGet(pCtx->rows, i);
|
||||||
colDataAppend(pInfoData, i, row->buf, false);
|
colDataSetVal(pInfoData, i, row->buf, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = rowNum;
|
pBlock->info.rows = rowNum;
|
||||||
|
|
|
@ -182,10 +182,10 @@ SSDataBlock* doScanCache(SOperatorInfo* pOperator) {
|
||||||
SColumnInfoData* pDst = taosArrayGet(pRes->pDataBlock, slotId);
|
SColumnInfoData* pDst = taosArrayGet(pRes->pDataBlock, slotId);
|
||||||
|
|
||||||
if (colDataIsNull_s(pSrc, pInfo->indexOfBufferedRes)) {
|
if (colDataIsNull_s(pSrc, pInfo->indexOfBufferedRes)) {
|
||||||
colDataAppendNULL(pDst, 0);
|
colDataSetNULL(pDst, 0);
|
||||||
} else {
|
} else {
|
||||||
char* p = colDataGetData(pSrc, pInfo->indexOfBufferedRes);
|
char* p = colDataGetData(pSrc, pInfo->indexOfBufferedRes);
|
||||||
colDataAppend(pDst, 0, p, false);
|
colDataSetVal(pDst, 0, p, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -851,7 +851,7 @@ static SSDataBlock* createTagValBlockForFilter(SArray* pColList, int32_t numOfTa
|
||||||
metaGetTableNameByUid(metaHandle, p1->uid, str);
|
metaGetTableNameByUid(metaHandle, p1->uid, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pColInfo, i, str, false);
|
colDataSetVal(pColInfo, i, str, false);
|
||||||
#if TAG_FILTER_DEBUG
|
#if TAG_FILTER_DEBUG
|
||||||
qDebug("tagfilter uid:%ld, tbname:%s", *uid, str + 2);
|
qDebug("tagfilter uid:%ld, tbname:%s", *uid, str + 2);
|
||||||
#endif
|
#endif
|
||||||
|
@ -859,25 +859,25 @@ static SSDataBlock* createTagValBlockForFilter(SArray* pColList, int32_t numOfTa
|
||||||
STagVal tagVal = {0};
|
STagVal tagVal = {0};
|
||||||
tagVal.cid = pColInfo->info.colId;
|
tagVal.cid = pColInfo->info.colId;
|
||||||
if (p1->pTagVal == NULL) {
|
if (p1->pTagVal == NULL) {
|
||||||
colDataAppendNULL(pColInfo, i);
|
colDataSetNULL(pColInfo, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* p = metaGetTableTagVal(p1->pTagVal, pColInfo->info.type, &tagVal);
|
const char* p = metaGetTableTagVal(p1->pTagVal, pColInfo->info.type, &tagVal);
|
||||||
|
|
||||||
if (p == NULL || (pColInfo->info.type == TSDB_DATA_TYPE_JSON && ((STag*)p)->nTag == 0)) {
|
if (p == NULL || (pColInfo->info.type == TSDB_DATA_TYPE_JSON && ((STag*)p)->nTag == 0)) {
|
||||||
colDataAppendNULL(pColInfo, i);
|
colDataSetNULL(pColInfo, i);
|
||||||
} else if (pColInfo->info.type == TSDB_DATA_TYPE_JSON) {
|
} else if (pColInfo->info.type == TSDB_DATA_TYPE_JSON) {
|
||||||
colDataAppend(pColInfo, i, p, false);
|
colDataSetVal(pColInfo, i, p, false);
|
||||||
} else if (IS_VAR_DATA_TYPE(pColInfo->info.type)) {
|
} else if (IS_VAR_DATA_TYPE(pColInfo->info.type)) {
|
||||||
char* tmp = alloca(tagVal.nData + VARSTR_HEADER_SIZE + 1);
|
char* tmp = alloca(tagVal.nData + VARSTR_HEADER_SIZE + 1);
|
||||||
varDataSetLen(tmp, tagVal.nData);
|
varDataSetLen(tmp, tagVal.nData);
|
||||||
memcpy(tmp + VARSTR_HEADER_SIZE, tagVal.pData, tagVal.nData);
|
memcpy(tmp + VARSTR_HEADER_SIZE, tagVal.pData, tagVal.nData);
|
||||||
colDataAppend(pColInfo, i, tmp, false);
|
colDataSetVal(pColInfo, i, tmp, false);
|
||||||
#if TAG_FILTER_DEBUG
|
#if TAG_FILTER_DEBUG
|
||||||
qDebug("tagfilter varch:%s", tmp + 2);
|
qDebug("tagfilter varch:%s", tmp + 2);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfo, i, (const char*)&tagVal.i64, false);
|
colDataSetVal(pColInfo, i, (const char*)&tagVal.i64, false);
|
||||||
#if TAG_FILTER_DEBUG
|
#if TAG_FILTER_DEBUG
|
||||||
if (pColInfo->info.type == TSDB_DATA_TYPE_INT) {
|
if (pColInfo->info.type == TSDB_DATA_TYPE_INT) {
|
||||||
qDebug("tagfilter int:%d", *(int*)(&tagVal.i64));
|
qDebug("tagfilter int:%d", *(int*)(&tagVal.i64));
|
||||||
|
@ -1688,7 +1688,7 @@ static void getInitialStartTimeWindow(SInterval* pInterval, TSKEY ts, STimeWindo
|
||||||
int64_t key = w->skey;
|
int64_t key = w->skey;
|
||||||
while (key < ts) { // moving towards end
|
while (key < ts) { // moving towards end
|
||||||
key = taosTimeAdd(key, pInterval->sliding, pInterval->slidingUnit, pInterval->precision);
|
key = taosTimeAdd(key, pInterval->sliding, pInterval->slidingUnit, pInterval->precision);
|
||||||
if (key >= ts) {
|
if (key > ts) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -320,13 +320,13 @@ void initExecTimeWindowInfo(SColumnInfoData* pColData, STimeWindow* pQueryWindow
|
||||||
pColData->info.bytes = sizeof(int64_t);
|
pColData->info.bytes = sizeof(int64_t);
|
||||||
|
|
||||||
colInfoDataEnsureCapacity(pColData, 5, false);
|
colInfoDataEnsureCapacity(pColData, 5, false);
|
||||||
colDataAppendInt64(pColData, 0, &pQueryWindow->skey);
|
colDataSetInt64(pColData, 0, &pQueryWindow->skey);
|
||||||
colDataAppendInt64(pColData, 1, &pQueryWindow->ekey);
|
colDataSetInt64(pColData, 1, &pQueryWindow->ekey);
|
||||||
|
|
||||||
int64_t interval = 0;
|
int64_t interval = 0;
|
||||||
colDataAppendInt64(pColData, 2, &interval); // this value may be variable in case of 'n' and 'y'.
|
colDataSetInt64(pColData, 2, &interval); // this value may be variable in case of 'n' and 'y'.
|
||||||
colDataAppendInt64(pColData, 3, &pQueryWindow->skey);
|
colDataSetInt64(pColData, 3, &pQueryWindow->skey);
|
||||||
colDataAppendInt64(pColData, 4, &pQueryWindow->ekey);
|
colDataSetInt64(pColData, 4, &pQueryWindow->ekey);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -437,18 +437,18 @@ static int32_t doCreateConstantValColumnInfo(SInputColumnInfoData* pInput, SFunc
|
||||||
if (type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT) {
|
if (type == TSDB_DATA_TYPE_BIGINT || type == TSDB_DATA_TYPE_UBIGINT) {
|
||||||
int64_t v = pFuncParam->param.i;
|
int64_t v = pFuncParam->param.i;
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
colDataAppendInt64(pColInfo, i, &v);
|
colDataSetInt64(pColInfo, i, &v);
|
||||||
}
|
}
|
||||||
} else if (type == TSDB_DATA_TYPE_DOUBLE) {
|
} else if (type == TSDB_DATA_TYPE_DOUBLE) {
|
||||||
double v = pFuncParam->param.d;
|
double v = pFuncParam->param.d;
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
colDataAppendDouble(pColInfo, i, &v);
|
colDataSetDouble(pColInfo, i, &v);
|
||||||
}
|
}
|
||||||
} else if (type == TSDB_DATA_TYPE_VARCHAR) {
|
} else if (type == TSDB_DATA_TYPE_VARCHAR) {
|
||||||
char* tmp = taosMemoryMalloc(pFuncParam->param.nLen + VARSTR_HEADER_SIZE);
|
char* tmp = taosMemoryMalloc(pFuncParam->param.nLen + VARSTR_HEADER_SIZE);
|
||||||
STR_WITH_SIZE_TO_VARSTR(tmp, pFuncParam->param.pz, pFuncParam->param.nLen);
|
STR_WITH_SIZE_TO_VARSTR(tmp, pFuncParam->param.pz, pFuncParam->param.nLen);
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
colDataAppend(pColInfo, i, tmp, false);
|
colDataSetVal(pColInfo, i, tmp, false);
|
||||||
}
|
}
|
||||||
taosMemoryFree(tmp);
|
taosMemoryFree(tmp);
|
||||||
}
|
}
|
||||||
|
@ -906,7 +906,7 @@ void extractQualifiedTupleByFilterResult(SSDataBlock* pBlock, const SColumnInfoD
|
||||||
colDataSetNull_var(pDst, numOfRows);
|
colDataSetNull_var(pDst, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
char* p1 = colDataGetVarData(pDst, j);
|
char* p1 = colDataGetVarData(pDst, j);
|
||||||
colDataAppend(pDst, numOfRows, p1, false);
|
colDataSetVal(pDst, numOfRows, p1, false);
|
||||||
}
|
}
|
||||||
numOfRows += 1;
|
numOfRows += 1;
|
||||||
j += 1;
|
j += 1;
|
||||||
|
@ -1099,7 +1099,7 @@ static void doCopyResultToDataBlock(SExprInfo* pExprInfo, int32_t numOfExprs, SR
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
||||||
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
||||||
colDataAppend(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
colDataSetVal(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2655,7 +2655,7 @@ int32_t buildDataBlockFromGroupRes(SOperatorInfo* pOperator, SStreamState* pStat
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
||||||
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
||||||
colDataAppend(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
colDataSetVal(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2748,7 +2748,7 @@ int32_t buildSessionResultDataBlock(SOperatorInfo* pOperator, SStreamState* pSta
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
char* in = GET_ROWCELL_INTERBUF(pCtx[j].resultInfo);
|
||||||
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
for (int32_t k = 0; k < pRow->numOfRows; ++k) {
|
||||||
colDataAppend(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
colDataSetVal(pColInfoData, pBlock->info.rows + k, in, pCtx[j].resultInfo->isNullRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -409,7 +409,7 @@ TSKEY getPrevWindowTs(TSKEY ts, SInterval* pInterval) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void setRowCell(SColumnInfoData* pCol, int32_t rowId, const SResultCellData* pCell) {
|
void setRowCell(SColumnInfoData* pCol, int32_t rowId, const SResultCellData* pCell) {
|
||||||
colDataAppend(pCol, rowId, pCell->pData, pCell->isNull);
|
colDataSetVal(pCol, rowId, pCell->pData, pCell->isNull);
|
||||||
}
|
}
|
||||||
|
|
||||||
SResultCellData* getResultCell(SResultRowData* pRaw, int32_t index) {
|
SResultCellData* getResultCell(SResultRowData* pRaw, int32_t index) {
|
||||||
|
@ -903,7 +903,7 @@ static void doStreamFillLinear(SStreamFillSupporter* pFillSup, SStreamFillInfo*
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (IS_VAR_DATA_TYPE(type) || type == TSDB_DATA_TYPE_BOOL || pCell->isNull) {
|
if (IS_VAR_DATA_TYPE(type) || type == TSDB_DATA_TYPE_BOOL || pCell->isNull) {
|
||||||
colDataAppendNULL(pColData, index);
|
colDataSetNULL(pColData, index);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
double* pDelta = taosArrayGet(pFillInfo->pLinearInfo->pDeltaVal, slotId);
|
double* pDelta = taosArrayGet(pFillInfo->pLinearInfo->pDeltaVal, slotId);
|
||||||
|
@ -912,7 +912,7 @@ static void doStreamFillLinear(SStreamFillSupporter* pFillSup, SStreamFillInfo*
|
||||||
vCell += (*pDelta) * pFillInfo->pLinearInfo->winIndex;
|
vCell += (*pDelta) * pFillInfo->pLinearInfo->winIndex;
|
||||||
int64_t result = 0;
|
int64_t result = 0;
|
||||||
SET_TYPED_DATA(&result, pCell->type, vCell);
|
SET_TYPED_DATA(&result, pCell->type, vCell);
|
||||||
colDataAppend(pColData, index, (const char*)&result, false);
|
colDataSetVal(pColData, index, (const char*)&result, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pFillInfo->current = taosTimeAdd(pFillInfo->current, pFillSup->interval.sliding, pFillSup->interval.slidingUnit,
|
pFillInfo->current = taosTimeAdd(pFillInfo->current, pFillSup->interval.sliding, pFillSup->interval.slidingUnit,
|
||||||
|
@ -1031,23 +1031,23 @@ static void buildDeleteRange(SOperatorInfo* pOp, TSKEY start, TSKEY end, uint64_
|
||||||
SColumnInfoData* pCalStartCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalStartCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
||||||
SColumnInfoData* pCalEndCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalEndCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
||||||
SColumnInfoData* pTbNameCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
SColumnInfoData* pTbNameCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
||||||
colDataAppend(pStartCol, pBlock->info.rows, (const char*)&start, false);
|
colDataSetVal(pStartCol, pBlock->info.rows, (const char*)&start, false);
|
||||||
colDataAppend(pEndCol, pBlock->info.rows, (const char*)&end, false);
|
colDataSetVal(pEndCol, pBlock->info.rows, (const char*)&end, false);
|
||||||
colDataAppendNULL(pUidCol, pBlock->info.rows);
|
colDataSetNULL(pUidCol, pBlock->info.rows);
|
||||||
colDataAppend(pGroupCol, pBlock->info.rows, (const char*)&groupId, false);
|
colDataSetVal(pGroupCol, pBlock->info.rows, (const char*)&groupId, false);
|
||||||
colDataAppendNULL(pCalStartCol, pBlock->info.rows);
|
colDataSetNULL(pCalStartCol, pBlock->info.rows);
|
||||||
colDataAppendNULL(pCalEndCol, pBlock->info.rows);
|
colDataSetNULL(pCalEndCol, pBlock->info.rows);
|
||||||
|
|
||||||
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
||||||
|
|
||||||
void* tbname = NULL;
|
void* tbname = NULL;
|
||||||
streamStateGetParName(pOp->pTaskInfo->streamInfo.pState, groupId, &tbname);
|
streamStateGetParName(pOp->pTaskInfo->streamInfo.pState, groupId, &tbname);
|
||||||
if (tbname == NULL) {
|
if (tbname == NULL) {
|
||||||
colDataAppendNULL(pTableCol, pBlock->info.rows);
|
colDataSetNULL(pTableCol, pBlock->info.rows);
|
||||||
} else {
|
} else {
|
||||||
char parTbName[VARSTR_HEADER_SIZE + TSDB_TABLE_NAME_LEN];
|
char parTbName[VARSTR_HEADER_SIZE + TSDB_TABLE_NAME_LEN];
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(parTbName, tbname, sizeof(parTbName));
|
STR_WITH_MAXSIZE_TO_VARSTR(parTbName, tbname, sizeof(parTbName));
|
||||||
colDataAppend(pTableCol, pBlock->info.rows, (const char*)parTbName, false);
|
colDataSetVal(pTableCol, pBlock->info.rows, (const char*)parTbName, false);
|
||||||
tdbFree(tbname);
|
tdbFree(tbname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -954,7 +954,7 @@ static SSDataBlock* buildStreamPartitionResult(SOperatorInfo* pOperator) {
|
||||||
SColumnInfoData* pDestCol = taosArrayGet(pDest->pDataBlock, j);
|
SColumnInfoData* pDestCol = taosArrayGet(pDest->pDataBlock, j);
|
||||||
bool isNull = colDataIsNull(pSrcCol, pSrc->info.rows, rowIndex, NULL);
|
bool isNull = colDataIsNull(pSrcCol, pSrc->info.rows, rowIndex, NULL);
|
||||||
char* pSrcData = colDataGetData(pSrcCol, rowIndex);
|
char* pSrcData = colDataGetData(pSrcCol, rowIndex);
|
||||||
colDataAppend(pDestCol, pDest->info.rows, pSrcData, isNull);
|
colDataSetVal(pDestCol, pDest->info.rows, pSrcData, isNull);
|
||||||
}
|
}
|
||||||
pDest->info.rows++;
|
pDest->info.rows++;
|
||||||
if (pInfo->tbnameCalSup.numOfExprs > 0 && i == 0) {
|
if (pInfo->tbnameCalSup.numOfExprs > 0 && i == 0) {
|
||||||
|
|
|
@ -196,10 +196,10 @@ static void mergeJoinJoinLeftRight(struct SOperatorInfo* pOperator, SSDataBlock*
|
||||||
}
|
}
|
||||||
|
|
||||||
if (colDataIsNull_s(pSrc, rowIndex)) {
|
if (colDataIsNull_s(pSrc, rowIndex)) {
|
||||||
colDataAppendNULL(pDst, currRow);
|
colDataSetNULL(pDst, currRow);
|
||||||
} else {
|
} else {
|
||||||
char* p = colDataGetData(pSrc, rowIndex);
|
char* p = colDataGetData(pSrc, rowIndex);
|
||||||
colDataAppend(pDst, currRow, p, false);
|
colDataSetVal(pDst, currRow, p, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -623,9 +623,9 @@ SSDataBlock* doGenerateSourceData(SOperatorInfo* pOperator) {
|
||||||
|
|
||||||
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
||||||
if (TSDB_DATA_TYPE_NULL == type) {
|
if (TSDB_DATA_TYPE_NULL == type) {
|
||||||
colDataAppendNNULL(pColInfoData, 0, 1);
|
colDataSetNNULL(pColInfoData, 0, 1);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfoData, 0, taosVariantGet(&pExpr[k].base.pParam[0].param, type), false);
|
colDataSetVal(pColInfoData, 0, taosVariantGet(&pExpr[k].base.pParam[0].param, type), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -665,9 +665,9 @@ int32_t projectApplyFunctions(SExprInfo* pExpr, SSDataBlock* pResult, SSDataBloc
|
||||||
|
|
||||||
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
||||||
if (TSDB_DATA_TYPE_NULL == type) {
|
if (TSDB_DATA_TYPE_NULL == type) {
|
||||||
colDataAppendNNULL(pColInfoData, 0, 1);
|
colDataSetNNULL(pColInfoData, 0, 1);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pColInfoData, 0, taosVariantGet(&pExpr[k].base.pParam[0].param, type), false);
|
colDataSetVal(pColInfoData, 0, taosVariantGet(&pExpr[k].base.pParam[0].param, type), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -728,11 +728,11 @@ int32_t projectApplyFunctions(SExprInfo* pExpr, SSDataBlock* pResult, SSDataBloc
|
||||||
|
|
||||||
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
int32_t type = pExpr[k].base.pParam[0].param.nType;
|
||||||
if (TSDB_DATA_TYPE_NULL == type) {
|
if (TSDB_DATA_TYPE_NULL == type) {
|
||||||
colDataAppendNNULL(pColInfoData, offset, pSrcBlock->info.rows);
|
colDataSetNNULL(pColInfoData, offset, pSrcBlock->info.rows);
|
||||||
} else {
|
} else {
|
||||||
char* p = taosVariantGet(&pExpr[k].base.pParam[0].param, type);
|
char* p = taosVariantGet(&pExpr[k].base.pParam[0].param, type);
|
||||||
for (int32_t i = 0; i < pSrcBlock->info.rows; ++i) {
|
for (int32_t i = 0; i < pSrcBlock->info.rows; ++i) {
|
||||||
colDataAppend(pColInfoData, i + offset, p, false);
|
colDataSetVal(pColInfoData, i + offset, p, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -800,10 +800,10 @@ int32_t projectApplyFunctions(SExprInfo* pExpr, SSDataBlock* pResult, SSDataBloc
|
||||||
for (int32_t f = 0; f < pSrcBlock->info.rows; ++f) {
|
for (int32_t f = 0; f < pSrcBlock->info.rows; ++f) {
|
||||||
bool isNull = colDataIsNull_s(pInput, f);
|
bool isNull = colDataIsNull_s(pInput, f);
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
colDataAppendNULL(pOutput, pResult->info.rows + f);
|
colDataSetNULL(pOutput, pResult->info.rows + f);
|
||||||
} else {
|
} else {
|
||||||
char* data = colDataGetData(pInput, f);
|
char* data = colDataGetData(pInput, f);
|
||||||
colDataAppend(pOutput, pResult->info.rows + f, data, isNull);
|
colDataSetVal(pOutput, pResult->info.rows + f, data, isNull);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -267,7 +267,7 @@ bool applyLimitOffset(SLimitInfo* pLimitInfo, SSDataBlock* pBlock, SExecTaskInfo
|
||||||
qDebug("current block ignore due to offset, current:%" PRId64 ", %s", pLimitInfo->remainOffset, id);
|
qDebug("current block ignore due to offset, current:%" PRId64 ", %s", pLimitInfo->remainOffset, id);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
blockDataTrimFirstNRows(pBlock, pLimitInfo->remainOffset);
|
blockDataTrimFirstRows(pBlock, pLimitInfo->remainOffset);
|
||||||
pLimitInfo->remainOffset = 0;
|
pLimitInfo->remainOffset = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -452,7 +452,7 @@ static void doSetNullValue(SSDataBlock* pBlock, const SExprInfo* pExpr, int32_t
|
||||||
int32_t dstSlotId = pExpr[j].base.resSchema.slotId;
|
int32_t dstSlotId = pExpr[j].base.resSchema.slotId;
|
||||||
|
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
SColumnInfoData* pColInfoData = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
||||||
colDataAppendNNULL(pColInfoData, 0, pBlock->info.rows);
|
colDataSetNNULL(pColInfoData, 0, pBlock->info.rows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -577,15 +577,15 @@ int32_t addTagPseudoColumnData(SReadHandle* pHandle, const SExprInfo* pExpr, int
|
||||||
|
|
||||||
bool isNullVal = (data == NULL) || (pColInfoData->info.type == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(data));
|
bool isNullVal = (data == NULL) || (pColInfoData->info.type == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(data));
|
||||||
if (isNullVal) {
|
if (isNullVal) {
|
||||||
colDataAppendNNULL(pColInfoData, 0, pBlock->info.rows);
|
colDataSetNNULL(pColInfoData, 0, pBlock->info.rows);
|
||||||
} else if (pColInfoData->info.type != TSDB_DATA_TYPE_JSON) {
|
} else if (pColInfoData->info.type != TSDB_DATA_TYPE_JSON) {
|
||||||
colDataAppendNItems(pColInfoData, 0, data, pBlock->info.rows);
|
colDataSetNItems(pColInfoData, 0, data, pBlock->info.rows);
|
||||||
if (IS_VAR_DATA_TYPE(((const STagVal*)p)->type)) {
|
if (IS_VAR_DATA_TYPE(((const STagVal*)p)->type)) {
|
||||||
taosMemoryFree(data);
|
taosMemoryFree(data);
|
||||||
}
|
}
|
||||||
} else { // todo opt for json tag
|
} else { // todo opt for json tag
|
||||||
for (int32_t i = 0; i < pBlock->info.rows; ++i) {
|
for (int32_t i = 0; i < pBlock->info.rows; ++i) {
|
||||||
colDataAppend(pColInfoData, i, data, false);
|
colDataSetVal(pColInfoData, i, data, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -611,7 +611,7 @@ void setTbNameColData(const SSDataBlock* pBlock, SColumnInfoData* pColInfoData,
|
||||||
SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_VARCHAR, len, 1);
|
SColumnInfoData infoData = createColumnInfoData(TSDB_DATA_TYPE_VARCHAR, len, 1);
|
||||||
|
|
||||||
colInfoDataEnsureCapacity(&infoData, 1, false);
|
colInfoDataEnsureCapacity(&infoData, 1, false);
|
||||||
colDataAppend(&infoData, 0, buf, false);
|
colDataSetVal(&infoData, 0, buf, false);
|
||||||
|
|
||||||
SScalarParam srcParam = {.numOfRows = pBlock->info.rows, .columnData = &infoData};
|
SScalarParam srcParam = {.numOfRows = pBlock->info.rows, .columnData = &infoData};
|
||||||
SScalarParam param = {.columnData = pColInfoData};
|
SScalarParam param = {.columnData = pColInfoData};
|
||||||
|
@ -1156,7 +1156,7 @@ static SSDataBlock* doRangeScan(SStreamScanInfo* pInfo, SSDataBlock* pSDB, int32
|
||||||
SColumnInfoData* pDestCol = taosArrayGet(pResult->pDataBlock, j);
|
SColumnInfoData* pDestCol = taosArrayGet(pResult->pDataBlock, j);
|
||||||
bool isNull = colDataIsNull(pSrcCol, tmpBlock->info.rows, i, NULL);
|
bool isNull = colDataIsNull(pSrcCol, tmpBlock->info.rows, i, NULL);
|
||||||
char* pSrcData = colDataGetData(pSrcCol, i);
|
char* pSrcData = colDataGetData(pSrcCol, i);
|
||||||
colDataAppend(pDestCol, pResult->info.rows, pSrcData, isNull);
|
colDataSetVal(pDestCol, pResult->info.rows, pSrcData, isNull);
|
||||||
}
|
}
|
||||||
pResult->info.rows++;
|
pResult->info.rows++;
|
||||||
}
|
}
|
||||||
|
@ -1232,13 +1232,13 @@ static int32_t generateSessionScanRange(SStreamScanInfo* pInfo, SSDataBlock* pSr
|
||||||
qError("generate session scan range failed. rang start:%" PRIx64 ", end:%" PRIx64 , startData[i], endData[i]);
|
qError("generate session scan range failed. rang start:%" PRIx64 ", end:%" PRIx64 , startData[i], endData[i]);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
colDataAppend(pDestStartCol, i, (const char*)&startWin.win.skey, false);
|
colDataSetVal(pDestStartCol, i, (const char*)&startWin.win.skey, false);
|
||||||
colDataAppend(pDestEndCol, i, (const char*)&endWin.win.ekey, false);
|
colDataSetVal(pDestEndCol, i, (const char*)&endWin.win.ekey, false);
|
||||||
|
|
||||||
colDataAppendNULL(pDestUidCol, i);
|
colDataSetNULL(pDestUidCol, i);
|
||||||
colDataAppend(pDestGpCol, i, (const char*)&groupId, false);
|
colDataSetVal(pDestGpCol, i, (const char*)&groupId, false);
|
||||||
colDataAppendNULL(pDestCalStartTsCol, i);
|
colDataSetNULL(pDestCalStartTsCol, i);
|
||||||
colDataAppendNULL(pDestCalEndTsCol, i);
|
colDataSetNULL(pDestCalEndTsCol, i);
|
||||||
pDestBlock->info.rows++;
|
pDestBlock->info.rows++;
|
||||||
}
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1307,15 +1307,15 @@ static int32_t generateIntervalScanRange(SStreamScanInfo* pInfo, SSDataBlock* pS
|
||||||
groupId = getGroupIdByData(pInfo, srcUid, srcStartTsCol[i], version);
|
groupId = getGroupIdByData(pInfo, srcUid, srcStartTsCol[i], version);
|
||||||
}
|
}
|
||||||
TSKEY calStartTs = srcStartTsCol[i];
|
TSKEY calStartTs = srcStartTsCol[i];
|
||||||
colDataAppend(pCalStartTsCol, pDestBlock->info.rows, (const char*)(&calStartTs), false);
|
colDataSetVal(pCalStartTsCol, pDestBlock->info.rows, (const char*)(&calStartTs), false);
|
||||||
STimeWindow win = getSlidingWindow(srcStartTsCol, srcEndTsCol, srcGp, &pInfo->interval, &pSrcBlock->info, &i,
|
STimeWindow win = getSlidingWindow(srcStartTsCol, srcEndTsCol, srcGp, &pInfo->interval, &pSrcBlock->info, &i,
|
||||||
pInfo->partitionSup.needCalc);
|
pInfo->partitionSup.needCalc);
|
||||||
TSKEY calEndTs = srcStartTsCol[i - 1];
|
TSKEY calEndTs = srcStartTsCol[i - 1];
|
||||||
colDataAppend(pCalEndTsCol, pDestBlock->info.rows, (const char*)(&calEndTs), false);
|
colDataSetVal(pCalEndTsCol, pDestBlock->info.rows, (const char*)(&calEndTs), false);
|
||||||
colDataAppend(pDeUidCol, pDestBlock->info.rows, (const char*)(&srcUid), false);
|
colDataSetVal(pDeUidCol, pDestBlock->info.rows, (const char*)(&srcUid), false);
|
||||||
colDataAppend(pStartTsCol, pDestBlock->info.rows, (const char*)(&win.skey), false);
|
colDataSetVal(pStartTsCol, pDestBlock->info.rows, (const char*)(&win.skey), false);
|
||||||
colDataAppend(pEndTsCol, pDestBlock->info.rows, (const char*)(&win.ekey), false);
|
colDataSetVal(pEndTsCol, pDestBlock->info.rows, (const char*)(&win.ekey), false);
|
||||||
colDataAppend(pGpCol, pDestBlock->info.rows, (const char*)(&groupId), false);
|
colDataSetVal(pGpCol, pDestBlock->info.rows, (const char*)(&groupId), false);
|
||||||
pDestBlock->info.rows++;
|
pDestBlock->info.rows++;
|
||||||
}
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1436,13 +1436,13 @@ void appendOneRowToStreamSpecialBlock(SSDataBlock* pBlock, TSKEY* pStartTs, TSKE
|
||||||
SColumnInfoData* pCalStartCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalStartCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
||||||
SColumnInfoData* pCalEndCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalEndCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
||||||
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
||||||
colDataAppend(pStartTsCol, pBlock->info.rows, (const char*)pStartTs, false);
|
colDataSetVal(pStartTsCol, pBlock->info.rows, (const char*)pStartTs, false);
|
||||||
colDataAppend(pEndTsCol, pBlock->info.rows, (const char*)pEndTs, false);
|
colDataSetVal(pEndTsCol, pBlock->info.rows, (const char*)pEndTs, false);
|
||||||
colDataAppend(pUidCol, pBlock->info.rows, (const char*)pUid, false);
|
colDataSetVal(pUidCol, pBlock->info.rows, (const char*)pUid, false);
|
||||||
colDataAppend(pGpCol, pBlock->info.rows, (const char*)pGp, false);
|
colDataSetVal(pGpCol, pBlock->info.rows, (const char*)pGp, false);
|
||||||
colDataAppend(pCalStartCol, pBlock->info.rows, (const char*)pStartTs, false);
|
colDataSetVal(pCalStartCol, pBlock->info.rows, (const char*)pStartTs, false);
|
||||||
colDataAppend(pCalEndCol, pBlock->info.rows, (const char*)pEndTs, false);
|
colDataSetVal(pCalEndCol, pBlock->info.rows, (const char*)pEndTs, false);
|
||||||
colDataAppend(pTableCol, pBlock->info.rows, (const char*)pTbName, pTbName == NULL);
|
colDataSetVal(pTableCol, pBlock->info.rows, (const char*)pTbName, pTbName == NULL);
|
||||||
pBlock->info.rows++;
|
pBlock->info.rows++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1529,7 +1529,7 @@ static int32_t setBlockIntoRes(SStreamScanInfo* pInfo, const SSDataBlock* pBlock
|
||||||
// the required column does not exists in submit block, let's set it to be all null value
|
// the required column does not exists in submit block, let's set it to be all null value
|
||||||
if (!colExists) {
|
if (!colExists) {
|
||||||
SColumnInfoData* pDst = taosArrayGet(pInfo->pRes->pDataBlock, pColMatchInfo->dstSlotId);
|
SColumnInfoData* pDst = taosArrayGet(pInfo->pRes->pDataBlock, pColMatchInfo->dstSlotId);
|
||||||
colDataAppendNNULL(pDst, 0, pBlockInfo->rows);
|
colDataSetNNULL(pDst, 0, pBlockInfo->rows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1691,13 +1691,13 @@ static int32_t filterDelBlockByUid(SSDataBlock* pDst, const SSDataBlock* pSrc, S
|
||||||
int32_t j = 0;
|
int32_t j = 0;
|
||||||
for (int32_t i = 0; i < rows; i++) {
|
for (int32_t i = 0; i < rows; i++) {
|
||||||
if (taosHashGet(pReader->tbIdHash, &uidCol[i], sizeof(uint64_t))) {
|
if (taosHashGet(pReader->tbIdHash, &uidCol[i], sizeof(uint64_t))) {
|
||||||
colDataAppend(pDstStartCol, j, (const char*)&startCol[i], false);
|
colDataSetVal(pDstStartCol, j, (const char*)&startCol[i], false);
|
||||||
colDataAppend(pDstEndCol, j, (const char*)&endCol[i], false);
|
colDataSetVal(pDstEndCol, j, (const char*)&endCol[i], false);
|
||||||
colDataAppend(pDstUidCol, j, (const char*)&uidCol[i], false);
|
colDataSetVal(pDstUidCol, j, (const char*)&uidCol[i], false);
|
||||||
|
|
||||||
colDataAppendNULL(taosArrayGet(pDst->pDataBlock, GROUPID_COLUMN_INDEX), j);
|
colDataSetNULL(taosArrayGet(pDst->pDataBlock, GROUPID_COLUMN_INDEX), j);
|
||||||
colDataAppendNULL(taosArrayGet(pDst->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX), j);
|
colDataSetNULL(taosArrayGet(pDst->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX), j);
|
||||||
colDataAppendNULL(taosArrayGet(pDst->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX), j);
|
colDataSetNULL(taosArrayGet(pDst->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX), j);
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1721,7 +1721,7 @@ static void setBlockGroupIdByUid(SStreamScanInfo* pInfo, SSDataBlock* pBlock) {
|
||||||
if (!pInfo->partitionSup.needCalc) {
|
if (!pInfo->partitionSup.needCalc) {
|
||||||
for (int32_t i = 0; i < rows; i++) {
|
for (int32_t i = 0; i < rows; i++) {
|
||||||
uint64_t groupId = getGroupIdByUid(pInfo, uidCol[i]);
|
uint64_t groupId = getGroupIdByUid(pInfo, uidCol[i]);
|
||||||
colDataAppend(pGpCol, i, (const char*)&groupId, false);
|
colDataSetVal(pGpCol, i, (const char*)&groupId, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2432,7 +2432,7 @@ static SSDataBlock* doTagScan(SOperatorInfo* pOperator) {
|
||||||
// refactor later
|
// refactor later
|
||||||
if (fmIsScanPseudoColumnFunc(pExprInfo[j].pExpr->_function.functionId)) {
|
if (fmIsScanPseudoColumnFunc(pExprInfo[j].pExpr->_function.functionId)) {
|
||||||
STR_TO_VARSTR(str, mr.me.name);
|
STR_TO_VARSTR(str, mr.me.name);
|
||||||
colDataAppend(pDst, count, str, false);
|
colDataSetVal(pDst, count, str, false);
|
||||||
} else { // it is a tag value
|
} else { // it is a tag value
|
||||||
STagVal val = {0};
|
STagVal val = {0};
|
||||||
val.cid = pExprInfo[j].base.pParam[0].pCol->colId;
|
val.cid = pExprInfo[j].base.pParam[0].pCol->colId;
|
||||||
|
@ -2444,7 +2444,7 @@ static SSDataBlock* doTagScan(SOperatorInfo* pOperator) {
|
||||||
} else {
|
} else {
|
||||||
data = (char*)p;
|
data = (char*)p;
|
||||||
}
|
}
|
||||||
colDataAppend(pDst, count, data,
|
colDataSetVal(pDst, count, data,
|
||||||
(data == NULL) || (pDst->info.type == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(data)));
|
(data == NULL) || (pDst->info.type == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(data)));
|
||||||
|
|
||||||
if (pDst->info.type != TSDB_DATA_TYPE_JSON && p != NULL && IS_VAR_DATA_TYPE(((const STagVal*)p)->type) &&
|
if (pDst->info.type != TSDB_DATA_TYPE_JSON && p != NULL && IS_VAR_DATA_TYPE(((const STagVal*)p)->type) &&
|
||||||
|
@ -3098,7 +3098,7 @@ void fillTableCountScanDataBlock(STableCountScanSupp* pSupp, char* dbName, char*
|
||||||
tstrncpy(varDataVal(varDbName), dbName, TSDB_DB_NAME_LEN);
|
tstrncpy(varDataVal(varDbName), dbName, TSDB_DB_NAME_LEN);
|
||||||
|
|
||||||
varDataSetLen(varDbName, strlen(dbName));
|
varDataSetLen(varDbName, strlen(dbName));
|
||||||
colDataAppend(colInfoData, 0, varDbName, false);
|
colDataSetVal(colInfoData, 0, varDbName, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSupp->stbNameSlotId != -1) {
|
if (pSupp->stbNameSlotId != -1) {
|
||||||
|
@ -3107,15 +3107,15 @@ void fillTableCountScanDataBlock(STableCountScanSupp* pSupp, char* dbName, char*
|
||||||
char varStbName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char varStbName[TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
strncpy(varDataVal(varStbName), stbName, TSDB_TABLE_NAME_LEN);
|
strncpy(varDataVal(varStbName), stbName, TSDB_TABLE_NAME_LEN);
|
||||||
varDataSetLen(varStbName, strlen(stbName));
|
varDataSetLen(varStbName, strlen(stbName));
|
||||||
colDataAppend(colInfoData, 0, varStbName, false);
|
colDataSetVal(colInfoData, 0, varStbName, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(colInfoData, 0);
|
colDataSetNULL(colInfoData, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSupp->tbCountSlotId != -1) {
|
if (pSupp->tbCountSlotId != -1) {
|
||||||
SColumnInfoData* colInfoData = taosArrayGet(pRes->pDataBlock, pSupp->tbCountSlotId);
|
SColumnInfoData* colInfoData = taosArrayGet(pRes->pDataBlock, pSupp->tbCountSlotId);
|
||||||
colDataAppend(colInfoData, 0, (char*)&count, false);
|
colDataSetVal(colInfoData, 0, (char*)&count, false);
|
||||||
}
|
}
|
||||||
pRes->info.rows = 1;
|
pRes->info.rows = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,11 +101,11 @@ void appendOneRowToDataBlock(SSDataBlock* pBlock, STupleHandle* pTupleHandle) {
|
||||||
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, i);
|
SColumnInfoData* pColInfo = taosArrayGet(pBlock->pDataBlock, i);
|
||||||
bool isNull = tsortIsNullVal(pTupleHandle, i);
|
bool isNull = tsortIsNullVal(pTupleHandle, i);
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
colDataAppendNULL(pColInfo, pBlock->info.rows);
|
colDataSetNULL(pColInfo, pBlock->info.rows);
|
||||||
} else {
|
} else {
|
||||||
char* pData = tsortGetValue(pTupleHandle, i);
|
char* pData = tsortGetValue(pTupleHandle, i);
|
||||||
if (pData != NULL) {
|
if (pData != NULL) {
|
||||||
colDataAppend(pColInfo, pBlock->info.rows, pData, false);
|
colDataSetVal(pColInfo, pBlock->info.rows, pData, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -655,21 +655,21 @@ static int32_t sysTableUserTagsFillOneTableTags(const SSysTableScanInfo* pInfo,
|
||||||
|
|
||||||
// table name
|
// table name
|
||||||
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 0);
|
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 0);
|
||||||
colDataAppend(pColInfoData, numOfRows, tableName, false);
|
colDataSetVal(pColInfoData, numOfRows, tableName, false);
|
||||||
|
|
||||||
// database name
|
// database name
|
||||||
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 1);
|
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 1);
|
||||||
colDataAppend(pColInfoData, numOfRows, dbname, false);
|
colDataSetVal(pColInfoData, numOfRows, dbname, false);
|
||||||
|
|
||||||
// super table name
|
// super table name
|
||||||
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 2);
|
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 2);
|
||||||
colDataAppend(pColInfoData, numOfRows, stableName, false);
|
colDataSetVal(pColInfoData, numOfRows, stableName, false);
|
||||||
|
|
||||||
// tag name
|
// tag name
|
||||||
char tagName[TSDB_COL_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
char tagName[TSDB_COL_NAME_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(tagName, (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].name);
|
STR_TO_VARSTR(tagName, (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].name);
|
||||||
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 3);
|
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, tagName, false);
|
colDataSetVal(pColInfoData, numOfRows, tagName, false);
|
||||||
|
|
||||||
// tag type
|
// tag type
|
||||||
int8_t tagType = (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].type;
|
int8_t tagType = (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].type;
|
||||||
|
@ -685,7 +685,7 @@ static int32_t sysTableUserTagsFillOneTableTags(const SSysTableScanInfo* pInfo,
|
||||||
(int32_t)(((*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].bytes - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE));
|
(int32_t)(((*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].bytes - VARSTR_HEADER_SIZE) / TSDB_NCHAR_SIZE));
|
||||||
}
|
}
|
||||||
varDataSetLen(tagTypeStr, tagTypeLen);
|
varDataSetLen(tagTypeStr, tagTypeLen);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)tagTypeStr, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)tagTypeStr, false);
|
||||||
|
|
||||||
STagVal tagVal = {0};
|
STagVal tagVal = {0};
|
||||||
tagVal.cid = (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].colId;
|
tagVal.cid = (*smrSuperTable).me.stbEntry.schemaTag.pSchema[i].colId;
|
||||||
|
@ -725,7 +725,7 @@ static int32_t sysTableUserTagsFillOneTableTags(const SSysTableScanInfo* pInfo,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 5);
|
pColInfoData = taosArrayGet(dataBlock->pDataBlock, 5);
|
||||||
colDataAppend(pColInfoData, numOfRows, tagVarChar,
|
colDataSetVal(pColInfoData, numOfRows, tagVarChar,
|
||||||
(tagData == NULL) || (tagType == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(tagData)));
|
(tagData == NULL) || (tagType == TSDB_DATA_TYPE_JSON && tTagIsJsonNull(tagData)));
|
||||||
taosMemoryFree(tagVarChar);
|
taosMemoryFree(tagVarChar);
|
||||||
++numOfRows;
|
++numOfRows;
|
||||||
|
@ -773,30 +773,30 @@ int32_t buildDbTableInfoBlock(bool sysInfo, const SSDataBlock* p, const SSysTabl
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
||||||
|
|
||||||
STR_TO_VARSTR(n, pm->name);
|
STR_TO_VARSTR(n, pm->name);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
// database name
|
// database name
|
||||||
STR_TO_VARSTR(n, dbName);
|
STR_TO_VARSTR(n, dbName);
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
// create time
|
// create time
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
|
|
||||||
// number of columns
|
// number of columns
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pm->colNum, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pm->colNum, false);
|
||||||
|
|
||||||
for (int32_t j = 4; j <= 8; ++j) {
|
for (int32_t j = 4; j <= 8; ++j) {
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, j);
|
pColInfoData = taosArrayGet(p->pDataBlock, j);
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "SYSTEM_TABLE");
|
STR_TO_VARSTR(n, "SYSTEM_TABLE");
|
||||||
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
numOfRows += 1;
|
numOfRows += 1;
|
||||||
}
|
}
|
||||||
|
@ -864,22 +864,22 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator) {
|
||||||
|
|
||||||
// table name
|
// table name
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
// database name
|
// database name
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
||||||
colDataAppend(pColInfoData, numOfRows, dbname, false);
|
colDataSetVal(pColInfoData, numOfRows, dbname, false);
|
||||||
|
|
||||||
// vgId
|
// vgId
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&vgId, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&vgId, false);
|
||||||
|
|
||||||
int32_t tableType = mr.me.type;
|
int32_t tableType = mr.me.type;
|
||||||
if (tableType == TSDB_CHILD_TABLE) {
|
if (tableType == TSDB_CHILD_TABLE) {
|
||||||
// create time
|
// create time
|
||||||
int64_t ts = mr.me.ctbEntry.ctime;
|
int64_t ts = mr.me.ctbEntry.ctime;
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&ts, false);
|
||||||
|
|
||||||
SMetaReader mr1 = {0};
|
SMetaReader mr1 = {0};
|
||||||
metaReaderInit(&mr1, pInfo->readHandle.meta, META_READER_NOLOCK);
|
metaReaderInit(&mr1, pInfo->readHandle.meta, META_READER_NOLOCK);
|
||||||
|
@ -894,12 +894,12 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator) {
|
||||||
T_LONG_JMP(pTaskInfo->env, terrno);
|
T_LONG_JMP(pTaskInfo->env, terrno);
|
||||||
}
|
}
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr1.me.stbEntry.schemaRow.nCols, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr1.me.stbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
// super table name
|
// super table name
|
||||||
STR_TO_VARSTR(n, mr1.me.name);
|
STR_TO_VARSTR(n, mr1.me.name);
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
metaReaderClear(&mr1);
|
metaReaderClear(&mr1);
|
||||||
|
|
||||||
// table comment
|
// table comment
|
||||||
|
@ -907,59 +907,59 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator) {
|
||||||
if (mr.me.ctbEntry.commentLen > 0) {
|
if (mr.me.ctbEntry.commentLen > 0) {
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, mr.me.ctbEntry.comment);
|
STR_TO_VARSTR(comment, mr.me.ctbEntry.comment);
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else if (mr.me.ctbEntry.commentLen == 0) {
|
} else if (mr.me.ctbEntry.commentLen == 0) {
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, "");
|
STR_TO_VARSTR(comment, "");
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
// uid
|
// uid
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.uid, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr.me.uid, false);
|
||||||
|
|
||||||
// ttl
|
// ttl
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.ctbEntry.ttlDays, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr.me.ctbEntry.ttlDays, false);
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "CHILD_TABLE");
|
STR_TO_VARSTR(n, "CHILD_TABLE");
|
||||||
|
|
||||||
} else if (tableType == TSDB_NORMAL_TABLE) {
|
} else if (tableType == TSDB_NORMAL_TABLE) {
|
||||||
// create time
|
// create time
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
||||||
|
|
||||||
// number of columns
|
// number of columns
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
// super table name
|
// super table name
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
|
|
||||||
// table comment
|
// table comment
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
||||||
if (mr.me.ntbEntry.commentLen > 0) {
|
if (mr.me.ntbEntry.commentLen > 0) {
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, mr.me.ntbEntry.comment);
|
STR_TO_VARSTR(comment, mr.me.ntbEntry.comment);
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else if (mr.me.ntbEntry.commentLen == 0) {
|
} else if (mr.me.ntbEntry.commentLen == 0) {
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, "");
|
STR_TO_VARSTR(comment, "");
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
// uid
|
// uid
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.uid, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr.me.uid, false);
|
||||||
|
|
||||||
// ttl
|
// ttl
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.ntbEntry.ttlDays, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr.me.ntbEntry.ttlDays, false);
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
||||||
// impl later
|
// impl later
|
||||||
|
@ -968,7 +968,7 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator) {
|
||||||
metaReaderClear(&mr);
|
metaReaderClear(&mr);
|
||||||
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
||||||
p->info.rows = numOfRows;
|
p->info.rows = numOfRows;
|
||||||
|
@ -1042,22 +1042,22 @@ static SSDataBlock* sysTableBuildUserTables(SOperatorInfo* pOperator) {
|
||||||
|
|
||||||
// table name
|
// table name
|
||||||
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
SColumnInfoData* pColInfoData = taosArrayGet(p->pDataBlock, 0);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
// database name
|
// database name
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
pColInfoData = taosArrayGet(p->pDataBlock, 1);
|
||||||
colDataAppend(pColInfoData, numOfRows, dbname, false);
|
colDataSetVal(pColInfoData, numOfRows, dbname, false);
|
||||||
|
|
||||||
// vgId
|
// vgId
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
pColInfoData = taosArrayGet(p->pDataBlock, 6);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&vgId, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&vgId, false);
|
||||||
|
|
||||||
int32_t tableType = pInfo->pCur->mr.me.type;
|
int32_t tableType = pInfo->pCur->mr.me.type;
|
||||||
if (tableType == TSDB_CHILD_TABLE) {
|
if (tableType == TSDB_CHILD_TABLE) {
|
||||||
// create time
|
// create time
|
||||||
int64_t ts = pInfo->pCur->mr.me.ctbEntry.ctime;
|
int64_t ts = pInfo->pCur->mr.me.ctbEntry.ctime;
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&ts, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&ts, false);
|
||||||
|
|
||||||
SMetaReader mr = {0};
|
SMetaReader mr = {0};
|
||||||
metaReaderInit(&mr, pInfo->readHandle.meta, META_READER_NOLOCK);
|
metaReaderInit(&mr, pInfo->readHandle.meta, META_READER_NOLOCK);
|
||||||
|
@ -1075,12 +1075,12 @@ static SSDataBlock* sysTableBuildUserTables(SOperatorInfo* pOperator) {
|
||||||
|
|
||||||
// number of columns
|
// number of columns
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&mr.me.stbEntry.schemaRow.nCols, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&mr.me.stbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
// super table name
|
// super table name
|
||||||
STR_TO_VARSTR(n, mr.me.name);
|
STR_TO_VARSTR(n, mr.me.name);
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
metaReaderClear(&mr);
|
metaReaderClear(&mr);
|
||||||
|
|
||||||
// table comment
|
// table comment
|
||||||
|
@ -1088,64 +1088,64 @@ static SSDataBlock* sysTableBuildUserTables(SOperatorInfo* pOperator) {
|
||||||
if (pInfo->pCur->mr.me.ctbEntry.commentLen > 0) {
|
if (pInfo->pCur->mr.me.ctbEntry.commentLen > 0) {
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ctbEntry.comment);
|
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ctbEntry.comment);
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else if (pInfo->pCur->mr.me.ctbEntry.commentLen == 0) {
|
} else if (pInfo->pCur->mr.me.ctbEntry.commentLen == 0) {
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, "");
|
STR_TO_VARSTR(comment, "");
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
// uid
|
// uid
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
||||||
|
|
||||||
// ttl
|
// ttl
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ctbEntry.ttlDays, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ctbEntry.ttlDays, false);
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "CHILD_TABLE");
|
STR_TO_VARSTR(n, "CHILD_TABLE");
|
||||||
} else if (tableType == TSDB_NORMAL_TABLE) {
|
} else if (tableType == TSDB_NORMAL_TABLE) {
|
||||||
// create time
|
// create time
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
pColInfoData = taosArrayGet(p->pDataBlock, 2);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ctime, false);
|
||||||
|
|
||||||
// number of columns
|
// number of columns
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
pColInfoData = taosArrayGet(p->pDataBlock, 3);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.schemaRow.nCols, false);
|
||||||
|
|
||||||
// super table name
|
// super table name
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
pColInfoData = taosArrayGet(p->pDataBlock, 4);
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
|
|
||||||
// table comment
|
// table comment
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
pColInfoData = taosArrayGet(p->pDataBlock, 8);
|
||||||
if (pInfo->pCur->mr.me.ntbEntry.commentLen > 0) {
|
if (pInfo->pCur->mr.me.ntbEntry.commentLen > 0) {
|
||||||
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
char comment[TSDB_TB_COMMENT_LEN + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ntbEntry.comment);
|
STR_TO_VARSTR(comment, pInfo->pCur->mr.me.ntbEntry.comment);
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else if (pInfo->pCur->mr.me.ntbEntry.commentLen == 0) {
|
} else if (pInfo->pCur->mr.me.ntbEntry.commentLen == 0) {
|
||||||
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
char comment[VARSTR_HEADER_SIZE + VARSTR_HEADER_SIZE] = {0};
|
||||||
STR_TO_VARSTR(comment, "");
|
STR_TO_VARSTR(comment, "");
|
||||||
colDataAppend(pColInfoData, numOfRows, comment, false);
|
colDataSetVal(pColInfoData, numOfRows, comment, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pColInfoData, numOfRows);
|
colDataSetNULL(pColInfoData, numOfRows);
|
||||||
}
|
}
|
||||||
|
|
||||||
// uid
|
// uid
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
pColInfoData = taosArrayGet(p->pDataBlock, 5);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.uid, false);
|
||||||
|
|
||||||
// ttl
|
// ttl
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
pColInfoData = taosArrayGet(p->pDataBlock, 7);
|
||||||
colDataAppend(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ttlDays, false);
|
colDataSetVal(pColInfoData, numOfRows, (char*)&pInfo->pCur->mr.me.ntbEntry.ttlDays, false);
|
||||||
|
|
||||||
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
STR_TO_VARSTR(n, "NORMAL_TABLE");
|
||||||
}
|
}
|
||||||
|
|
||||||
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
pColInfoData = taosArrayGet(p->pDataBlock, 9);
|
||||||
colDataAppend(pColInfoData, numOfRows, n, false);
|
colDataSetVal(pColInfoData, numOfRows, n, false);
|
||||||
|
|
||||||
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
if (++numOfRows >= pOperator->resultInfo.capacity) {
|
||||||
p->info.rows = numOfRows;
|
p->info.rows = numOfRows;
|
||||||
|
@ -1362,7 +1362,7 @@ static void sysTableScanFillTbName(SOperatorInfo* pOperator, const SSysTableScan
|
||||||
memcpy(varDataVal(varTbName), name, strlen(name));
|
memcpy(varDataVal(varTbName), name, strlen(name));
|
||||||
varDataSetLen(varTbName, strlen(name));
|
varDataSetLen(varTbName, strlen(name));
|
||||||
|
|
||||||
colDataAppendNItems(pColumnInfoData, 0, varTbName, pBlock->info.rows);
|
colDataSetNItems(pColumnInfoData, 0, varTbName, pBlock->info.rows);
|
||||||
}
|
}
|
||||||
|
|
||||||
doFilter(pBlock, pOperator->exprSupp.pFilterInfo, NULL);
|
doFilter(pBlock, pOperator->exprSupp.pFilterInfo, NULL);
|
||||||
|
@ -1923,14 +1923,14 @@ static SSDataBlock* doBlockInfoScan(SOperatorInfo* pOperator) {
|
||||||
tSerializeBlockDistInfo(varDataVal(p), len, &blockDistInfo);
|
tSerializeBlockDistInfo(varDataVal(p), len, &blockDistInfo);
|
||||||
varDataSetLen(p, len);
|
varDataSetLen(p, len);
|
||||||
|
|
||||||
colDataAppend(pColInfo, 0, p, false);
|
colDataSetVal(pColInfo, 0, p, false);
|
||||||
taosMemoryFree(p);
|
taosMemoryFree(p);
|
||||||
|
|
||||||
// make the valgrind happy that all memory buffer has been initialized already.
|
// make the valgrind happy that all memory buffer has been initialized already.
|
||||||
if (slotId != 0) {
|
if (slotId != 0) {
|
||||||
SColumnInfoData* p1 = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData* p1 = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
int64_t v = 0;
|
int64_t v = 0;
|
||||||
colDataAppendInt64(p1, 0, &v);
|
colDataSetInt64(p1, 0, &v);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = 1;
|
pBlock->info.rows = 1;
|
||||||
|
|
|
@ -60,7 +60,7 @@ static void setNullRow(SSDataBlock* pBlock, SFillInfo* pFillInfo, int32_t rowInd
|
||||||
setNotFillColumn(pFillInfo, pDstColInfo, rowIndex, i);
|
setNotFillColumn(pFillInfo, pDstColInfo, rowIndex, i);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pDstColInfo, rowIndex);
|
colDataSetNULL(pDstColInfo, rowIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -69,19 +69,19 @@ static void doSetUserSpecifiedValue(SColumnInfoData* pDst, SVariant* pVar, int32
|
||||||
if (pDst->info.type == TSDB_DATA_TYPE_FLOAT) {
|
if (pDst->info.type == TSDB_DATA_TYPE_FLOAT) {
|
||||||
float v = 0;
|
float v = 0;
|
||||||
GET_TYPED_DATA(v, float, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, float, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rowIndex, (char*)&v, false);
|
colDataSetVal(pDst, rowIndex, (char*)&v, false);
|
||||||
} else if (pDst->info.type == TSDB_DATA_TYPE_DOUBLE) {
|
} else if (pDst->info.type == TSDB_DATA_TYPE_DOUBLE) {
|
||||||
double v = 0;
|
double v = 0;
|
||||||
GET_TYPED_DATA(v, double, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, double, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rowIndex, (char*)&v, false);
|
colDataSetVal(pDst, rowIndex, (char*)&v, false);
|
||||||
} else if (IS_SIGNED_NUMERIC_TYPE(pDst->info.type)) {
|
} else if (IS_SIGNED_NUMERIC_TYPE(pDst->info.type)) {
|
||||||
int64_t v = 0;
|
int64_t v = 0;
|
||||||
GET_TYPED_DATA(v, int64_t, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, int64_t, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rowIndex, (char*)&v, false);
|
colDataSetVal(pDst, rowIndex, (char*)&v, false);
|
||||||
} else if (pDst->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
} else if (pDst->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
colDataAppend(pDst, rowIndex, (const char*)¤tKey, false);
|
colDataSetVal(pDst, rowIndex, (const char*)¤tKey, false);
|
||||||
} else { // varchar/nchar data
|
} else { // varchar/nchar data
|
||||||
colDataAppendNULL(pDst, rowIndex);
|
colDataSetNULL(pDst, rowIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,18 +96,18 @@ bool fillIfWindowPseudoColumn(SFillInfo* pFillInfo, SFillColInfo* pCol, SColumnI
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_START) {
|
if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_START) {
|
||||||
colDataAppend(pDstColInfoData, rowIndex, (const char*)&pFillInfo->currentKey, false);
|
colDataSetVal(pDstColInfoData, rowIndex, (const char*)&pFillInfo->currentKey, false);
|
||||||
return true;
|
return true;
|
||||||
} else if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_END) {
|
} else if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_END) {
|
||||||
// TODO: include endpoint
|
// TODO: include endpoint
|
||||||
SInterval* pInterval = &pFillInfo->interval;
|
SInterval* pInterval = &pFillInfo->interval;
|
||||||
int64_t windowEnd =
|
int64_t windowEnd =
|
||||||
taosTimeAdd(pFillInfo->currentKey, pInterval->interval, pInterval->intervalUnit, pInterval->precision);
|
taosTimeAdd(pFillInfo->currentKey, pInterval->interval, pInterval->intervalUnit, pInterval->precision);
|
||||||
colDataAppend(pDstColInfoData, rowIndex, (const char*)&windowEnd, false);
|
colDataSetVal(pDstColInfoData, rowIndex, (const char*)&windowEnd, false);
|
||||||
return true;
|
return true;
|
||||||
} else if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_DURATION) {
|
} else if (pCol->pExpr->base.pParam[0].pCol->colType == COLUMN_TYPE_WINDOW_DURATION) {
|
||||||
// TODO: include endpoint
|
// TODO: include endpoint
|
||||||
colDataAppend(pDstColInfoData, rowIndex, (const char*)&pFillInfo->interval.sliding, false);
|
colDataSetVal(pDstColInfoData, rowIndex, (const char*)&pFillInfo->interval.sliding, false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -163,7 +163,7 @@ static void doFillOneRow(SFillInfo* pFillInfo, SSDataBlock* pBlock, SSDataBlock*
|
||||||
} else {
|
} else {
|
||||||
SGroupKeys* pKey = taosArrayGet(pFillInfo->prev.pRowVal, i);
|
SGroupKeys* pKey = taosArrayGet(pFillInfo->prev.pRowVal, i);
|
||||||
if (IS_VAR_DATA_TYPE(type) || type == TSDB_DATA_TYPE_BOOL || pKey->isNull) {
|
if (IS_VAR_DATA_TYPE(type) || type == TSDB_DATA_TYPE_BOOL || pKey->isNull) {
|
||||||
colDataAppendNULL(pDstCol, index);
|
colDataSetNULL(pDstCol, index);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ static void doFillOneRow(SFillInfo* pFillInfo, SSDataBlock* pBlock, SSDataBlock*
|
||||||
point = (SPoint){.key = pFillInfo->currentKey, .val = &out};
|
point = (SPoint){.key = pFillInfo->currentKey, .val = &out};
|
||||||
taosGetLinearInterpolationVal(&point, type, &point1, &point2, type);
|
taosGetLinearInterpolationVal(&point, type, &point1, &point2, type);
|
||||||
|
|
||||||
colDataAppend(pDstCol, index, (const char*)&out, false);
|
colDataSetVal(pDstCol, index, (const char*)&out, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -217,9 +217,9 @@ static void doFillOneRow(SFillInfo* pFillInfo, SSDataBlock* pBlock, SSDataBlock*
|
||||||
|
|
||||||
void doSetVal(SColumnInfoData* pDstCol, int32_t rowIndex, const SGroupKeys* pKey) {
|
void doSetVal(SColumnInfoData* pDstCol, int32_t rowIndex, const SGroupKeys* pKey) {
|
||||||
if (pKey->isNull) {
|
if (pKey->isNull) {
|
||||||
colDataAppendNULL(pDstCol, rowIndex);
|
colDataSetNULL(pDstCol, rowIndex);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pDstCol, rowIndex, pKey->pData, false);
|
colDataSetVal(pDstCol, rowIndex, pKey->pData, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,14 +332,14 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, SSDataBlock* pBlock, int32_t
|
||||||
|
|
||||||
char* src = colDataGetData(pSrc, pFillInfo->index);
|
char* src = colDataGetData(pSrc, pFillInfo->index);
|
||||||
if (!colDataIsNull_s(pSrc, pFillInfo->index)) {
|
if (!colDataIsNull_s(pSrc, pFillInfo->index)) {
|
||||||
colDataAppend(pDst, index, src, false);
|
colDataSetVal(pDst, index, src, false);
|
||||||
saveColData(pFillInfo->prev.pRowVal, i, src, false);
|
saveColData(pFillInfo->prev.pRowVal, i, src, false);
|
||||||
if (pFillInfo->srcTsSlotId == dstSlotId) {
|
if (pFillInfo->srcTsSlotId == dstSlotId) {
|
||||||
pFillInfo->prev.key = *(int64_t*)src;
|
pFillInfo->prev.key = *(int64_t*)src;
|
||||||
}
|
}
|
||||||
} else { // the value is null
|
} else { // the value is null
|
||||||
if (pDst->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
if (pDst->info.type == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
colDataAppend(pDst, index, (const char*)&pFillInfo->currentKey, false);
|
colDataSetVal(pDst, index, (const char*)&pFillInfo->currentKey, false);
|
||||||
} else { // i > 0 and data is null , do interpolation
|
} else { // i > 0 and data is null , do interpolation
|
||||||
if (pFillInfo->type == TSDB_FILL_PREV) {
|
if (pFillInfo->type == TSDB_FILL_PREV) {
|
||||||
SArray* p = FILL_IS_ASC_FILL(pFillInfo) ? pFillInfo->prev.pRowVal : pFillInfo->next.pRowVal;
|
SArray* p = FILL_IS_ASC_FILL(pFillInfo) ? pFillInfo->prev.pRowVal : pFillInfo->next.pRowVal;
|
||||||
|
@ -347,10 +347,10 @@ static int32_t fillResultImpl(SFillInfo* pFillInfo, SSDataBlock* pBlock, int32_t
|
||||||
doSetVal(pDst, index, pKey);
|
doSetVal(pDst, index, pKey);
|
||||||
} else if (pFillInfo->type == TSDB_FILL_LINEAR) {
|
} else if (pFillInfo->type == TSDB_FILL_LINEAR) {
|
||||||
bool isNull = colDataIsNull_s(pSrc, pFillInfo->index);
|
bool isNull = colDataIsNull_s(pSrc, pFillInfo->index);
|
||||||
colDataAppend(pDst, index, src, isNull);
|
colDataSetVal(pDst, index, src, isNull);
|
||||||
saveColData(pFillInfo->prev.pRowVal, i, src, isNull); // todo:
|
saveColData(pFillInfo->prev.pRowVal, i, src, isNull); // todo:
|
||||||
} else if (pFillInfo->type == TSDB_FILL_NULL || pFillInfo->type == TSDB_FILL_NULL_F) {
|
} else if (pFillInfo->type == TSDB_FILL_NULL || pFillInfo->type == TSDB_FILL_NULL_F) {
|
||||||
colDataAppendNULL(pDst, index);
|
colDataSetNULL(pDst, index);
|
||||||
} else if (pFillInfo->type == TSDB_FILL_NEXT) {
|
} else if (pFillInfo->type == TSDB_FILL_NEXT) {
|
||||||
SArray* p = FILL_IS_ASC_FILL(pFillInfo) ? pFillInfo->next.pRowVal : pFillInfo->prev.pRowVal;
|
SArray* p = FILL_IS_ASC_FILL(pFillInfo) ? pFillInfo->next.pRowVal : pFillInfo->prev.pRowVal;
|
||||||
SGroupKeys* pKey = taosArrayGet(p, i);
|
SGroupKeys* pKey = taosArrayGet(p, i);
|
||||||
|
|
|
@ -175,7 +175,7 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
SColumnInfoData* pDst = taosArrayGet(pResBlock->pDataBlock, dstSlot);
|
SColumnInfoData* pDst = taosArrayGet(pResBlock->pDataBlock, dstSlot);
|
||||||
|
|
||||||
if (IS_TIMESTAMP_TYPE(pExprInfo->base.resSchema.type)) {
|
if (IS_TIMESTAMP_TYPE(pExprInfo->base.resSchema.type)) {
|
||||||
colDataAppend(pDst, rows, (char*)&pSliceInfo->current, false);
|
colDataSetVal(pDst, rows, (char*)&pSliceInfo->current, false);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
switch (pSliceInfo->fillType) {
|
switch (pSliceInfo->fillType) {
|
||||||
case TSDB_FILL_NULL:
|
case TSDB_FILL_NULL:
|
||||||
case TSDB_FILL_NULL_F: {
|
case TSDB_FILL_NULL_F: {
|
||||||
colDataAppendNULL(pDst, rows);
|
colDataSetNULL(pDst, rows);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,15 +194,15 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
if (pDst->info.type == TSDB_DATA_TYPE_FLOAT) {
|
if (pDst->info.type == TSDB_DATA_TYPE_FLOAT) {
|
||||||
float v = 0;
|
float v = 0;
|
||||||
GET_TYPED_DATA(v, float, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, float, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rows, (char*)&v, false);
|
colDataSetVal(pDst, rows, (char*)&v, false);
|
||||||
} else if (pDst->info.type == TSDB_DATA_TYPE_DOUBLE) {
|
} else if (pDst->info.type == TSDB_DATA_TYPE_DOUBLE) {
|
||||||
double v = 0;
|
double v = 0;
|
||||||
GET_TYPED_DATA(v, double, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, double, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rows, (char*)&v, false);
|
colDataSetVal(pDst, rows, (char*)&v, false);
|
||||||
} else if (IS_SIGNED_NUMERIC_TYPE(pDst->info.type)) {
|
} else if (IS_SIGNED_NUMERIC_TYPE(pDst->info.type)) {
|
||||||
int64_t v = 0;
|
int64_t v = 0;
|
||||||
GET_TYPED_DATA(v, int64_t, pVar->nType, &pVar->i);
|
GET_TYPED_DATA(v, int64_t, pVar->nType, &pVar->i);
|
||||||
colDataAppend(pDst, rows, (char*)&v, false);
|
colDataSetVal(pDst, rows, (char*)&v, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -225,13 +225,13 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
}
|
}
|
||||||
|
|
||||||
if (start.key == INT64_MIN || end.key == INT64_MIN) {
|
if (start.key == INT64_MIN || end.key == INT64_MIN) {
|
||||||
colDataAppendNULL(pDst, rows);
|
colDataSetNULL(pDst, rows);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
current.val = taosMemoryCalloc(pLinearInfo->bytes, 1);
|
current.val = taosMemoryCalloc(pLinearInfo->bytes, 1);
|
||||||
taosGetLinearInterpolationVal(¤t, pLinearInfo->type, &start, &end, pLinearInfo->type);
|
taosGetLinearInterpolationVal(¤t, pLinearInfo->type, &start, &end, pLinearInfo->type);
|
||||||
colDataAppend(pDst, rows, (char*)current.val, false);
|
colDataSetVal(pDst, rows, (char*)current.val, false);
|
||||||
|
|
||||||
taosMemoryFree(current.val);
|
taosMemoryFree(current.val);
|
||||||
break;
|
break;
|
||||||
|
@ -244,9 +244,9 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
|
|
||||||
SGroupKeys* pkey = taosArrayGet(pSliceInfo->pPrevRow, srcSlot);
|
SGroupKeys* pkey = taosArrayGet(pSliceInfo->pPrevRow, srcSlot);
|
||||||
if (pkey->isNull == false) {
|
if (pkey->isNull == false) {
|
||||||
colDataAppend(pDst, rows, pkey->pData, false);
|
colDataSetVal(pDst, rows, pkey->pData, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pDst, rows);
|
colDataSetNULL(pDst, rows);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -259,9 +259,9 @@ static bool genInterpolationResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp
|
||||||
|
|
||||||
SGroupKeys* pkey = taosArrayGet(pSliceInfo->pNextRow, srcSlot);
|
SGroupKeys* pkey = taosArrayGet(pSliceInfo->pNextRow, srcSlot);
|
||||||
if (pkey->isNull == false) {
|
if (pkey->isNull == false) {
|
||||||
colDataAppend(pDst, rows, pkey->pData, false);
|
colDataSetVal(pDst, rows, pkey->pData, false);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pDst, rows);
|
colDataSetNULL(pDst, rows);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -289,18 +289,18 @@ static void addCurrentRowToResult(STimeSliceOperatorInfo* pSliceInfo, SExprSupp*
|
||||||
SColumnInfoData* pDst = taosArrayGet(pResBlock->pDataBlock, dstSlot);
|
SColumnInfoData* pDst = taosArrayGet(pResBlock->pDataBlock, dstSlot);
|
||||||
|
|
||||||
if (IS_TIMESTAMP_TYPE(pExprInfo->base.resSchema.type)) {
|
if (IS_TIMESTAMP_TYPE(pExprInfo->base.resSchema.type)) {
|
||||||
colDataAppend(pDst, pResBlock->info.rows, (char*)&pSliceInfo->current, false);
|
colDataSetVal(pDst, pResBlock->info.rows, (char*)&pSliceInfo->current, false);
|
||||||
} else {
|
} else {
|
||||||
int32_t srcSlot = pExprInfo->base.pParam[0].pCol->slotId;
|
int32_t srcSlot = pExprInfo->base.pParam[0].pCol->slotId;
|
||||||
SColumnInfoData* pSrc = taosArrayGet(pSrcBlock->pDataBlock, srcSlot);
|
SColumnInfoData* pSrc = taosArrayGet(pSrcBlock->pDataBlock, srcSlot);
|
||||||
|
|
||||||
if (colDataIsNull_s(pSrc, index)) {
|
if (colDataIsNull_s(pSrc, index)) {
|
||||||
colDataAppendNULL(pDst, pResBlock->info.rows);
|
colDataSetNULL(pDst, pResBlock->info.rows);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* v = colDataGetData(pSrc, index);
|
char* v = colDataGetData(pSrc, index);
|
||||||
colDataAppend(pDst, pResBlock->info.rows, v, false);
|
colDataSetVal(pDst, pResBlock->info.rows, v, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2272,11 +2272,11 @@ static void doBuildPullDataBlock(SArray* array, int32_t* pIndex, SSDataBlock* pB
|
||||||
SColumnInfoData* pCalEndTs = (SColumnInfoData*)taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalEndTs = (SColumnInfoData*)taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
||||||
for (; (*pIndex) < size; (*pIndex)++) {
|
for (; (*pIndex) < size; (*pIndex)++) {
|
||||||
SPullWindowInfo* pWin = taosArrayGet(array, (*pIndex));
|
SPullWindowInfo* pWin = taosArrayGet(array, (*pIndex));
|
||||||
colDataAppend(pStartTs, pBlock->info.rows, (const char*)&pWin->window.skey, false);
|
colDataSetVal(pStartTs, pBlock->info.rows, (const char*)&pWin->window.skey, false);
|
||||||
colDataAppend(pEndTs, pBlock->info.rows, (const char*)&pWin->window.ekey, false);
|
colDataSetVal(pEndTs, pBlock->info.rows, (const char*)&pWin->window.ekey, false);
|
||||||
colDataAppend(pGroupId, pBlock->info.rows, (const char*)&pWin->groupId, false);
|
colDataSetVal(pGroupId, pBlock->info.rows, (const char*)&pWin->groupId, false);
|
||||||
colDataAppend(pCalStartTs, pBlock->info.rows, (const char*)&pWin->calWin.skey, false);
|
colDataSetVal(pCalStartTs, pBlock->info.rows, (const char*)&pWin->calWin.skey, false);
|
||||||
colDataAppend(pCalEndTs, pBlock->info.rows, (const char*)&pWin->calWin.ekey, false);
|
colDataSetVal(pCalEndTs, pBlock->info.rows, (const char*)&pWin->calWin.ekey, false);
|
||||||
pBlock->info.rows++;
|
pBlock->info.rows++;
|
||||||
}
|
}
|
||||||
if ((*pIndex) == size) {
|
if ((*pIndex) == size) {
|
||||||
|
@ -3273,28 +3273,28 @@ void doBuildDeleteDataBlock(SOperatorInfo* pOp, SSHashObj* pStDeleted, SSDataBlo
|
||||||
}
|
}
|
||||||
SSessionKey* res = tSimpleHashGetKey(*Ite, &keyLen);
|
SSessionKey* res = tSimpleHashGetKey(*Ite, &keyLen);
|
||||||
SColumnInfoData* pStartTsCol = taosArrayGet(pBlock->pDataBlock, START_TS_COLUMN_INDEX);
|
SColumnInfoData* pStartTsCol = taosArrayGet(pBlock->pDataBlock, START_TS_COLUMN_INDEX);
|
||||||
colDataAppend(pStartTsCol, pBlock->info.rows, (const char*)&res->win.skey, false);
|
colDataSetVal(pStartTsCol, pBlock->info.rows, (const char*)&res->win.skey, false);
|
||||||
SColumnInfoData* pEndTsCol = taosArrayGet(pBlock->pDataBlock, END_TS_COLUMN_INDEX);
|
SColumnInfoData* pEndTsCol = taosArrayGet(pBlock->pDataBlock, END_TS_COLUMN_INDEX);
|
||||||
colDataAppend(pEndTsCol, pBlock->info.rows, (const char*)&res->win.skey, false);
|
colDataSetVal(pEndTsCol, pBlock->info.rows, (const char*)&res->win.skey, false);
|
||||||
SColumnInfoData* pUidCol = taosArrayGet(pBlock->pDataBlock, UID_COLUMN_INDEX);
|
SColumnInfoData* pUidCol = taosArrayGet(pBlock->pDataBlock, UID_COLUMN_INDEX);
|
||||||
colDataAppendNULL(pUidCol, pBlock->info.rows);
|
colDataSetNULL(pUidCol, pBlock->info.rows);
|
||||||
SColumnInfoData* pGpCol = taosArrayGet(pBlock->pDataBlock, GROUPID_COLUMN_INDEX);
|
SColumnInfoData* pGpCol = taosArrayGet(pBlock->pDataBlock, GROUPID_COLUMN_INDEX);
|
||||||
colDataAppend(pGpCol, pBlock->info.rows, (const char*)&res->groupId, false);
|
colDataSetVal(pGpCol, pBlock->info.rows, (const char*)&res->groupId, false);
|
||||||
SColumnInfoData* pCalStCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalStCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_START_TS_COLUMN_INDEX);
|
||||||
colDataAppendNULL(pCalStCol, pBlock->info.rows);
|
colDataSetNULL(pCalStCol, pBlock->info.rows);
|
||||||
SColumnInfoData* pCalEdCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
SColumnInfoData* pCalEdCol = taosArrayGet(pBlock->pDataBlock, CALCULATE_END_TS_COLUMN_INDEX);
|
||||||
colDataAppendNULL(pCalEdCol, pBlock->info.rows);
|
colDataSetNULL(pCalEdCol, pBlock->info.rows);
|
||||||
|
|
||||||
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
SColumnInfoData* pTableCol = taosArrayGet(pBlock->pDataBlock, TABLE_NAME_COLUMN_INDEX);
|
||||||
|
|
||||||
void* tbname = NULL;
|
void* tbname = NULL;
|
||||||
streamStateGetParName(pOp->pTaskInfo->streamInfo.pState, res->groupId, &tbname);
|
streamStateGetParName(pOp->pTaskInfo->streamInfo.pState, res->groupId, &tbname);
|
||||||
if (tbname == NULL) {
|
if (tbname == NULL) {
|
||||||
colDataAppendNULL(pTableCol, pBlock->info.rows);
|
colDataSetNULL(pTableCol, pBlock->info.rows);
|
||||||
} else {
|
} else {
|
||||||
char parTbName[VARSTR_HEADER_SIZE + TSDB_TABLE_NAME_LEN];
|
char parTbName[VARSTR_HEADER_SIZE + TSDB_TABLE_NAME_LEN];
|
||||||
STR_WITH_MAXSIZE_TO_VARSTR(parTbName, tbname, sizeof(parTbName));
|
STR_WITH_MAXSIZE_TO_VARSTR(parTbName, tbname, sizeof(parTbName));
|
||||||
colDataAppend(pTableCol, pBlock->info.rows, (const char*)parTbName, false);
|
colDataSetVal(pTableCol, pBlock->info.rows, (const char*)parTbName, false);
|
||||||
tdbFree(tbname);
|
tdbFree(tbname);
|
||||||
}
|
}
|
||||||
pBlock->info.rows += 1;
|
pBlock->info.rows += 1;
|
||||||
|
|
|
@ -321,10 +321,10 @@ static void appendOneRowToDataBlock(SSDataBlock* pBlock, const SSDataBlock* pSou
|
||||||
bool isNull = colDataIsNull(pSrcColInfo, pSource->info.rows, *rowIndex, NULL);
|
bool isNull = colDataIsNull(pSrcColInfo, pSource->info.rows, *rowIndex, NULL);
|
||||||
|
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
colDataAppend(pColInfo, pBlock->info.rows, NULL, true);
|
colDataSetVal(pColInfo, pBlock->info.rows, NULL, true);
|
||||||
} else {
|
} else {
|
||||||
char* pData = colDataGetData(pSrcColInfo, *rowIndex);
|
char* pData = colDataGetData(pSrcColInfo, *rowIndex);
|
||||||
colDataAppend(pColInfo, pBlock->info.rows, pData, false);
|
colDataSetVal(pColInfo, pBlock->info.rows, pData, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,13 +110,13 @@ SSDataBlock* getDummyBlock(SOperatorInfo* pOperator) {
|
||||||
v = taosRand();
|
v = taosRand();
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pColInfo, i, reinterpret_cast<const char*>(&v), false);
|
colDataSetVal(pColInfo, i, reinterpret_cast<const char*>(&v), false);
|
||||||
|
|
||||||
// sprintf(buf, "this is %d row", i);
|
// sprintf(buf, "this is %d row", i);
|
||||||
// STR_TO_VARSTR(b1, buf);
|
// STR_TO_VARSTR(b1, buf);
|
||||||
//
|
//
|
||||||
// SColumnInfoData* pColInfo2 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
// SColumnInfoData* pColInfo2 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
||||||
// colDataAppend(pColInfo2, i, b1, false);
|
// colDataSetVal(pColInfo2, i, b1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = pInfo->numOfRowsPerPage;
|
pBlock->info.rows = pInfo->numOfRowsPerPage;
|
||||||
|
@ -155,7 +155,7 @@ SSDataBlock* get2ColsDummyBlock(SOperatorInfo* pOperator) {
|
||||||
SColumnInfoData* pColInfo = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 0));
|
SColumnInfoData* pColInfo = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 0));
|
||||||
|
|
||||||
ts = (++pInfo->tsStart);
|
ts = (++pInfo->tsStart);
|
||||||
colDataAppend(pColInfo, i, reinterpret_cast<const char*>(&ts), false);
|
colDataSetVal(pColInfo, i, reinterpret_cast<const char*>(&ts), false);
|
||||||
|
|
||||||
SColumnInfoData* pColInfo1 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
SColumnInfoData* pColInfo1 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
||||||
if (pInfo->type == data_desc) {
|
if (pInfo->type == data_desc) {
|
||||||
|
@ -166,13 +166,13 @@ SSDataBlock* get2ColsDummyBlock(SOperatorInfo* pOperator) {
|
||||||
v = taosRand();
|
v = taosRand();
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pColInfo1, i, reinterpret_cast<const char*>(&v), false);
|
colDataSetVal(pColInfo1, i, reinterpret_cast<const char*>(&v), false);
|
||||||
|
|
||||||
// sprintf(buf, "this is %d row", i);
|
// sprintf(buf, "this is %d row", i);
|
||||||
// STR_TO_VARSTR(b1, buf);
|
// STR_TO_VARSTR(b1, buf);
|
||||||
//
|
//
|
||||||
// SColumnInfoData* pColInfo2 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
// SColumnInfoData* pColInfo2 = static_cast<SColumnInfoData*>(TARRAY_GET_ELEM(pBlock->pDataBlock, 1));
|
||||||
// colDataAppend(pColInfo2, i, b1, false);
|
// colDataSetVal(pColInfo2, i, b1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pBlock->info.rows = pInfo->numOfRowsPerPage;
|
pBlock->info.rows = pInfo->numOfRowsPerPage;
|
||||||
|
|
|
@ -91,7 +91,7 @@ SSDataBlock* getSingleColDummyBlock(void* param) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
varDataSetLen(str, len);
|
varDataSetLen(str, len);
|
||||||
colDataAppend(pColInfo, i, reinterpret_cast<const char*>(str), false);
|
colDataSetVal(pColInfo, i, reinterpret_cast<const char*>(str), false);
|
||||||
pBlock->info.hasVarCol = true;
|
pBlock->info.hasVarCol = true;
|
||||||
printf("nchar: %s\n", strOri);
|
printf("nchar: %s\n", strOri);
|
||||||
} else if (pInfo->type == TSDB_DATA_TYPE_BINARY) {
|
} else if (pInfo->type == TSDB_DATA_TYPE_BINARY) {
|
||||||
|
@ -99,12 +99,12 @@ SSDataBlock* getSingleColDummyBlock(void* param) {
|
||||||
char str[64] = {0};
|
char str[64] = {0};
|
||||||
taosRandStr(varDataVal(str), size);
|
taosRandStr(varDataVal(str), size);
|
||||||
varDataSetLen(str, size);
|
varDataSetLen(str, size);
|
||||||
colDataAppend(pColInfo, i, reinterpret_cast<const char*>(str), false);
|
colDataSetVal(pColInfo, i, reinterpret_cast<const char*>(str), false);
|
||||||
pBlock->info.hasVarCol = true;
|
pBlock->info.hasVarCol = true;
|
||||||
printf("binary: %s\n", varDataVal(str));
|
printf("binary: %s\n", varDataVal(str));
|
||||||
} else if (pInfo->type == TSDB_DATA_TYPE_DOUBLE || pInfo->type == TSDB_DATA_TYPE_FLOAT) {
|
} else if (pInfo->type == TSDB_DATA_TYPE_DOUBLE || pInfo->type == TSDB_DATA_TYPE_FLOAT) {
|
||||||
double v = rand_f2();
|
double v = rand_f2();
|
||||||
colDataAppend(pColInfo, i, reinterpret_cast<const char*>(&v), false);
|
colDataSetVal(pColInfo, i, reinterpret_cast<const char*>(&v), false);
|
||||||
printf("float: %f\n", v);
|
printf("float: %f\n", v);
|
||||||
} else {
|
} else {
|
||||||
int64_t v = ++pInfo->startVal;
|
int64_t v = ++pInfo->startVal;
|
||||||
|
@ -115,7 +115,7 @@ SSDataBlock* getSingleColDummyBlock(void* param) {
|
||||||
memcpy(result, (char*)(&v) + sizeof(int64_t) - tDataTypes[pInfo->type].bytes, tDataTypes[pInfo->type].bytes);
|
memcpy(result, (char*)(&v) + sizeof(int64_t) - tDataTypes[pInfo->type].bytes, tDataTypes[pInfo->type].bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pColInfo, i, result, false);
|
colDataSetVal(pColInfo, i, result, false);
|
||||||
printf("int: %" PRId64 "\n", v);
|
printf("int: %" PRId64 "\n", v);
|
||||||
taosMemoryFree(result);
|
taosMemoryFree(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -446,7 +446,7 @@ int32_t functionFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
||||||
|
|
||||||
char* in = GET_ROWCELL_INTERBUF(pResInfo);
|
char* in = GET_ROWCELL_INTERBUF(pResInfo);
|
||||||
colDataAppend(pCol, pBlock->info.rows, in, pResInfo->isNullRes);
|
colDataSetVal(pCol, pBlock->info.rows, in, pResInfo->isNullRes);
|
||||||
|
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
}
|
}
|
||||||
|
@ -476,7 +476,7 @@ int32_t functionFinalizeWithResultBuf(SqlFunctionCtx* pCtx, SSDataBlock* pBlock,
|
||||||
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
||||||
|
|
||||||
char* in = finalResult;
|
char* in = finalResult;
|
||||||
colDataAppend(pCol, pBlock->info.rows, in, pResInfo->isNullRes);
|
colDataSetVal(pCol, pBlock->info.rows, in, pResInfo->isNullRes);
|
||||||
|
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
}
|
}
|
||||||
|
@ -795,32 +795,31 @@ int32_t minmaxFunctionFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
case TSDB_DATA_TYPE_UBIGINT:
|
case TSDB_DATA_TYPE_UBIGINT:
|
||||||
case TSDB_DATA_TYPE_BIGINT:
|
case TSDB_DATA_TYPE_BIGINT:
|
||||||
((int64_t*)pCol->pData)[currentRow] = pRes->v;
|
((int64_t*)pCol->pData)[currentRow] = pRes->v;
|
||||||
// colDataAppendInt64(pCol, currentRow, &pRes->v);
|
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
case TSDB_DATA_TYPE_INT:
|
case TSDB_DATA_TYPE_INT:
|
||||||
colDataAppendInt32(pCol, currentRow, (int32_t*)&pRes->v);
|
colDataSetInt32(pCol, currentRow, (int32_t*)&pRes->v);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_USMALLINT:
|
case TSDB_DATA_TYPE_USMALLINT:
|
||||||
case TSDB_DATA_TYPE_SMALLINT:
|
case TSDB_DATA_TYPE_SMALLINT:
|
||||||
colDataAppendInt16(pCol, currentRow, (int16_t*)&pRes->v);
|
colDataSetInt16(pCol, currentRow, (int16_t*)&pRes->v);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_BOOL:
|
case TSDB_DATA_TYPE_BOOL:
|
||||||
case TSDB_DATA_TYPE_UTINYINT:
|
case TSDB_DATA_TYPE_UTINYINT:
|
||||||
case TSDB_DATA_TYPE_TINYINT:
|
case TSDB_DATA_TYPE_TINYINT:
|
||||||
colDataAppendInt8(pCol, currentRow, (int8_t*)&pRes->v);
|
colDataSetInt8(pCol, currentRow, (int8_t*)&pRes->v);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_DOUBLE:
|
case TSDB_DATA_TYPE_DOUBLE:
|
||||||
colDataAppendDouble(pCol, currentRow, (double*)&pRes->v);
|
colDataSetDouble(pCol, currentRow, (double*)&pRes->v);
|
||||||
break;
|
break;
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
float v = GET_FLOAT_VAL(&pRes->v);
|
float v = GET_FLOAT_VAL(&pRes->v);
|
||||||
colDataAppendFloat(pCol, currentRow, &v);
|
colDataSetFloat(pCol, currentRow, &v);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pCtx->subsidiaries.num > 0) {
|
if (pCtx->subsidiaries.num > 0) {
|
||||||
|
@ -844,7 +843,7 @@ int32_t setNullSelectivityValue(SqlFunctionCtx* pCtx, SSDataBlock* pBlock, int32
|
||||||
int32_t dstSlotId = pc->pExpr->base.resSchema.slotId;
|
int32_t dstSlotId = pc->pExpr->base.resSchema.slotId;
|
||||||
|
|
||||||
SColumnInfoData* pDstCol = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
SColumnInfoData* pDstCol = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
||||||
colDataAppendNULL(pDstCol, rowIndex);
|
colDataSetNULL(pDstCol, rowIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -874,9 +873,9 @@ int32_t setSelectivityValue(SqlFunctionCtx* pCtx, SSDataBlock* pBlock, const STu
|
||||||
|
|
||||||
SColumnInfoData* pDstCol = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
SColumnInfoData* pDstCol = taosArrayGet(pBlock->pDataBlock, dstSlotId);
|
||||||
if (nullList[j]) {
|
if (nullList[j]) {
|
||||||
colDataAppendNULL(pDstCol, rowIndex);
|
colDataSetNULL(pDstCol, rowIndex);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pDstCol, rowIndex, pStart, false);
|
colDataSetVal(pDstCol, rowIndex, pStart, false);
|
||||||
}
|
}
|
||||||
pStart += pDstCol->info.bytes;
|
pStart += pDstCol->info.bytes;
|
||||||
}
|
}
|
||||||
|
@ -920,9 +919,9 @@ void appendSelectivityValue(SqlFunctionCtx* pCtx, int32_t rowIndex, int32_t pos)
|
||||||
SColumnInfoData* pDstCol = taosArrayGet(pCtx->pDstBlock->pDataBlock, dstSlotId);
|
SColumnInfoData* pDstCol = taosArrayGet(pCtx->pDstBlock->pDataBlock, dstSlotId);
|
||||||
|
|
||||||
if (colDataIsNull_s(pSrcCol, rowIndex) == true) {
|
if (colDataIsNull_s(pSrcCol, rowIndex) == true) {
|
||||||
colDataAppendNULL(pDstCol, pos);
|
colDataSetNULL(pDstCol, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pDstCol, pos, pData, false);
|
colDataSetVal(pDstCol, pos, pData, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1309,7 +1308,7 @@ int32_t stddevPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -1516,7 +1515,7 @@ int32_t leastSQRFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t currentRow = pBlock->info.rows;
|
int32_t currentRow = pBlock->info.rows;
|
||||||
|
|
||||||
if (0 == pInfo->num) {
|
if (0 == pInfo->num) {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1529,7 +1528,7 @@ int32_t leastSQRFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
double param02 = param[0][2] - param[1][2] * (param[0][1] / param[1][1]);
|
double param02 = param[0][2] - param[1][2] * (param[0][1] / param[1][1]);
|
||||||
|
|
||||||
if (0 == param00) {
|
if (0 == param00) {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1545,7 +1544,7 @@ int32_t leastSQRFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", param02, param12);
|
snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", param02, param12);
|
||||||
varDataSetLen(buf, len);
|
varDataSetLen(buf, len);
|
||||||
|
|
||||||
colDataAppend(pCol, currentRow, buf, pResInfo->isNullRes);
|
colDataSetVal(pCol, currentRow, buf, pResInfo->isNullRes);
|
||||||
|
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
}
|
}
|
||||||
|
@ -1975,7 +1974,7 @@ int32_t apercentilePartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -2463,7 +2462,7 @@ int32_t firstLastFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
pResInfo->isNullRes = (pResInfo->numOfRes == 0) ? 1 : 0;
|
||||||
|
|
||||||
SFirstLastRes* pRes = GET_ROWCELL_INTERBUF(pResInfo);
|
SFirstLastRes* pRes = GET_ROWCELL_INTERBUF(pResInfo);
|
||||||
colDataAppend(pCol, pBlock->info.rows, pRes->buf, pRes->isNull || pResInfo->isNullRes);
|
colDataSetVal(pCol, pBlock->info.rows, pRes->buf, pRes->isNull || pResInfo->isNullRes);
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pRes->pos, pBlock->info.rows);
|
code = setSelectivityValue(pCtx, pBlock, &pRes->pos, pBlock->info.rows);
|
||||||
|
@ -2488,7 +2487,7 @@ int32_t firstLastPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pRes->pos, pBlock->info.rows);
|
code = setSelectivityValue(pCtx, pBlock, &pRes->pos, pBlock->info.rows);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
|
@ -2679,7 +2678,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendInt64(pOutput, pos, &delta);
|
colDataSetInt64(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.i64 = v;
|
pDiffInfo->prev.i64 = v;
|
||||||
|
|
||||||
|
@ -2692,7 +2691,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendInt64(pOutput, pos, &delta);
|
colDataSetInt64(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.i64 = v;
|
pDiffInfo->prev.i64 = v;
|
||||||
break;
|
break;
|
||||||
|
@ -2703,7 +2702,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendInt64(pOutput, pos, &delta);
|
colDataSetInt64(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.i64 = v;
|
pDiffInfo->prev.i64 = v;
|
||||||
break;
|
break;
|
||||||
|
@ -2715,7 +2714,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
if (delta < 0 && pDiffInfo->ignoreNegative) {
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendInt64(pOutput, pos, &delta);
|
colDataSetInt64(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.i64 = v;
|
pDiffInfo->prev.i64 = v;
|
||||||
break;
|
break;
|
||||||
|
@ -2726,7 +2725,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if ((delta < 0 && pDiffInfo->ignoreNegative) || isinf(delta) || isnan(delta)) { // check for overflow
|
if ((delta < 0 && pDiffInfo->ignoreNegative) || isinf(delta) || isnan(delta)) { // check for overflow
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendDouble(pOutput, pos, &delta);
|
colDataSetDouble(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.d64 = v;
|
pDiffInfo->prev.d64 = v;
|
||||||
break;
|
break;
|
||||||
|
@ -2737,7 +2736,7 @@ static int32_t doHandleDiff(SDiffInfo* pDiffInfo, int32_t type, const char* pv,
|
||||||
if ((delta < 0 && pDiffInfo->ignoreNegative) || isinf(delta) || isnan(delta)) { // check for overflow
|
if ((delta < 0 && pDiffInfo->ignoreNegative) || isinf(delta) || isnan(delta)) { // check for overflow
|
||||||
colDataSetNull_f_s(pOutput, pos);
|
colDataSetNull_f_s(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendDouble(pOutput, pos, &delta);
|
colDataSetDouble(pOutput, pos, &delta);
|
||||||
}
|
}
|
||||||
pDiffInfo->prev.d64 = v;
|
pDiffInfo->prev.d64 = v;
|
||||||
break;
|
break;
|
||||||
|
@ -3205,13 +3204,13 @@ int32_t topBotFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
// todo assign the tag value and the corresponding row data
|
// todo assign the tag value and the corresponding row data
|
||||||
int32_t currentRow = pBlock->info.rows;
|
int32_t currentRow = pBlock->info.rows;
|
||||||
if (pEntryInfo->numOfRes <= 0) {
|
if (pEntryInfo->numOfRes <= 0) {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pRes->nullTuplePos, currentRow);
|
code = setSelectivityValue(pCtx, pBlock, &pRes->nullTuplePos, currentRow);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < pEntryInfo->numOfRes; ++i) {
|
for (int32_t i = 0; i < pEntryInfo->numOfRes; ++i) {
|
||||||
STopBotResItem* pItem = &pRes->pItems[i];
|
STopBotResItem* pItem = &pRes->pItems[i];
|
||||||
colDataAppend(pCol, currentRow, (const char*)&pItem->v.i, false);
|
colDataSetVal(pCol, currentRow, (const char*)&pItem->v.i, false);
|
||||||
#ifdef BUF_PAGE_DEBUG
|
#ifdef BUF_PAGE_DEBUG
|
||||||
qDebug("page_finalize i:%d,item:%p,pageId:%d, offset:%d\n", i, pItem, pItem->tuplePos.pageId,
|
qDebug("page_finalize i:%d,item:%p,pageId:%d, offset:%d\n", i, pItem, pItem->tuplePos.pageId,
|
||||||
pItem->tuplePos.offset);
|
pItem->tuplePos.offset);
|
||||||
|
@ -3428,7 +3427,7 @@ int32_t spreadPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -3603,7 +3602,7 @@ int32_t elapsedPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -3929,7 +3928,7 @@ int32_t histogramFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
pInfo->bins[i].upper, pInfo->bins[i].percentage);
|
pInfo->bins[i].upper, pInfo->bins[i].percentage);
|
||||||
}
|
}
|
||||||
varDataSetLen(buf, len);
|
varDataSetLen(buf, len);
|
||||||
colDataAppend(pCol, currentRow, buf, false);
|
colDataSetVal(pCol, currentRow, buf, false);
|
||||||
currentRow++;
|
currentRow++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3948,7 +3947,7 @@ int32_t histogramPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -4167,7 +4166,7 @@ int32_t hllPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
@ -4300,7 +4299,7 @@ int32_t stateCountFunction(SqlFunctionCtx* pCtx) {
|
||||||
numOfElems++;
|
numOfElems++;
|
||||||
|
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutput, i);
|
colDataSetNULL(pOutput, i);
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
if (pCtx->subsidiaries.num > 0) {
|
if (pCtx->subsidiaries.num > 0) {
|
||||||
appendSelectivityValue(pCtx, i, pCtx->offset + numOfElems - 1);
|
appendSelectivityValue(pCtx, i, pCtx->offset + numOfElems - 1);
|
||||||
|
@ -4316,7 +4315,7 @@ int32_t stateCountFunction(SqlFunctionCtx* pCtx) {
|
||||||
} else {
|
} else {
|
||||||
pInfo->count = 0;
|
pInfo->count = 0;
|
||||||
}
|
}
|
||||||
colDataAppend(pOutput, pCtx->offset + numOfElems - 1, (char*)&output, false);
|
colDataSetVal(pOutput, pCtx->offset + numOfElems - 1, (char*)&output, false);
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
if (pCtx->subsidiaries.num > 0) {
|
if (pCtx->subsidiaries.num > 0) {
|
||||||
|
@ -4362,7 +4361,7 @@ int32_t stateDurationFunction(SqlFunctionCtx* pCtx) {
|
||||||
numOfElems++;
|
numOfElems++;
|
||||||
|
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutput, i);
|
colDataSetNULL(pOutput, i);
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
if (pCtx->subsidiaries.num > 0) {
|
if (pCtx->subsidiaries.num > 0) {
|
||||||
appendSelectivityValue(pCtx, i, pCtx->offset + numOfElems - 1);
|
appendSelectivityValue(pCtx, i, pCtx->offset + numOfElems - 1);
|
||||||
|
@ -4382,7 +4381,7 @@ int32_t stateDurationFunction(SqlFunctionCtx* pCtx) {
|
||||||
} else {
|
} else {
|
||||||
pInfo->durationStart = 0;
|
pInfo->durationStart = 0;
|
||||||
}
|
}
|
||||||
colDataAppend(pOutput, pCtx->offset + numOfElems - 1, (char*)&output, false);
|
colDataSetVal(pOutput, pCtx->offset + numOfElems - 1, (char*)&output, false);
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
if (pCtx->subsidiaries.num > 0) {
|
if (pCtx->subsidiaries.num > 0) {
|
||||||
|
@ -4422,7 +4421,7 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
|
||||||
|
|
||||||
int32_t pos = startOffset + numOfElems;
|
int32_t pos = startOffset + numOfElems;
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
// colDataAppendNULL(pOutput, i);
|
// colDataSetNULL(pOutput, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4431,21 +4430,21 @@ int32_t csumFunction(SqlFunctionCtx* pCtx) {
|
||||||
int64_t v;
|
int64_t v;
|
||||||
GET_TYPED_DATA(v, int64_t, type, data);
|
GET_TYPED_DATA(v, int64_t, type, data);
|
||||||
pSumRes->isum += v;
|
pSumRes->isum += v;
|
||||||
colDataAppend(pOutput, pos, (char*)&pSumRes->isum, false);
|
colDataSetVal(pOutput, pos, (char*)&pSumRes->isum, false);
|
||||||
} else if (IS_UNSIGNED_NUMERIC_TYPE(type)) {
|
} else if (IS_UNSIGNED_NUMERIC_TYPE(type)) {
|
||||||
uint64_t v;
|
uint64_t v;
|
||||||
GET_TYPED_DATA(v, uint64_t, type, data);
|
GET_TYPED_DATA(v, uint64_t, type, data);
|
||||||
pSumRes->usum += v;
|
pSumRes->usum += v;
|
||||||
colDataAppend(pOutput, pos, (char*)&pSumRes->usum, false);
|
colDataSetVal(pOutput, pos, (char*)&pSumRes->usum, false);
|
||||||
} else if (IS_FLOAT_TYPE(type)) {
|
} else if (IS_FLOAT_TYPE(type)) {
|
||||||
double v;
|
double v;
|
||||||
GET_TYPED_DATA(v, double, type, data);
|
GET_TYPED_DATA(v, double, type, data);
|
||||||
pSumRes->dsum += v;
|
pSumRes->dsum += v;
|
||||||
// check for overflow
|
// check for overflow
|
||||||
if (isinf(pSumRes->dsum) || isnan(pSumRes->dsum)) {
|
if (isinf(pSumRes->dsum) || isnan(pSumRes->dsum)) {
|
||||||
colDataAppendNULL(pOutput, pos);
|
colDataSetNULL(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, pos, (char*)&pSumRes->dsum, false);
|
colDataSetVal(pOutput, pos, (char*)&pSumRes->dsum, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4509,7 +4508,7 @@ int32_t mavgFunction(SqlFunctionCtx* pCtx) {
|
||||||
|
|
||||||
int32_t pos = startOffset + numOfElems;
|
int32_t pos = startOffset + numOfElems;
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
// colDataAppendNULL(pOutput, i);
|
// colDataSetNULL(pOutput, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4532,9 +4531,9 @@ int32_t mavgFunction(SqlFunctionCtx* pCtx) {
|
||||||
double result = pInfo->sum / pInfo->numOfPoints;
|
double result = pInfo->sum / pInfo->numOfPoints;
|
||||||
// check for overflow
|
// check for overflow
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataAppendNULL(pOutput, pos);
|
colDataSetNULL(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, pos, (char*)&result, false);
|
colDataSetVal(pOutput, pos, (char*)&result, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
|
@ -4668,12 +4667,12 @@ int32_t sampleFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
|
|
||||||
int32_t currentRow = pBlock->info.rows;
|
int32_t currentRow = pBlock->info.rows;
|
||||||
if (pInfo->numSampled == 0) {
|
if (pInfo->numSampled == 0) {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pInfo->nullTuplePos, currentRow);
|
code = setSelectivityValue(pCtx, pBlock, &pInfo->nullTuplePos, currentRow);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < pInfo->numSampled; ++i) {
|
for (int32_t i = 0; i < pInfo->numSampled; ++i) {
|
||||||
colDataAppend(pCol, currentRow + i, pInfo->data + i * pInfo->colBytes, false);
|
colDataSetVal(pCol, currentRow + i, pInfo->data + i * pInfo->colBytes, false);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pInfo->tuplePos[i], currentRow + i);
|
code = setSelectivityValue(pCtx, pBlock, &pInfo->tuplePos[i], currentRow + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4784,9 +4783,9 @@ int32_t tailFunction(SqlFunctionCtx* pCtx) {
|
||||||
int32_t pos = startOffset + i;
|
int32_t pos = startOffset + i;
|
||||||
STailItem* pItem = pInfo->pItems[i];
|
STailItem* pItem = pInfo->pItems[i];
|
||||||
if (pItem->isNull) {
|
if (pItem->isNull) {
|
||||||
colDataAppendNULL(pOutput, pos);
|
colDataSetNULL(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, pos, pItem->data, false);
|
colDataSetVal(pOutput, pos, pItem->data, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4810,7 +4809,7 @@ int32_t tailFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t currentRow = pBlock->info.rows;
|
int32_t currentRow = pBlock->info.rows;
|
||||||
for (int32_t i = 0; i < pEntryInfo->numOfRes; ++i) {
|
for (int32_t i = 0; i < pEntryInfo->numOfRes; ++i) {
|
||||||
STailItem* pItem = pInfo->pItems[i];
|
STailItem* pItem = pInfo->pItems[i];
|
||||||
colDataAppend(pCol, currentRow, pItem->data, false);
|
colDataSetVal(pCol, currentRow, pItem->data, false);
|
||||||
currentRow += 1;
|
currentRow += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4904,12 +4903,12 @@ int32_t uniqueFunction(SqlFunctionCtx* pCtx) {
|
||||||
for (int32_t i = 0; i < pInfo->numOfPoints; ++i) {
|
for (int32_t i = 0; i < pInfo->numOfPoints; ++i) {
|
||||||
SUniqueItem* pItem = (SUniqueItem*)(pInfo->pItems + i * (sizeof(SUniqueItem) + pInfo->colBytes));
|
SUniqueItem* pItem = (SUniqueItem*)(pInfo->pItems + i * (sizeof(SUniqueItem) + pInfo->colBytes));
|
||||||
if (pItem->isNull == true) {
|
if (pItem->isNull == true) {
|
||||||
colDataAppendNULL(pOutput, i);
|
colDataSetNULL(pOutput, i);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, i, pItem->data, false);
|
colDataSetVal(pOutput, i, pItem->data, false);
|
||||||
}
|
}
|
||||||
if (pTsOutput != NULL) {
|
if (pTsOutput != NULL) {
|
||||||
colDataAppendInt64(pTsOutput, i, &pItem->timestamp);
|
colDataSetInt64(pTsOutput, i, &pItem->timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5036,10 +5035,10 @@ int32_t modeFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
|
|
||||||
if (maxCount != 0) {
|
if (maxCount != 0) {
|
||||||
SModeItem* pResItem = (SModeItem*)(pInfo->pItems + resIndex * (sizeof(SModeItem) + pInfo->colBytes));
|
SModeItem* pResItem = (SModeItem*)(pInfo->pItems + resIndex * (sizeof(SModeItem) + pInfo->colBytes));
|
||||||
colDataAppend(pCol, currentRow, pResItem->data, false);
|
colDataSetVal(pCol, currentRow, pResItem->data, false);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pResItem->tuplePos, currentRow);
|
code = setSelectivityValue(pCtx, pBlock, &pResItem->tuplePos, currentRow);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pCol, currentRow);
|
colDataSetNULL(pCol, currentRow);
|
||||||
code = setSelectivityValue(pCtx, pBlock, &pInfo->nullTuplePos, currentRow);
|
code = setSelectivityValue(pCtx, pBlock, &pInfo->nullTuplePos, currentRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5510,7 +5509,7 @@ int32_t blockDistFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
pData->numOfBlocks, pData->totalSize / 1024.0, averageSize / 1024.0, compRatio, '%');
|
pData->numOfBlocks, pData->totalSize / 1024.0, averageSize / 1024.0, compRatio, '%');
|
||||||
|
|
||||||
varDataSetLen(st, len);
|
varDataSetLen(st, len);
|
||||||
colDataAppend(pColInfo, row++, st, false);
|
colDataSetVal(pColInfo, row++, st, false);
|
||||||
|
|
||||||
int64_t avgRows = 0;
|
int64_t avgRows = 0;
|
||||||
if (pData->numOfBlocks > 0) {
|
if (pData->numOfBlocks > 0) {
|
||||||
|
@ -5522,18 +5521,18 @@ int32_t blockDistFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
pData->totalRows, pData->numOfInmemRows, pData->minRows, pData->maxRows, avgRows);
|
pData->totalRows, pData->numOfInmemRows, pData->minRows, pData->maxRows, avgRows);
|
||||||
|
|
||||||
varDataSetLen(st, len);
|
varDataSetLen(st, len);
|
||||||
colDataAppend(pColInfo, row++, st, false);
|
colDataSetVal(pColInfo, row++, st, false);
|
||||||
|
|
||||||
len = sprintf(st + VARSTR_HEADER_SIZE, "Total_Tables=[%d] Total_Files=[%d] Total_Vgroups=[%d]", pData->numOfTables,
|
len = sprintf(st + VARSTR_HEADER_SIZE, "Total_Tables=[%d] Total_Files=[%d] Total_Vgroups=[%d]", pData->numOfTables,
|
||||||
pData->numOfFiles, pData->numOfVgroups);
|
pData->numOfFiles, pData->numOfVgroups);
|
||||||
|
|
||||||
varDataSetLen(st, len);
|
varDataSetLen(st, len);
|
||||||
colDataAppend(pColInfo, row++, st, false);
|
colDataSetVal(pColInfo, row++, st, false);
|
||||||
|
|
||||||
len = sprintf(st + VARSTR_HEADER_SIZE,
|
len = sprintf(st + VARSTR_HEADER_SIZE,
|
||||||
"--------------------------------------------------------------------------------");
|
"--------------------------------------------------------------------------------");
|
||||||
varDataSetLen(st, len);
|
varDataSetLen(st, len);
|
||||||
colDataAppend(pColInfo, row++, st, false);
|
colDataSetVal(pColInfo, row++, st, false);
|
||||||
|
|
||||||
int32_t maxVal = 0;
|
int32_t maxVal = 0;
|
||||||
int32_t minVal = INT32_MAX;
|
int32_t minVal = INT32_MAX;
|
||||||
|
@ -5572,7 +5571,7 @@ int32_t blockDistFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
}
|
}
|
||||||
|
|
||||||
varDataSetLen(st, len);
|
varDataSetLen(st, len);
|
||||||
colDataAppend(pColInfo, row++, st, false);
|
colDataSetVal(pColInfo, row++, st, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -5633,13 +5632,13 @@ int32_t derivativeFunction(SqlFunctionCtx* pCtx) {
|
||||||
if (pDerivInfo->ignoreNegative && r < 0) {
|
if (pDerivInfo->ignoreNegative && r < 0) {
|
||||||
} else {
|
} else {
|
||||||
if (isinf(r) || isnan(r)) {
|
if (isinf(r) || isnan(r)) {
|
||||||
colDataAppendNULL(pOutput, pos);
|
colDataSetNULL(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, pos, (const char*)&r, false);
|
colDataSetVal(pOutput, pos, (const char*)&r, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pTsOutput != NULL) {
|
if (pTsOutput != NULL) {
|
||||||
colDataAppendInt64(pTsOutput, pos, &tsList[i]);
|
colDataSetInt64(pTsOutput, pos, &tsList[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
|
@ -5674,13 +5673,13 @@ int32_t derivativeFunction(SqlFunctionCtx* pCtx) {
|
||||||
if (pDerivInfo->ignoreNegative && r < 0) {
|
if (pDerivInfo->ignoreNegative && r < 0) {
|
||||||
} else {
|
} else {
|
||||||
if (isinf(r) || isnan(r)) {
|
if (isinf(r) || isnan(r)) {
|
||||||
colDataAppendNULL(pOutput, pos);
|
colDataSetNULL(pOutput, pos);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput, pos, (const char*)&r, false);
|
colDataSetVal(pOutput, pos, (const char*)&r, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pTsOutput != NULL) {
|
if (pTsOutput != NULL) {
|
||||||
colDataAppendInt64(pTsOutput, pos, &pDerivInfo->prevTs);
|
colDataSetInt64(pTsOutput, pos, &pDerivInfo->prevTs);
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle selectivity
|
// handle selectivity
|
||||||
|
@ -5811,7 +5810,7 @@ int32_t irateFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
|
|
||||||
SRateInfo* pInfo = GET_ROWCELL_INTERBUF(pResInfo);
|
SRateInfo* pInfo = GET_ROWCELL_INTERBUF(pResInfo);
|
||||||
double result = doCalcRate(pInfo, (double)TSDB_TICK_PER_SECOND(pCtx->param[1].param.i));
|
double result = doCalcRate(pInfo, (double)TSDB_TICK_PER_SECOND(pCtx->param[1].param.i));
|
||||||
colDataAppend(pCol, pBlock->info.rows, (const char*)&result, pResInfo->isNullRes);
|
colDataSetVal(pCol, pBlock->info.rows, (const char*)&result, pResInfo->isNullRes);
|
||||||
|
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
}
|
}
|
||||||
|
@ -5862,7 +5861,7 @@ int32_t groupKeyFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
if (pInfo->hasResult) {
|
if (pInfo->hasResult) {
|
||||||
int32_t currentRow = pBlock->info.rows;
|
int32_t currentRow = pBlock->info.rows;
|
||||||
for (; currentRow < pBlock->info.rows + pResInfo->numOfRes; ++currentRow) {
|
for (; currentRow < pBlock->info.rows + pResInfo->numOfRes; ++currentRow) {
|
||||||
colDataAppend(pCol, currentRow, pInfo->data, pInfo->isNull ? true : false);
|
colDataSetVal(pCol, currentRow, pInfo->data, pInfo->isNull ? true : false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pResInfo->numOfRes = 0;
|
pResInfo->numOfRes = 0;
|
||||||
|
|
|
@ -847,7 +847,7 @@ int32_t avgPartialFinalize(SqlFunctionCtx* pCtx, SSDataBlock* pBlock) {
|
||||||
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
int32_t slotId = pCtx->pExpr->base.resSchema.slotId;
|
||||||
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
SColumnInfoData* pCol = taosArrayGet(pBlock->pDataBlock, slotId);
|
||||||
|
|
||||||
colDataAppend(pCol, pBlock->info.rows, res, false);
|
colDataSetVal(pCol, pBlock->info.rows, res, false);
|
||||||
|
|
||||||
taosMemoryFree(res);
|
taosMemoryFree(res);
|
||||||
return pResInfo->numOfRes;
|
return pResInfo->numOfRes;
|
||||||
|
|
|
@ -47,11 +47,11 @@ int32_t getNumOfResult(SqlFunctionCtx* pCtx, int32_t num, SSDataBlock* pResBlock
|
||||||
SResultRowEntryInfo* pResInfo = GET_RES_INFO(&pCtx[i]);
|
SResultRowEntryInfo* pResInfo = GET_RES_INFO(&pCtx[i]);
|
||||||
if (pResInfo->numOfRes == 0) {
|
if (pResInfo->numOfRes == 0) {
|
||||||
for (int32_t j = 0; j < pResInfo->numOfRes; ++j) {
|
for (int32_t j = 0; j < pResInfo->numOfRes; ++j) {
|
||||||
colDataAppend(pCol, j, NULL, true); // TODO add set null data api
|
colDataSetVal(pCol, j, NULL, true); // TODO add set null data api
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int32_t j = 0; j < pResInfo->numOfRes; ++j) {
|
for (int32_t j = 0; j < pResInfo->numOfRes; ++j) {
|
||||||
colDataAppend(pCol, j, GET_ROWCELL_INTERBUF(pResInfo), false);
|
colDataSetVal(pCol, j, GET_ROWCELL_INTERBUF(pResInfo), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -864,13 +864,13 @@ int32_t convertScalarParamToDataBlock(SScalarParam *input, int32_t numOfCols, SS
|
||||||
int expandRows = numOfRows - startRow;
|
int expandRows = numOfRows - startRow;
|
||||||
bool isNull = colDataIsNull_s(pColInfoData, (input+i)->numOfRows - 1);
|
bool isNull = colDataIsNull_s(pColInfoData, (input+i)->numOfRows - 1);
|
||||||
if (isNull) {
|
if (isNull) {
|
||||||
colDataAppendNNULL(pDest, startRow, expandRows);
|
colDataSetNNULL(pDest, startRow, expandRows);
|
||||||
} else {
|
} else {
|
||||||
char* src = colDataGetData(pColInfoData, (input + i)->numOfRows - 1);
|
char* src = colDataGetData(pColInfoData, (input + i)->numOfRows - 1);
|
||||||
for (int j = 0; j < expandRows; ++j) {
|
for (int j = 0; j < expandRows; ++j) {
|
||||||
colDataAppend(pDest, startRow+j, src, false);
|
colDataSetVal(pDest, startRow+j, src, false);
|
||||||
}
|
}
|
||||||
//colDataAppendNItems(pColInfoData, startRow, data, expandRows);
|
//colDataSetNItems(pColInfoData, startRow, data, expandRows);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ int scalarFuncTest() {
|
||||||
|
|
||||||
SColumnInfoData *pCol = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData *pCol = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
for (int32_t j = 0; j < pBlock->info.rows; ++j) {
|
for (int32_t j = 0; j < pBlock->info.rows; ++j) {
|
||||||
colDataAppendInt32(pCol, j, &j);
|
colDataSetInt32(pCol, j, &j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SScalarParam input = {0};
|
SScalarParam input = {0};
|
||||||
|
@ -99,7 +99,7 @@ int aggregateFuncTest() {
|
||||||
|
|
||||||
SColumnInfoData *pColInfo = bdGetColumnInfoData(pBlock, 0);
|
SColumnInfoData *pColInfo = bdGetColumnInfoData(pBlock, 0);
|
||||||
for (int32_t j = 0; j < pBlock->info.rows; ++j) {
|
for (int32_t j = 0; j < pBlock->info.rows; ++j) {
|
||||||
colDataAppendInt32(pColInfo, j, &j);
|
colDataSetInt32(pColInfo, j, &j);
|
||||||
}
|
}
|
||||||
|
|
||||||
SUdfInterBuf buf = {0};
|
SUdfInterBuf buf = {0};
|
||||||
|
|
|
@ -69,7 +69,7 @@ int32_t sclConvertValueToSclParam(SValueNode *pValueNode, SScalarParam *out, int
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(in.columnData, 0, nodesGetValueFromNode(pValueNode), false);
|
colDataSetVal(in.columnData, 0, nodesGetValueFromNode(pValueNode), false);
|
||||||
|
|
||||||
colInfoDataEnsureCapacity(out->columnData, 1, true);
|
colInfoDataEnsureCapacity(out->columnData, 1, true);
|
||||||
code = vectorConvertSingleColImpl(&in, out, overflow, -1, -1);
|
code = vectorConvertSingleColImpl(&in, out, overflow, -1, -1);
|
||||||
|
@ -337,9 +337,9 @@ int32_t sclInitParam(SNode *node, SScalarParam *param, SScalarCtx *ctx, int32_t
|
||||||
SCL_RET(TSDB_CODE_OUT_OF_MEMORY);
|
SCL_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
if (TSDB_DATA_TYPE_NULL == valueNode->node.resType.type || valueNode->isNull) {
|
if (TSDB_DATA_TYPE_NULL == valueNode->node.resType.type || valueNode->isNull) {
|
||||||
colDataAppendNULL(param->columnData, 0);
|
colDataSetNULL(param->columnData, 0);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(param->columnData, 0, nodesGetValueFromNode(valueNode), false);
|
colDataSetVal(param->columnData, 0, nodesGetValueFromNode(valueNode), false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -605,7 +605,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
||||||
if (*equal) {
|
if (*equal) {
|
||||||
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||||
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||||
colDataAppend(output->columnData, rowIdx, pData, isNull);
|
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||||
|
|
||||||
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -619,7 +619,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
||||||
if (pElse) {
|
if (pElse) {
|
||||||
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||||
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||||
colDataAppend(output->columnData, rowIdx, pData, isNull);
|
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||||
|
|
||||||
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pElse->numOfRows && totalRows > 1) {
|
if (0 == rowIdx && 1 == pCase->numOfRows && 1 == pElse->numOfRows && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -629,7 +629,7 @@ int32_t sclWalkCaseWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(output->columnData, rowIdx, NULL, true);
|
colDataSetVal(output->columnData, rowIdx, NULL, true);
|
||||||
|
|
||||||
if (0 == rowIdx && 1 == pCase->numOfRows && totalRows > 1) {
|
if (0 == rowIdx && 1 == pCase->numOfRows && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -668,7 +668,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
||||||
if (*whenValue) {
|
if (*whenValue) {
|
||||||
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
bool isNull = colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||||
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
char *pData = isNull ? NULL : colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? rowIdx : 0));
|
||||||
colDataAppend(output->columnData, rowIdx, pData, isNull);
|
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||||
|
|
||||||
if (preSingle && 0 == rowIdx && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
if (preSingle && 0 == rowIdx && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -687,7 +687,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
||||||
if (pElse) {
|
if (pElse) {
|
||||||
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
bool isNull = colDataIsNull_s(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||||
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
char *pData = isNull ? NULL : colDataGetData(pElse->columnData, (pElse->numOfRows > 1 ? rowIdx : 0));
|
||||||
colDataAppend(output->columnData, rowIdx, pData, isNull);
|
colDataSetVal(output->columnData, rowIdx, pData, isNull);
|
||||||
|
|
||||||
if (preSingle && 0 == rowIdx && 1 == pElse->numOfRows && totalRows > 1) {
|
if (preSingle && 0 == rowIdx && 1 == pElse->numOfRows && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -697,7 +697,7 @@ int32_t sclWalkWhenList(SScalarCtx *ctx, SNodeList *pList, struct SListCell *pCe
|
||||||
goto _return;
|
goto _return;
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(output->columnData, rowIdx, NULL, true);
|
colDataSetVal(output->columnData, rowIdx, NULL, true);
|
||||||
|
|
||||||
if (preSingle && 0 == rowIdx && totalRows > 1) {
|
if (preSingle && 0 == rowIdx && totalRows > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -815,7 +815,7 @@ int32_t sclExecLogic(SLogicConditionNode *node, SScalarCtx *ctx, SScalarParam *o
|
||||||
}
|
}
|
||||||
|
|
||||||
if (complete) {
|
if (complete) {
|
||||||
colDataAppend(output->columnData, i, (char *)&value, false);
|
colDataSetVal(output->columnData, i, (char *)&value, false);
|
||||||
if (value) {
|
if (value) {
|
||||||
numOfQualified++;
|
numOfQualified++;
|
||||||
}
|
}
|
||||||
|
@ -920,7 +920,7 @@ int32_t sclExecCaseWhen(SCaseWhenNode *node, SScalarCtx *ctx, SScalarParam *outp
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
bool *equal = (bool *)colDataGetData(comp.columnData, (comp.numOfRows > 1 ? i : 0));
|
bool *equal = (bool *)colDataGetData(comp.columnData, (comp.numOfRows > 1 ? i : 0));
|
||||||
if (*equal) {
|
if (*equal) {
|
||||||
colDataAppend(output->columnData, i, colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)),
|
colDataSetVal(output->columnData, i, colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)),
|
||||||
colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)));
|
colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)));
|
||||||
if (0 == i && 1 == pCase->numOfRows && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && rowNum > 1) {
|
if (0 == i && 1 == pCase->numOfRows && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && rowNum > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
@ -938,7 +938,7 @@ int32_t sclExecCaseWhen(SCaseWhenNode *node, SScalarCtx *ctx, SScalarParam *outp
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
bool *whenValue = (bool *)colDataGetData(pWhen->columnData, (pWhen->numOfRows > 1 ? i : 0));
|
bool *whenValue = (bool *)colDataGetData(pWhen->columnData, (pWhen->numOfRows > 1 ? i : 0));
|
||||||
if (*whenValue) {
|
if (*whenValue) {
|
||||||
colDataAppend(output->columnData, i, colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)),
|
colDataSetVal(output->columnData, i, colDataGetData(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)),
|
||||||
colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)));
|
colDataIsNull_s(pThen->columnData, (pThen->numOfRows > 1 ? i : 0)));
|
||||||
if (0 == i && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && rowNum > 1) {
|
if (0 == i && 1 == pWhen->numOfRows && 1 == pThen->numOfRows && rowNum > 1) {
|
||||||
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
SCL_ERR_JRET(sclExtendResRows(output, output, ctx->pBlockList));
|
||||||
|
|
|
@ -43,7 +43,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
float *out = (float *)pOutputData->pData;
|
float *out = (float *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -56,7 +56,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -69,7 +69,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
int8_t *out = (int8_t *)pOutputData->pData;
|
int8_t *out = (int8_t *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -82,7 +82,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
int16_t *out = (int16_t *)pOutputData->pData;
|
int16_t *out = (int16_t *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -95,7 +95,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
int32_t *out = (int32_t *)pOutputData->pData;
|
int32_t *out = (int32_t *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -108,7 +108,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
int64_t *out = (int64_t *)pOutputData->pData;
|
int64_t *out = (int64_t *)pOutputData->pData;
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
out[i] = (in[i] >= 0) ? in[i] : -in[i];
|
||||||
|
@ -118,7 +118,7 @@ int32_t absFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_NULL: {
|
case TSDB_DATA_TYPE_NULL: {
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -144,12 +144,12 @@ static int32_t doScalarFunctionUnique(SScalarParam *pInput, int32_t inputNum, SS
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i) || IS_NULL_TYPE(type)) {
|
if (colDataIsNull_s(pInputData, i) || IS_NULL_TYPE(type)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
double result = valFn(getValueFn(pInputData->pData, i));
|
double result = valFn(getValueFn(pInputData->pData, i));
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
}
|
}
|
||||||
|
@ -179,29 +179,29 @@ static int32_t doScalarFunctionUnique2(SScalarParam *pInput, int32_t inputNum, S
|
||||||
if (pInput[0].numOfRows == pInput[1].numOfRows) {
|
if (pInput[0].numOfRows == pInput[1].numOfRows) {
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData[0], i) || colDataIsNull_s(pInputData[1], i) || hasNullType) {
|
if (colDataIsNull_s(pInputData[0], i) || colDataIsNull_s(pInputData[1], i) || hasNullType) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
result = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, i));
|
result = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, i));
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (pInput[0].numOfRows == 1) { // left operand is constant
|
} else if (pInput[0].numOfRows == 1) { // left operand is constant
|
||||||
if (colDataIsNull_s(pInputData[0], 0) || hasNullType) {
|
if (colDataIsNull_s(pInputData[0], 0) || hasNullType) {
|
||||||
colDataAppendNNULL(pOutputData, 0, pInput[1].numOfRows);
|
colDataSetNNULL(pOutputData, 0, pInput[1].numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData[1], i)) {
|
if (colDataIsNull_s(pInputData[1], i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = valFn(getValueFn[0](pInputData[0]->pData, 0), getValueFn[1](pInputData[1]->pData, i));
|
result = valFn(getValueFn[0](pInputData[0]->pData, 0), getValueFn[1](pInputData[1]->pData, i));
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,17 +210,17 @@ static int32_t doScalarFunctionUnique2(SScalarParam *pInput, int32_t inputNum, S
|
||||||
}
|
}
|
||||||
} else if (pInput[1].numOfRows == 1) {
|
} else if (pInput[1].numOfRows == 1) {
|
||||||
if (colDataIsNull_s(pInputData[1], 0) || hasNullType) {
|
if (colDataIsNull_s(pInputData[1], 0) || hasNullType) {
|
||||||
colDataAppendNNULL(pOutputData, 0, pInput[0].numOfRows);
|
colDataSetNNULL(pOutputData, 0, pInput[0].numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData[0], i)) {
|
if (colDataIsNull_s(pInputData[0], i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, 0));
|
result = valFn(getValueFn[0](pInputData[0]->pData, i), getValueFn[1](pInputData[1]->pData, 0));
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ static int32_t doScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = f1(in[i]);
|
out[i] = f1(in[i]);
|
||||||
|
@ -261,7 +261,7 @@ static int32_t doScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
out[i] = d1(in[i]);
|
out[i] = d1(in[i]);
|
||||||
|
@ -271,7 +271,7 @@ static int32_t doScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
|
|
||||||
case TSDB_DATA_TYPE_NULL: {
|
case TSDB_DATA_TYPE_NULL: {
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -365,7 +365,7 @@ static int32_t doLengthFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ int32_t concatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
bool hasNull = false;
|
bool hasNull = false;
|
||||||
for (int32_t i = 0; i < inputNum; ++i) {
|
for (int32_t i = 0; i < inputNum; ++i) {
|
||||||
if (colDataIsNull_s(pInputData[i], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) {
|
if (colDataIsNull_s(pInputData[i], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) {
|
||||||
colDataAppendNULL(pOutputData, k);
|
colDataSetNULL(pOutputData, k);
|
||||||
hasNull = true;
|
hasNull = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -468,7 +468,7 @@ int32_t concatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
varDataSetLen(output, dataLen);
|
varDataSetLen(output, dataLen);
|
||||||
colDataAppend(pOutputData, k, output, false);
|
colDataSetVal(pOutputData, k, output, false);
|
||||||
output += varDataTLen(output);
|
output += varDataTLen(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,7 +522,7 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
||||||
|
|
||||||
for (int32_t k = 0; k < numOfRows; ++k) {
|
for (int32_t k = 0; k < numOfRows; ++k) {
|
||||||
if (colDataIsNull_s(pInputData[0], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[0]))) {
|
if (colDataIsNull_s(pInputData[0], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[0]))) {
|
||||||
colDataAppendNULL(pOutputData, k);
|
colDataSetNULL(pOutputData, k);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,11 +553,11 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, k);
|
colDataSetNULL(pOutputData, k);
|
||||||
memset(output, 0, dataLen);
|
memset(output, 0, dataLen);
|
||||||
} else {
|
} else {
|
||||||
varDataSetLen(output, dataLen);
|
varDataSetLen(output, dataLen);
|
||||||
colDataAppend(pOutputData, k, output, false);
|
colDataSetVal(pOutputData, k, output, false);
|
||||||
output += varDataTLen(output);
|
output += varDataTLen(output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,7 +584,7 @@ static int32_t doCaseConvFunction(SScalarParam *pInput, int32_t inputNum, SScala
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -600,7 +600,7 @@ static int32_t doCaseConvFunction(SScalarParam *pInput, int32_t inputNum, SScala
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
varDataSetLen(output, len);
|
varDataSetLen(output, len);
|
||||||
colDataAppend(pOutputData, i, output, false);
|
colDataSetVal(pOutputData, i, output, false);
|
||||||
output += varDataTLen(output);
|
output += varDataTLen(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -622,7 +622,7 @@ static int32_t doTrimFunction(SScalarParam *pInput, int32_t inputNum, SScalarPar
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -631,7 +631,7 @@ static int32_t doTrimFunction(SScalarParam *pInput, int32_t inputNum, SScalarPar
|
||||||
int32_t charLen = (type == TSDB_DATA_TYPE_VARCHAR) ? len : len / TSDB_NCHAR_SIZE;
|
int32_t charLen = (type == TSDB_DATA_TYPE_VARCHAR) ? len : len / TSDB_NCHAR_SIZE;
|
||||||
trimFn(input, output, type, charLen);
|
trimFn(input, output, type, charLen);
|
||||||
|
|
||||||
colDataAppend(pOutputData, i, output, false);
|
colDataSetVal(pOutputData, i, output, false);
|
||||||
output += varDataTLen(output);
|
output += varDataTLen(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -660,7 +660,7 @@ int32_t substrFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
char *input = colDataGetData(pInput[0].columnData, i);
|
char *input = colDataGetData(pInput[0].columnData, i);
|
||||||
|
@ -682,7 +682,7 @@ int32_t substrFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
}
|
}
|
||||||
|
|
||||||
varDataSetLen(output, resLen);
|
varDataSetLen(output, resLen);
|
||||||
colDataAppend(pOutputData, i, output, false);
|
colDataSetVal(pOutputData, i, output, false);
|
||||||
output += varDataTLen(output);
|
output += varDataTLen(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -711,7 +711,7 @@ int32_t castFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutp
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1014,7 +1014,7 @@ int32_t castFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, output, false);
|
colDataSetVal(pOutput->columnData, i, output, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
@ -1038,7 +1038,7 @@ int32_t toISO8601Function(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1059,7 +1059,7 @@ int32_t toISO8601Function(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
|
} else if (tsDigits == TSDB_TIME_PRECISION_NANO_DIGITS) {
|
||||||
timeVal = timeVal / (1000 * 1000 * 1000);
|
timeVal = timeVal / (1000 * 1000 * 1000);
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
hasFraction = true;
|
hasFraction = true;
|
||||||
|
@ -1106,7 +1106,7 @@ int32_t toISO8601Function(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
memmove(buf + VARSTR_HEADER_SIZE, buf, len);
|
memmove(buf + VARSTR_HEADER_SIZE, buf, len);
|
||||||
varDataSetLen(buf, len);
|
varDataSetLen(buf, len);
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, buf, false);
|
colDataSetVal(pOutput->columnData, i, buf, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
@ -1121,7 +1121,7 @@ int32_t toUnixtimestampFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
char *input = colDataGetData(pInput[0].columnData, i);
|
char *input = colDataGetData(pInput[0].columnData, i);
|
||||||
|
@ -1129,9 +1129,9 @@ int32_t toUnixtimestampFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
int64_t timeVal = 0;
|
int64_t timeVal = 0;
|
||||||
int32_t ret = convertStringToTimestamp(type, input, timePrec, &timeVal);
|
int32_t ret = convertStringToTimestamp(type, input, timePrec, &timeVal);
|
||||||
if (ret != TSDB_CODE_SUCCESS) {
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutput->columnData, i, (char *)&timeVal, false);
|
colDataSetVal(pOutput->columnData, i, (char *)&timeVal, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1163,7 +1163,7 @@ int32_t toJsonFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, (const char *)pTag, false);
|
colDataSetVal(pOutput->columnData, i, (const char *)pTag, false);
|
||||||
tTagFree(pTag);
|
tTagFree(pTag);
|
||||||
taosArrayDestroy(pTagVals);
|
taosArrayDestroy(pTagVals);
|
||||||
}
|
}
|
||||||
|
@ -1208,7 +1208,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput[0].numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
if (colDataIsNull_s(pInput[0].columnData, i)) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1217,7 +1217,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
if (IS_VAR_DATA_TYPE(type)) { /* datetime format strings */
|
if (IS_VAR_DATA_TYPE(type)) { /* datetime format strings */
|
||||||
int32_t ret = convertStringToTimestamp(type, input, TSDB_TIME_PRECISION_NANO, &timeVal);
|
int32_t ret = convertStringToTimestamp(type, input, TSDB_TIME_PRECISION_NANO, &timeVal);
|
||||||
if (ret != TSDB_CODE_SUCCESS) {
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// If converted value is less than 10digits in second, use value in second instead
|
// If converted value is less than 10digits in second, use value in second instead
|
||||||
|
@ -1264,7 +1264,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
||||||
timeVal = timeVal * factor;
|
timeVal = timeVal * factor;
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1279,7 +1279,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
||||||
timeVal = timeVal * factor;
|
timeVal = timeVal * factor;
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1294,7 +1294,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
||||||
timeVal = timeVal * factor / factor / 60 * 60 * factor;
|
timeVal = timeVal * factor / factor / 60 * 60 * factor;
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1309,7 +1309,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
||||||
timeVal = timeVal * factor / factor / 3600 * 3600 * factor;
|
timeVal = timeVal * factor / factor / 3600 * 3600 * factor;
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1340,7 +1340,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
timeVal = timeVal * factor / factor / 86400 * 86400 * factor;
|
timeVal = timeVal * factor / factor / 86400 * 86400 * factor;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1355,7 +1355,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
} else if (tsDigits <= TSDB_TIME_PRECISION_SEC_DIGITS) {
|
||||||
timeVal = timeVal * factor / factor / 604800 * 604800 * factor;
|
timeVal = timeVal * factor / factor / 604800 * 604800 * factor;
|
||||||
} else {
|
} else {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1394,7 +1394,7 @@ int32_t timeTruncateFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, (char *)&timeVal, false);
|
colDataSetVal(pOutput->columnData, i, (char *)&timeVal, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
@ -1466,7 +1466,7 @@ int32_t timeDiffFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutput->columnData, i);
|
colDataSetNULL(pOutput->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1528,7 +1528,7 @@ int32_t timeDiffFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutput->columnData, i, (char *)&result, false);
|
colDataSetVal(pOutput->columnData, i, (char *)&result, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = numOfRows;
|
pOutput->numOfRows = numOfRows;
|
||||||
|
@ -1542,7 +1542,7 @@ int32_t nowFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutpu
|
||||||
|
|
||||||
int64_t ts = taosGetTimestamp(timePrec);
|
int64_t ts = taosGetTimestamp(timePrec);
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
colDataAppendInt64(pOutput->columnData, i, &ts);
|
colDataSetInt64(pOutput->columnData, i, &ts);
|
||||||
}
|
}
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1554,7 +1554,7 @@ int32_t todayFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOut
|
||||||
|
|
||||||
int64_t ts = taosGetTimestampToday(timePrec);
|
int64_t ts = taosGetTimestampToday(timePrec);
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
colDataAppendInt64(pOutput->columnData, i, &ts);
|
colDataSetInt64(pOutput->columnData, i, &ts);
|
||||||
}
|
}
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1565,7 +1565,7 @@ int32_t timezoneFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
||||||
memcpy(varDataVal(output), tsTimezoneStr, TD_TIMEZONE_LEN);
|
memcpy(varDataVal(output), tsTimezoneStr, TD_TIMEZONE_LEN);
|
||||||
varDataSetLen(output, strlen(tsTimezoneStr));
|
varDataSetLen(output, strlen(tsTimezoneStr));
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
colDataAppend(pOutput->columnData, i, output, false);
|
colDataSetVal(pOutput->columnData, i, output, false);
|
||||||
}
|
}
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1728,34 +1728,34 @@ bool getTimePseudoFuncEnv(SFunctionNode *UNUSED_PARAM(pFunc), SFuncExecEnv *pEnv
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qStartTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t qStartTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
colDataAppendInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 0));
|
colDataSetInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 0));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qEndTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t qEndTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
colDataAppendInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 1));
|
colDataSetInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 1));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t winDurFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t winDurFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
colDataAppendInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 2));
|
colDataSetInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 2));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t winStartTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t winStartTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
colDataAppendInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 3));
|
colDataSetInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 3));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t winEndTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t winEndTsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
colDataAppendInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 4));
|
colDataSetInt64(pOutput->columnData, pOutput->numOfRows, (int64_t *)colDataGetData(pInput->columnData, 4));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t qTbnameFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
int32_t qTbnameFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOutput) {
|
||||||
char* p = colDataGetVarData(pInput->columnData, 0);
|
char* p = colDataGetVarData(pInput->columnData, 0);
|
||||||
|
|
||||||
colDataAppendNItems(pOutput->columnData, pOutput->numOfRows, p, pInput->numOfRows);
|
colDataSetNItems(pOutput->columnData, pOutput->numOfRows, p, pInput->numOfRows);
|
||||||
pOutput->numOfRows += pInput->numOfRows;
|
pOutput->numOfRows += pInput->numOfRows;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1833,7 +1833,7 @@ int32_t sumScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
@ -1945,7 +1945,7 @@ static int32_t doMinMaxScalarFunction(SScalarParam *pInput, int32_t inputNum, SS
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
@ -2049,7 +2049,7 @@ int32_t avgScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull || (count == 0)) {
|
if (hasNull || (count == 0)) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
if (IS_SIGNED_NUMERIC_TYPE(type)) {
|
if (IS_SIGNED_NUMERIC_TYPE(type)) {
|
||||||
int64_t *out = (int64_t *)pOutputData->pData;
|
int64_t *out = (int64_t *)pOutputData->pData;
|
||||||
|
@ -2158,7 +2158,7 @@ int32_t stddevScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
|
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
*out = 0;
|
*out = 0;
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -2325,7 +2325,7 @@ int32_t leastSQRScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPa
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
matrix[1][1] = (double)count;
|
matrix[1][1] = (double)count;
|
||||||
matrix[1][0] = matrix[0][1];
|
matrix[1][0] = matrix[0][1];
|
||||||
|
@ -2341,7 +2341,7 @@ int32_t leastSQRScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPa
|
||||||
size_t len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", matrix02,
|
size_t len = snprintf(varDataVal(buf), sizeof(buf) - VARSTR_HEADER_SIZE, "{slop:%.6lf, intercept:%.6lf}", matrix02,
|
||||||
matrix12);
|
matrix12);
|
||||||
varDataSetLen(buf, len);
|
varDataSetLen(buf, len);
|
||||||
colDataAppend(pOutputData, 0, buf, false);
|
colDataSetVal(pOutputData, 0, buf, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
@ -2366,9 +2366,9 @@ int32_t percentileScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutputData, 0, (char *)&val, false);
|
colDataSetVal(pOutputData, 0, (char *)&val, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
@ -2411,10 +2411,10 @@ int32_t spreadScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
double result = max - min;
|
double result = max - min;
|
||||||
colDataAppend(pOutputData, 0, (char *)&result, false);
|
colDataSetVal(pOutputData, 0, (char *)&result, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
@ -2437,7 +2437,7 @@ int32_t nonCalcScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPar
|
||||||
|
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
if (hasNull) {
|
if (hasNull) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
} else {
|
} else {
|
||||||
*out = 0;
|
*out = 0;
|
||||||
}
|
}
|
||||||
|
@ -2606,7 +2606,7 @@ int32_t stateCountScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2617,7 +2617,7 @@ int32_t stateCountScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
} else {
|
} else {
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
colDataAppend(pOutputData, i, (char *)&out, false);
|
colDataSetVal(pOutputData, i, (char *)&out, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
@ -2632,7 +2632,7 @@ int32_t stateDurationScalarFunction(SScalarParam *pInput, int32_t inputNum, SSca
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2641,7 +2641,7 @@ int32_t stateDurationScalarFunction(SScalarParam *pInput, int32_t inputNum, SSca
|
||||||
if (ret) {
|
if (ret) {
|
||||||
out = 0;
|
out = 0;
|
||||||
}
|
}
|
||||||
colDataAppend(pOutputData, i, (char *)&out, false);
|
colDataSetVal(pOutputData, i, (char *)&out, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
|
@ -2882,7 +2882,7 @@ int32_t histogramScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarP
|
||||||
bins[k].upper, bins[k].percentage);
|
bins[k].upper, bins[k].percentage);
|
||||||
}
|
}
|
||||||
varDataSetLen(buf, len);
|
varDataSetLen(buf, len);
|
||||||
colDataAppend(pOutputData, k, buf, false);
|
colDataSetVal(pOutputData, k, buf, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(bins);
|
taosMemoryFree(bins);
|
||||||
|
@ -2898,12 +2898,12 @@ int32_t selectScalarFunction(SScalarParam *pInput, int32_t inputNum, SScalarPara
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
for (int32_t i = 0; i < pInput->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pInputData, i)) {
|
if (colDataIsNull_s(pInputData, i)) {
|
||||||
colDataAppendNULL(pOutputData, 0);
|
colDataSetNULL(pOutputData, 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *data = colDataGetData(pInputData, i);
|
char *data = colDataGetData(pInputData, i);
|
||||||
colDataAppend(pOutputData, i, data, false);
|
colDataSetVal(pOutputData, i, data, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = 1;
|
pOutput->numOfRows = 1;
|
||||||
|
|
|
@ -242,7 +242,7 @@ static FORCE_INLINE void varToTimestamp(char *buf, SScalarParam *pOut, int32_t r
|
||||||
value = 0;
|
value = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppendInt64(pOut->columnData, rowIndex, &value);
|
colDataSetInt64(pOut->columnData, rowIndex, &value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void varToSigned(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
static FORCE_INLINE void varToSigned(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
||||||
|
@ -265,22 +265,22 @@ static FORCE_INLINE void varToSigned(char *buf, SScalarParam *pOut, int32_t rowI
|
||||||
case TSDB_DATA_TYPE_TINYINT: {
|
case TSDB_DATA_TYPE_TINYINT: {
|
||||||
int8_t value = (int8_t)taosStr2Int8(buf, NULL, 10);
|
int8_t value = (int8_t)taosStr2Int8(buf, NULL, 10);
|
||||||
|
|
||||||
colDataAppendInt8(pOut->columnData, rowIndex, (int8_t *)&value);
|
colDataSetInt8(pOut->columnData, rowIndex, (int8_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_SMALLINT: {
|
case TSDB_DATA_TYPE_SMALLINT: {
|
||||||
int16_t value = (int16_t)taosStr2Int16(buf, NULL, 10);
|
int16_t value = (int16_t)taosStr2Int16(buf, NULL, 10);
|
||||||
colDataAppendInt16(pOut->columnData, rowIndex, (int16_t *)&value);
|
colDataSetInt16(pOut->columnData, rowIndex, (int16_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_INT: {
|
case TSDB_DATA_TYPE_INT: {
|
||||||
int32_t value = (int32_t)taosStr2Int32(buf, NULL, 10);
|
int32_t value = (int32_t)taosStr2Int32(buf, NULL, 10);
|
||||||
colDataAppendInt32(pOut->columnData, rowIndex, (int32_t *)&value);
|
colDataSetInt32(pOut->columnData, rowIndex, (int32_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_BIGINT: {
|
case TSDB_DATA_TYPE_BIGINT: {
|
||||||
int64_t value = (int64_t)taosStr2Int64(buf, NULL, 10);
|
int64_t value = (int64_t)taosStr2Int64(buf, NULL, 10);
|
||||||
colDataAppendInt64(pOut->columnData, rowIndex, (int64_t *)&value);
|
colDataSetInt64(pOut->columnData, rowIndex, (int64_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,22 +305,22 @@ static FORCE_INLINE void varToUnsigned(char *buf, SScalarParam *pOut, int32_t ro
|
||||||
switch (pOut->columnData->info.type) {
|
switch (pOut->columnData->info.type) {
|
||||||
case TSDB_DATA_TYPE_UTINYINT: {
|
case TSDB_DATA_TYPE_UTINYINT: {
|
||||||
uint8_t value = (uint8_t)taosStr2UInt8(buf, NULL, 10);
|
uint8_t value = (uint8_t)taosStr2UInt8(buf, NULL, 10);
|
||||||
colDataAppendInt8(pOut->columnData, rowIndex, (int8_t *)&value);
|
colDataSetInt8(pOut->columnData, rowIndex, (int8_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_USMALLINT: {
|
case TSDB_DATA_TYPE_USMALLINT: {
|
||||||
uint16_t value = (uint16_t)taosStr2UInt16(buf, NULL, 10);
|
uint16_t value = (uint16_t)taosStr2UInt16(buf, NULL, 10);
|
||||||
colDataAppendInt16(pOut->columnData, rowIndex, (int16_t *)&value);
|
colDataSetInt16(pOut->columnData, rowIndex, (int16_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_UINT: {
|
case TSDB_DATA_TYPE_UINT: {
|
||||||
uint32_t value = (uint32_t)taosStr2UInt32(buf, NULL, 10);
|
uint32_t value = (uint32_t)taosStr2UInt32(buf, NULL, 10);
|
||||||
colDataAppendInt32(pOut->columnData, rowIndex, (int32_t *)&value);
|
colDataSetInt32(pOut->columnData, rowIndex, (int32_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_UBIGINT: {
|
case TSDB_DATA_TYPE_UBIGINT: {
|
||||||
uint64_t value = (uint64_t)taosStr2UInt64(buf, NULL, 10);
|
uint64_t value = (uint64_t)taosStr2UInt64(buf, NULL, 10);
|
||||||
colDataAppendInt64(pOut->columnData, rowIndex, (int64_t *)&value);
|
colDataSetInt64(pOut->columnData, rowIndex, (int64_t *)&value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,18 +329,18 @@ static FORCE_INLINE void varToUnsigned(char *buf, SScalarParam *pOut, int32_t ro
|
||||||
static FORCE_INLINE void varToFloat(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
static FORCE_INLINE void varToFloat(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
||||||
if (TSDB_DATA_TYPE_FLOAT == pOut->columnData->info.type) {
|
if (TSDB_DATA_TYPE_FLOAT == pOut->columnData->info.type) {
|
||||||
float value = taosStr2Float(buf, NULL);
|
float value = taosStr2Float(buf, NULL);
|
||||||
colDataAppendFloat(pOut->columnData, rowIndex, &value);
|
colDataSetFloat(pOut->columnData, rowIndex, &value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
double value = taosStr2Double(buf, NULL);
|
double value = taosStr2Double(buf, NULL);
|
||||||
colDataAppendDouble(pOut->columnData, rowIndex, &value);
|
colDataSetDouble(pOut->columnData, rowIndex, &value);
|
||||||
}
|
}
|
||||||
|
|
||||||
static FORCE_INLINE void varToBool(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
static FORCE_INLINE void varToBool(char *buf, SScalarParam *pOut, int32_t rowIndex, int32_t *overflow) {
|
||||||
int64_t value = taosStr2Int64(buf, NULL, 10);
|
int64_t value = taosStr2Int64(buf, NULL, 10);
|
||||||
bool v = (value != 0) ? true : false;
|
bool v = (value != 0) ? true : false;
|
||||||
colDataAppendInt8(pOut->columnData, rowIndex, (int8_t *)&v);
|
colDataSetInt8(pOut->columnData, rowIndex, (int8_t *)&v);
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo remove this malloc
|
// todo remove this malloc
|
||||||
|
@ -357,7 +357,7 @@ static FORCE_INLINE void varToNchar(char *buf, SScalarParam *pOut, int32_t rowIn
|
||||||
}
|
}
|
||||||
varDataSetLen(t, len);
|
varDataSetLen(t, len);
|
||||||
|
|
||||||
colDataAppend(pOut->columnData, rowIndex, t, false);
|
colDataSetVal(pOut->columnData, rowIndex, t, false);
|
||||||
taosMemoryFree(t);
|
taosMemoryFree(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ static FORCE_INLINE void ncharToVar(char *buf, SScalarParam *pOut, int32_t rowIn
|
||||||
}
|
}
|
||||||
varDataSetLen(t, len);
|
varDataSetLen(t, len);
|
||||||
|
|
||||||
colDataAppend(pOut->columnData, rowIndex, t, false);
|
colDataSetVal(pOut->columnData, rowIndex, t, false);
|
||||||
taosMemoryFree(t);
|
taosMemoryFree(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +409,7 @@ int32_t vectorConvertFromVarData(SSclVectorConvCtx *pCtx, int32_t *overflow) {
|
||||||
|
|
||||||
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
||||||
if (IS_HELPER_NULL(pCtx->pIn->columnData, i)) {
|
if (IS_HELPER_NULL(pCtx->pIn->columnData, i)) {
|
||||||
colDataAppendNULL(pCtx->pOut->columnData, i);
|
colDataSetNULL(pCtx->pOut->columnData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -599,7 +599,7 @@ int32_t vectorConvertToVarData(SSclVectorConvCtx *pCtx) {
|
||||||
pCtx->inType == TSDB_DATA_TYPE_TIMESTAMP) {
|
pCtx->inType == TSDB_DATA_TYPE_TIMESTAMP) {
|
||||||
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -610,13 +610,13 @@ int32_t vectorConvertToVarData(SSclVectorConvCtx *pCtx) {
|
||||||
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
varToNchar(tmp, pCtx->pOut, i, NULL);
|
varToNchar(tmp, pCtx->pOut, i, NULL);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutputCol, i, (char *)tmp, false);
|
colDataSetVal(pOutputCol, i, (char *)tmp, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IS_UNSIGNED_NUMERIC_TYPE(pCtx->inType)) {
|
} else if (IS_UNSIGNED_NUMERIC_TYPE(pCtx->inType)) {
|
||||||
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -627,13 +627,13 @@ int32_t vectorConvertToVarData(SSclVectorConvCtx *pCtx) {
|
||||||
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
varToNchar(tmp, pCtx->pOut, i, NULL);
|
varToNchar(tmp, pCtx->pOut, i, NULL);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutputCol, i, (char *)tmp, false);
|
colDataSetVal(pOutputCol, i, (char *)tmp, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (IS_FLOAT_TYPE(pCtx->inType)) {
|
} else if (IS_FLOAT_TYPE(pCtx->inType)) {
|
||||||
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
for (int32_t i = pCtx->startIndex; i <= pCtx->endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -644,7 +644,7 @@ int32_t vectorConvertToVarData(SSclVectorConvCtx *pCtx) {
|
||||||
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
if (pCtx->outType == TSDB_DATA_TYPE_NCHAR) {
|
||||||
varToNchar(tmp, pCtx->pOut, i, NULL);
|
varToNchar(tmp, pCtx->pOut, i, NULL);
|
||||||
} else {
|
} else {
|
||||||
colDataAppend(pOutputCol, i, (char *)tmp, false);
|
colDataSetVal(pOutputCol, i, (char *)tmp, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -722,52 +722,52 @@ int32_t vectorConvertSingleColImpl(const SScalarParam *pIn, SScalarParam *pOut,
|
||||||
case TSDB_DATA_TYPE_BOOL: {
|
case TSDB_DATA_TYPE_BOOL: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool value = 0;
|
bool value = 0;
|
||||||
GET_TYPED_DATA(value, bool, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, bool, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt8(pOutputCol, i, (int8_t *)&value);
|
colDataSetInt8(pOutputCol, i, (int8_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_TINYINT: {
|
case TSDB_DATA_TYPE_TINYINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t value = 0;
|
int8_t value = 0;
|
||||||
GET_TYPED_DATA(value, int8_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, int8_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt8(pOutputCol, i, (int8_t *)&value);
|
colDataSetInt8(pOutputCol, i, (int8_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_SMALLINT: {
|
case TSDB_DATA_TYPE_SMALLINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t value = 0;
|
int16_t value = 0;
|
||||||
GET_TYPED_DATA(value, int16_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, int16_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt16(pOutputCol, i, (int16_t *)&value);
|
colDataSetInt16(pOutputCol, i, (int16_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_INT: {
|
case TSDB_DATA_TYPE_INT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t value = 0;
|
int32_t value = 0;
|
||||||
GET_TYPED_DATA(value, int32_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, int32_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt32(pOutputCol, i, (int32_t *)&value);
|
colDataSetInt32(pOutputCol, i, (int32_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -775,91 +775,91 @@ int32_t vectorConvertSingleColImpl(const SScalarParam *pIn, SScalarParam *pOut,
|
||||||
case TSDB_DATA_TYPE_TIMESTAMP: {
|
case TSDB_DATA_TYPE_TIMESTAMP: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t value = 0;
|
int64_t value = 0;
|
||||||
GET_TYPED_DATA(value, int64_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, int64_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt64(pOutputCol, i, (int64_t *)&value);
|
colDataSetInt64(pOutputCol, i, (int64_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_UTINYINT: {
|
case TSDB_DATA_TYPE_UTINYINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t value = 0;
|
uint8_t value = 0;
|
||||||
GET_TYPED_DATA(value, uint8_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, uint8_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt8(pOutputCol, i, (int8_t *)&value);
|
colDataSetInt8(pOutputCol, i, (int8_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_USMALLINT: {
|
case TSDB_DATA_TYPE_USMALLINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t value = 0;
|
uint16_t value = 0;
|
||||||
GET_TYPED_DATA(value, uint16_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, uint16_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt16(pOutputCol, i, (int16_t *)&value);
|
colDataSetInt16(pOutputCol, i, (int16_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_UINT: {
|
case TSDB_DATA_TYPE_UINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t value = 0;
|
uint32_t value = 0;
|
||||||
GET_TYPED_DATA(value, uint32_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, uint32_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt32(pOutputCol, i, (int32_t *)&value);
|
colDataSetInt32(pOutputCol, i, (int32_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_UBIGINT: {
|
case TSDB_DATA_TYPE_UBIGINT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t value = 0;
|
uint64_t value = 0;
|
||||||
GET_TYPED_DATA(value, uint64_t, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, uint64_t, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendInt64(pOutputCol, i, (int64_t *)&value);
|
colDataSetInt64(pOutputCol, i, (int64_t *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
float value = 0;
|
float value = 0;
|
||||||
GET_TYPED_DATA(value, float, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, float, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendFloat(pOutputCol, i, (float *)&value);
|
colDataSetFloat(pOutputCol, i, (float *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
case TSDB_DATA_TYPE_DOUBLE: {
|
||||||
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
for (int32_t i = cCtx.startIndex; i <= cCtx.endIndex; ++i) {
|
||||||
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
if (colDataIsNull_f(pInputCol->nullbitmap, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double value = 0;
|
double value = 0;
|
||||||
GET_TYPED_DATA(value, double, cCtx.inType, colDataGetData(pInputCol, i));
|
GET_TYPED_DATA(value, double, cCtx.inType, colDataGetData(pInputCol, i));
|
||||||
colDataAppendDouble(pOutputCol, i, (double *)&value);
|
colDataSetDouble(pOutputCol, i, (double *)&value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1007,11 +1007,11 @@ static void vectorMathAddHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pRig
|
||||||
double *output = (double *)pOutputCol->pData;
|
double *output = (double *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) + getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) + getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
||||||
|
@ -1027,11 +1027,11 @@ static void vectorMathTsAddHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pR
|
||||||
int64_t *output = (int64_t *)pOutputCol->pData;
|
int64_t *output = (int64_t *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output =
|
*output =
|
||||||
|
@ -1103,7 +1103,7 @@ void vectorMathAdd(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut
|
||||||
} else if (pLeft->numOfRows == pRight->numOfRows) {
|
} else if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(pLeftCol->pData, i) + getVectorBigintValueFnRight(pRightCol->pData, i);
|
*output = getVectorBigintValueFnLeft(pLeftCol->pData, i) + getVectorBigintValueFnRight(pRightCol->pData, i);
|
||||||
|
@ -1117,7 +1117,7 @@ void vectorMathAdd(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) + getVectorDoubleValueFnRight(RIGHT_COL, i);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) + getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1142,11 +1142,11 @@ static void vectorMathSubHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pRig
|
||||||
double *output = (double *)pOutputCol->pData;
|
double *output = (double *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = (getVectorDoubleValueFnLeft(LEFT_COL, i) - getVectorDoubleValueFnRight(RIGHT_COL, 0)) * factor;
|
*output = (getVectorDoubleValueFnLeft(LEFT_COL, i) - getVectorDoubleValueFnRight(RIGHT_COL, 0)) * factor;
|
||||||
|
@ -1162,11 +1162,11 @@ static void vectorMathTsSubHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pR
|
||||||
int64_t *output = (int64_t *)pOutputCol->pData;
|
int64_t *output = (int64_t *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output =
|
*output =
|
||||||
|
@ -1204,7 +1204,7 @@ void vectorMathSub(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut
|
||||||
} else if (pLeft->numOfRows == pRight->numOfRows) {
|
} else if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(pLeftCol->pData, i) - getVectorBigintValueFnRight(pRightCol->pData, i);
|
*output = getVectorBigintValueFnLeft(pLeftCol->pData, i) - getVectorBigintValueFnRight(pRightCol->pData, i);
|
||||||
|
@ -1218,7 +1218,7 @@ void vectorMathSub(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) - getVectorDoubleValueFnRight(RIGHT_COL, i);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) - getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1243,11 +1243,11 @@ static void vectorMathMultiplyHelper(SColumnInfoData *pLeftCol, SColumnInfoData
|
||||||
double *output = (double *)pOutputCol->pData;
|
double *output = (double *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) * getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) * getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
||||||
|
@ -1273,7 +1273,7 @@ void vectorMathMultiply(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) * getVectorDoubleValueFnRight(RIGHT_COL, i);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) * getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1306,18 +1306,18 @@ void vectorMathDivide(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *p
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL || (getVectorDoubleValueFnRight(RIGHT_COL, i) == 0)) { // divide by 0 check
|
if (IS_NULL || (getVectorDoubleValueFnRight(RIGHT_COL, i) == 0)) { // divide by 0 check
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) / getVectorDoubleValueFnRight(RIGHT_COL, i);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) / getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
}
|
}
|
||||||
} else if (pLeft->numOfRows == 1) {
|
} else if (pLeft->numOfRows == 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pLeftCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, pRight->numOfRows);
|
colDataSetNNULL(pOutputCol, 0, pRight->numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < pRight->numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < pRight->numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pRightCol, i) || (getVectorDoubleValueFnRight(RIGHT_COL, i) == 0)) { // divide by 0 check
|
if (IS_HELPER_NULL(pRightCol, i) || (getVectorDoubleValueFnRight(RIGHT_COL, i) == 0)) { // divide by 0 check
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, 0) / getVectorDoubleValueFnRight(RIGHT_COL, i);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, 0) / getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1326,11 +1326,11 @@ void vectorMathDivide(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *p
|
||||||
} else if (pRight->numOfRows == 1) {
|
} else if (pRight->numOfRows == 1) {
|
||||||
if (IS_HELPER_NULL(pRightCol, 0) ||
|
if (IS_HELPER_NULL(pRightCol, 0) ||
|
||||||
(getVectorDoubleValueFnRight(RIGHT_COL, 0) == 0)) { // Set pLeft->numOfRows NULL value (divde by 0 check)
|
(getVectorDoubleValueFnRight(RIGHT_COL, 0) == 0)) { // Set pLeft->numOfRows NULL value (divde by 0 check)
|
||||||
colDataAppendNNULL(pOutputCol, 0, pLeft->numOfRows);
|
colDataSetNNULL(pOutputCol, 0, pLeft->numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < pLeft->numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < pLeft->numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) / getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
*output = getVectorDoubleValueFnLeft(LEFT_COL, i) / getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
||||||
|
@ -1361,14 +1361,14 @@ void vectorMathRemainder(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double lx = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
double lx = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
||||||
double rx = getVectorDoubleValueFnRight(RIGHT_COL, i);
|
double rx = getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
if (isnan(lx) || isinf(lx) || isnan(rx) || isinf(rx) || FLT_EQUAL(rx, 0)) {
|
if (isnan(lx) || isinf(lx) || isnan(rx) || isinf(rx) || FLT_EQUAL(rx, 0)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1377,17 +1377,17 @@ void vectorMathRemainder(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam
|
||||||
} else if (pLeft->numOfRows == 1) {
|
} else if (pLeft->numOfRows == 1) {
|
||||||
double lx = getVectorDoubleValueFnLeft(LEFT_COL, 0);
|
double lx = getVectorDoubleValueFnLeft(LEFT_COL, 0);
|
||||||
if (IS_HELPER_NULL(pLeftCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pLeftCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, pRight->numOfRows);
|
colDataSetNNULL(pOutputCol, 0, pRight->numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < pRight->numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < pRight->numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pRightCol, i)) {
|
if (IS_HELPER_NULL(pRightCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double rx = getVectorDoubleValueFnRight(RIGHT_COL, i);
|
double rx = getVectorDoubleValueFnRight(RIGHT_COL, i);
|
||||||
if (isnan(rx) || isinf(rx) || FLT_EQUAL(rx, 0)) {
|
if (isnan(rx) || isinf(rx) || FLT_EQUAL(rx, 0)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1397,17 +1397,17 @@ void vectorMathRemainder(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam
|
||||||
} else if (pRight->numOfRows == 1) {
|
} else if (pRight->numOfRows == 1) {
|
||||||
double rx = getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
double rx = getVectorDoubleValueFnRight(RIGHT_COL, 0);
|
||||||
if (IS_HELPER_NULL(pRightCol, 0) || FLT_EQUAL(rx, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0) || FLT_EQUAL(rx, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, pLeft->numOfRows);
|
colDataSetNNULL(pOutputCol, 0, pLeft->numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < pLeft->numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < pLeft->numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
double lx = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
double lx = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
||||||
if (isnan(lx) || isinf(lx)) {
|
if (isnan(lx) || isinf(lx)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1436,7 +1436,7 @@ void vectorMathMinus(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pO
|
||||||
double *output = (double *)pOutputCol->pData;
|
double *output = (double *)pOutputCol->pData;
|
||||||
for (; i < pLeft->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pLeft->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
double result = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
double result = getVectorDoubleValueFnLeft(LEFT_COL, i);
|
||||||
|
@ -1451,11 +1451,11 @@ void vectorAssign(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
pOut->numOfRows = pLeft->numOfRows;
|
pOut->numOfRows = pLeft->numOfRows;
|
||||||
|
|
||||||
if (colDataIsNull_s(pRight->columnData, 0)) {
|
if (colDataIsNull_s(pRight->columnData, 0)) {
|
||||||
colDataAppendNNULL(pOutputCol, 0, pOut->numOfRows);
|
colDataSetNNULL(pOutputCol, 0, pOut->numOfRows);
|
||||||
} else {
|
} else {
|
||||||
char *d = colDataGetData(pRight->columnData, 0);
|
char *d = colDataGetData(pRight->columnData, 0);
|
||||||
for (int32_t i = 0; i < pOut->numOfRows; ++i) {
|
for (int32_t i = 0; i < pOut->numOfRows; ++i) {
|
||||||
colDataAppend(pOutputCol, i, d, false);
|
colDataSetVal(pOutputCol, i, d, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1471,11 +1471,11 @@ static void vectorBitAndHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pRigh
|
||||||
int64_t *output = (int64_t *)pOutputCol->pData;
|
int64_t *output = (int64_t *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(LEFT_COL, i) & getVectorBigintValueFnRight(RIGHT_COL, 0);
|
*output = getVectorBigintValueFnLeft(LEFT_COL, i) & getVectorBigintValueFnRight(RIGHT_COL, 0);
|
||||||
|
@ -1501,7 +1501,7 @@ void vectorBitAnd(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(LEFT_COL, i) & getVectorBigintValueFnRight(RIGHT_COL, i);
|
*output = getVectorBigintValueFnLeft(LEFT_COL, i) & getVectorBigintValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1524,12 +1524,12 @@ static void vectorBitOrHelper(SColumnInfoData *pLeftCol, SColumnInfoData *pRight
|
||||||
int64_t *output = (int64_t *)pOutputCol->pData;
|
int64_t *output = (int64_t *)pOutputCol->pData;
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
if (IS_HELPER_NULL(pRightCol, 0)) { // Set pLeft->numOfRows NULL value
|
||||||
colDataAppendNNULL(pOutputCol, 0, numOfRows);
|
colDataSetNNULL(pOutputCol, 0, numOfRows);
|
||||||
} else {
|
} else {
|
||||||
int64_t rx = getVectorBigintValueFnRight(RIGHT_COL, 0);
|
int64_t rx = getVectorBigintValueFnRight(RIGHT_COL, 0);
|
||||||
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
for (; i >= 0 && i < numOfRows; i += step, output += 1) {
|
||||||
if (IS_HELPER_NULL(pLeftCol, i)) {
|
if (IS_HELPER_NULL(pLeftCol, i)) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(LEFT_COL, i) | rx;
|
*output = getVectorBigintValueFnLeft(LEFT_COL, i) | rx;
|
||||||
|
@ -1555,7 +1555,7 @@ void vectorBitOr(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
if (pLeft->numOfRows == pRight->numOfRows) {
|
if (pLeft->numOfRows == pRight->numOfRows) {
|
||||||
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
for (; i < pRight->numOfRows && i >= 0; i += step, output += 1) {
|
||||||
if (IS_NULL) {
|
if (IS_NULL) {
|
||||||
colDataAppendNULL(pOutputCol, i);
|
colDataSetNULL(pOutputCol, i);
|
||||||
continue; // TODO set null or ignore
|
continue; // TODO set null or ignore
|
||||||
}
|
}
|
||||||
*output = getVectorBigintValueFnLeft(LEFT_COL, i) | getVectorBigintValueFnRight(RIGHT_COL, i);
|
*output = getVectorBigintValueFnLeft(LEFT_COL, i) | getVectorBigintValueFnRight(RIGHT_COL, i);
|
||||||
|
@ -1617,7 +1617,7 @@ int32_t doVectorCompareImpl(SScalarParam *pLeft, SScalarParam *pRight, SScalarPa
|
||||||
|
|
||||||
if (IS_HELPER_NULL(pLeft->columnData, leftIndex) || IS_HELPER_NULL(pRight->columnData, rightIndex)) {
|
if (IS_HELPER_NULL(pLeft->columnData, leftIndex) || IS_HELPER_NULL(pRight->columnData, rightIndex)) {
|
||||||
bool res = false;
|
bool res = false;
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataSetInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1640,10 +1640,10 @@ int32_t doVectorCompareImpl(SScalarParam *pLeft, SScalarParam *pRight, SScalarPa
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&result);
|
colDataSetInt8(pOut->columnData, i, (int8_t *)&result);
|
||||||
} else {
|
} else {
|
||||||
bool res = filterDoCompare(fp, optr, pLeftData, pRightData);
|
bool res = filterDoCompare(fp, optr, pLeftData, pRightData);
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataSetInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
if (res) {
|
if (res) {
|
||||||
++num;
|
++num;
|
||||||
}
|
}
|
||||||
|
@ -1690,13 +1690,13 @@ void doVectorCompare(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pO
|
||||||
for (; i >= 0 && i < pLeft->numOfRows; i += step) {
|
for (; i >= 0 && i < pLeft->numOfRows; i += step) {
|
||||||
if (IS_HELPER_NULL(pLeft->columnData, i)) {
|
if (IS_HELPER_NULL(pLeft->columnData, i)) {
|
||||||
bool res = false;
|
bool res = false;
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataSetInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *pLeftData = colDataGetData(pLeft->columnData, i);
|
char *pLeftData = colDataGetData(pLeft->columnData, i);
|
||||||
bool res = filterDoCompare(fp, optr, pLeftData, pRight->pHashFilter);
|
bool res = filterDoCompare(fp, optr, pLeftData, pRight->pHashFilter);
|
||||||
colDataAppendInt8(pOut->columnData, i, (int8_t *)&res);
|
colDataSetInt8(pOut->columnData, i, (int8_t *)&res);
|
||||||
if (res) {
|
if (res) {
|
||||||
pOut->numOfQualified++;
|
pOut->numOfQualified++;
|
||||||
}
|
}
|
||||||
|
@ -1783,7 +1783,7 @@ void vectorNotMatch(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOu
|
||||||
void vectorIsNull(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t _ord) {
|
void vectorIsNull(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t _ord) {
|
||||||
for (int32_t i = 0; i < pLeft->numOfRows; ++i) {
|
for (int32_t i = 0; i < pLeft->numOfRows; ++i) {
|
||||||
int8_t v = IS_HELPER_NULL(pLeft->columnData, i) ? 1 : 0;
|
int8_t v = IS_HELPER_NULL(pLeft->columnData, i) ? 1 : 0;
|
||||||
colDataAppendInt8(pOut->columnData, i, &v);
|
colDataSetInt8(pOut->columnData, i, &v);
|
||||||
}
|
}
|
||||||
pOut->numOfRows = pLeft->numOfRows;
|
pOut->numOfRows = pLeft->numOfRows;
|
||||||
}
|
}
|
||||||
|
@ -1791,7 +1791,7 @@ void vectorIsNull(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
void vectorNotNull(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t _ord) {
|
void vectorNotNull(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut, int32_t _ord) {
|
||||||
for (int32_t i = 0; i < pLeft->numOfRows; ++i) {
|
for (int32_t i = 0; i < pLeft->numOfRows; ++i) {
|
||||||
int8_t v = IS_HELPER_NULL(pLeft->columnData, i) ? 0 : 1;
|
int8_t v = IS_HELPER_NULL(pLeft->columnData, i) ? 0 : 1;
|
||||||
colDataAppendInt8(pOut->columnData, i, &v);
|
colDataSetInt8(pOut->columnData, i, &v);
|
||||||
}
|
}
|
||||||
pOut->numOfRows = pLeft->numOfRows;
|
pOut->numOfRows = pLeft->numOfRows;
|
||||||
}
|
}
|
||||||
|
@ -1801,7 +1801,7 @@ void vectorIsTrue(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pOut,
|
||||||
for (int32_t i = 0; i < pOut->numOfRows; ++i) {
|
for (int32_t i = 0; i < pOut->numOfRows; ++i) {
|
||||||
if (colDataIsNull_s(pOut->columnData, i)) {
|
if (colDataIsNull_s(pOut->columnData, i)) {
|
||||||
int8_t v = 0;
|
int8_t v = 0;
|
||||||
colDataAppendInt8(pOut->columnData, i, &v);
|
colDataSetInt8(pOut->columnData, i, &v);
|
||||||
colDataClearNull_f(pOut->columnData->nullbitmap, i);
|
colDataClearNull_f(pOut->columnData->nullbitmap, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1844,7 +1844,7 @@ void vectorJsonContains(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam
|
||||||
getJsonValue(pLeftData, jsonKey, &isExist);
|
getJsonValue(pLeftData, jsonKey, &isExist);
|
||||||
}
|
}
|
||||||
|
|
||||||
colDataAppend(pOutputCol, i, (const char *)(&isExist), false);
|
colDataSetVal(pOutputCol, i, (const char *)(&isExist), false);
|
||||||
}
|
}
|
||||||
taosMemoryFree(jsonKey);
|
taosMemoryFree(jsonKey);
|
||||||
}
|
}
|
||||||
|
@ -1870,7 +1870,7 @@ void vectorJsonArrow(SScalarParam *pLeft, SScalarParam *pRight, SScalarParam *pO
|
||||||
bool isExist = false;
|
bool isExist = false;
|
||||||
STagVal value = getJsonValue(pLeftData, jsonKey, &isExist);
|
STagVal value = getJsonValue(pLeftData, jsonKey, &isExist);
|
||||||
char *data = isExist ? tTagValToData(&value, true) : NULL;
|
char *data = isExist ? tTagValToData(&value, true) : NULL;
|
||||||
colDataAppend(pOutputCol, i, data, data == NULL);
|
colDataSetVal(pOutputCol, i, data, data == NULL);
|
||||||
if (isExist && IS_VAR_DATA_TYPE(value.type) && data) {
|
if (isExist && IS_VAR_DATA_TYPE(value.type) && data) {
|
||||||
taosMemoryFree(data);
|
taosMemoryFree(data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
||||||
|
|
||||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pColumn, i, (const char *)value, false);
|
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||||
value = (char *)value + varDataTLen(value);
|
value = (char *)value + varDataTLen(value);
|
||||||
} else {
|
} else {
|
||||||
|
@ -135,7 +135,7 @@ void flttMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
||||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||||
|
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pColumn, i, (const char *)value, false);
|
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||||
value = (char *)value + varDataTLen(value);
|
value = (char *)value + varDataTLen(value);
|
||||||
} else {
|
} else {
|
||||||
|
@ -634,8 +634,8 @@ TEST(columnTest, binary_column_is_null) {
|
||||||
flttMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
flttMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
||||||
|
|
||||||
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
||||||
colDataAppend(pcolumn, 2, NULL, true);
|
colDataSetVal(pcolumn, 2, NULL, true);
|
||||||
colDataAppend(pcolumn, 4, NULL, true);
|
colDataSetVal(pcolumn, 4, NULL, true);
|
||||||
flttMakeOpNode(&opNode, OP_TYPE_IS_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
flttMakeOpNode(&opNode, OP_TYPE_IS_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
||||||
|
|
||||||
SFilterInfo *filter = NULL;
|
SFilterInfo *filter = NULL;
|
||||||
|
@ -682,7 +682,7 @@ TEST(columnTest, binary_column_is_not_null) {
|
||||||
flttMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
flttMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
||||||
|
|
||||||
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
||||||
colDataAppend(pcolumn, 4, NULL, true);
|
colDataSetVal(pcolumn, 4, NULL, true);
|
||||||
|
|
||||||
flttMakeOpNode(&opNode, OP_TYPE_IS_NOT_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
flttMakeOpNode(&opNode, OP_TYPE_IS_NOT_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,7 @@ void scltMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
||||||
res->info.rows = rowNum;
|
res->info.rows = rowNum;
|
||||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pColumn, i, (const char *)value, false);
|
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||||
value = (char *)value + varDataTLen(value);
|
value = (char *)value + varDataTLen(value);
|
||||||
} else {
|
} else {
|
||||||
|
@ -183,7 +183,7 @@ void scltMakeColumnNode(SNode **pNode, SSDataBlock **block, int32_t dataType, in
|
||||||
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
SColumnInfoData *pColumn = (SColumnInfoData *)taosArrayGetLast(res->pDataBlock);
|
||||||
|
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pColumn, i, (const char *)value, false);
|
colDataSetVal(pColumn, i, (const char *)value, false);
|
||||||
if (IS_VAR_DATA_TYPE(dataType)) {
|
if (IS_VAR_DATA_TYPE(dataType)) {
|
||||||
value = (char *)value + varDataTLen(value);
|
value = (char *)value + varDataTLen(value);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1880,8 +1880,8 @@ TEST(columnTest, binary_column_is_null) {
|
||||||
scltMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
scltMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
||||||
|
|
||||||
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
||||||
colDataAppend(pcolumn, 2, NULL, true);
|
colDataSetVal(pcolumn, 2, NULL, true);
|
||||||
colDataAppend(pcolumn, 4, NULL, true);
|
colDataSetVal(pcolumn, 4, NULL, true);
|
||||||
|
|
||||||
scltMakeOpNode(&opNode, OP_TYPE_IS_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
scltMakeOpNode(&opNode, OP_TYPE_IS_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
||||||
|
|
||||||
|
@ -1924,7 +1924,7 @@ TEST(columnTest, binary_column_is_not_null) {
|
||||||
scltMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
scltMakeColumnNode(&pLeft, &src, TSDB_DATA_TYPE_BINARY, 3, rowNum, leftv);
|
||||||
|
|
||||||
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
SColumnInfoData *pcolumn = (SColumnInfoData *)taosArrayGetLast(src->pDataBlock);
|
||||||
colDataAppend(pcolumn, 4, NULL, true);
|
colDataSetVal(pcolumn, 4, NULL, true);
|
||||||
|
|
||||||
scltMakeOpNode(&opNode, OP_TYPE_IS_NOT_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
scltMakeOpNode(&opNode, OP_TYPE_IS_NOT_NULL, TSDB_DATA_TYPE_BOOL, pLeft, NULL);
|
||||||
|
|
||||||
|
@ -2030,7 +2030,7 @@ void scltMakeDataBlock(SScalarParam **pInput, int32_t type, void *pVal, int32_t
|
||||||
|
|
||||||
if (setVal) {
|
if (setVal) {
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
colDataAppend(input->columnData, i, (const char *)pVal, false);
|
colDataSetVal(input->columnData, i, (const char *)pVal, false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// memset(input->data, 0, num * bytes);
|
// memset(input->data, 0, num * bytes);
|
||||||
|
@ -2225,7 +2225,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int8_t v = val_tinyint + i;
|
int8_t v = val_tinyint + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("tiny_int before ABS:%d\n", v);
|
PRINTF("tiny_int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2243,7 +2243,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int8_t v = val_tinyint + i;
|
int8_t v = val_tinyint + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("tiny_int before ABS:%d\n", v);
|
PRINTF("tiny_int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2263,7 +2263,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int16_t v = val_smallint + i;
|
int16_t v = val_smallint + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("small_int before ABS:%d\n", v);
|
PRINTF("small_int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2281,7 +2281,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int16_t v = val_smallint + i;
|
int16_t v = val_smallint + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("small_int before ABS:%d\n", v);
|
PRINTF("small_int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2301,7 +2301,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int32_t v = val_int + i;
|
int32_t v = val_int + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("int before ABS:%d\n", v);
|
PRINTF("int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2319,7 +2319,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
int32_t v = val_int + i;
|
int32_t v = val_int + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("int before ABS:%d\n", v);
|
PRINTF("int before ABS:%d\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2339,7 +2339,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
float v = val_float + i;
|
float v = val_float + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("float before ABS:%f\n", v);
|
PRINTF("float before ABS:%f\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2357,7 +2357,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
float v = val_float + i;
|
float v = val_float + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("float before ABS:%f\n", v);
|
PRINTF("float before ABS:%f\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2377,7 +2377,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
double v = val_double + i;
|
double v = val_double + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("double before ABS:%f\n", v);
|
PRINTF("double before ABS:%f\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2395,7 +2395,7 @@ TEST(ScalarFunctionTest, absFunction_column) {
|
||||||
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, type, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
double v = val_double + i;
|
double v = val_double + i;
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&v, false);
|
colDataSetVal(pInput->columnData, i, (const char *)&v, false);
|
||||||
PRINTF("double before ABS:%f\n", v);
|
PRINTF("double before ABS:%f\n", v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2466,7 +2466,7 @@ TEST(ScalarFunctionTest, sinFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
||||||
PRINTF("tiny_int before SIN:%d\n", *(int8_t *)colDataGetData(pInput->columnData, i));
|
PRINTF("tiny_int before SIN:%d\n", *(int8_t *)colDataGetData(pInput->columnData, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2485,7 +2485,7 @@ TEST(ScalarFunctionTest, sinFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_float[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_float[i], false);
|
||||||
PRINTF("float before SIN:%f\n", *((float *)colDataGetData(pInput->columnData, i)));
|
PRINTF("float before SIN:%f\n", *((float *)colDataGetData(pInput->columnData, i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2556,7 +2556,7 @@ TEST(ScalarFunctionTest, cosFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
||||||
PRINTF("tiny_int before COS:%d\n", *(int8_t *)colDataGetData(pInput->columnData, i));
|
PRINTF("tiny_int before COS:%d\n", *(int8_t *)colDataGetData(pInput->columnData, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2575,7 +2575,7 @@ TEST(ScalarFunctionTest, cosFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_float[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_float[i], false);
|
||||||
PRINTF("float before COS:%f\n", *(float *)colDataGetData(pInput->columnData, i));
|
PRINTF("float before COS:%f\n", *(float *)colDataGetData(pInput->columnData, i));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2646,7 +2646,7 @@ TEST(ScalarFunctionTest, tanFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
||||||
PRINTF("tiny_int before TAN:%d\n", *((int8_t *)colDataGetData(pInput->columnData, i)));
|
PRINTF("tiny_int before TAN:%d\n", *((int8_t *)colDataGetData(pInput->columnData, i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2665,7 +2665,7 @@ TEST(ScalarFunctionTest, tanFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_float[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_float[i], false);
|
||||||
PRINTF("float before TAN:%f\n", *((float *)colDataGetData(pInput->columnData, i)));
|
PRINTF("float before TAN:%f\n", *((float *)colDataGetData(pInput->columnData, i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2736,7 +2736,7 @@ TEST(ScalarFunctionTest, asinFunction_column) {
|
||||||
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
scltMakeDataBlock(&pInput, type, 0, rowNum, false);
|
||||||
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
scltMakeDataBlock(&pOutput, otype, 0, rowNum, false);
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
colDataSetVal(pInput->columnData, i, (const char *)&val_tinyint[i], false);
|
||||||
PRINTF("tiny_int before ASIN:%d\n", *((int8_t *)colDataGetData(pInput->columnData, i)));
|
PRINTF("tiny_int before ASIN:%d\n", *((int8_t *)colDataGetData(pInput->columnData, i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3395,7 +3395,7 @@ TEST(ScalarFunctionTest, logFunction_column) {
|
||||||
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
||||||
pInput[i] = *input[i];
|
pInput[i] = *input[i];
|
||||||
for (int32_t j = 0; j < rowNum; ++j) {
|
for (int32_t j = 0; j < rowNum; ++j) {
|
||||||
colDataAppend(pInput[i].columnData, j, (const char *)&val_tinyint[i][j], false);
|
colDataSetVal(pInput[i].columnData, j, (const char *)&val_tinyint[i][j], false);
|
||||||
}
|
}
|
||||||
PRINTF("tiny_int before LOG:%d,%d,%d\n", *((int8_t *)pInput[i].data + 0), *((int8_t *)pInput[i].data + 1),
|
PRINTF("tiny_int before LOG:%d,%d,%d\n", *((int8_t *)pInput[i].data + 0), *((int8_t *)pInput[i].data + 1),
|
||||||
*((int8_t *)pInput[i].data + 2));
|
*((int8_t *)pInput[i].data + 2));
|
||||||
|
@ -3419,7 +3419,7 @@ TEST(ScalarFunctionTest, logFunction_column) {
|
||||||
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
||||||
pInput[i] = *input[i];
|
pInput[i] = *input[i];
|
||||||
for (int32_t j = 0; j < rowNum; ++j) {
|
for (int32_t j = 0; j < rowNum; ++j) {
|
||||||
colDataAppend(pInput[i].columnData, j, (const char *)&val_float[i][j], false);
|
colDataSetVal(pInput[i].columnData, j, (const char *)&val_float[i][j], false);
|
||||||
}
|
}
|
||||||
PRINTF("float before LOG:%f,%f,%f\n", *((float *)colDataGetData(pInput[i], 0)),
|
PRINTF("float before LOG:%f,%f,%f\n", *((float *)colDataGetData(pInput[i], 0)),
|
||||||
*((float *)colDataGetData(pInput[i], 1)), *((float *)colDataGetData(pInput[i], 2)));
|
*((float *)colDataGetData(pInput[i], 1)), *((float *)colDataGetData(pInput[i], 2)));
|
||||||
|
@ -3442,12 +3442,12 @@ TEST(ScalarFunctionTest, logFunction_column) {
|
||||||
scltMakeDataBlock(&input[0], TSDB_DATA_TYPE_TINYINT, 0, rowNum, false);
|
scltMakeDataBlock(&input[0], TSDB_DATA_TYPE_TINYINT, 0, rowNum, false);
|
||||||
pInput[0] = *input[0];
|
pInput[0] = *input[0];
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput[0].columnData, i, (const char *)¶m0[i], false);
|
colDataSetVal(pInput[0].columnData, i, (const char *)¶m0[i], false);
|
||||||
}
|
}
|
||||||
scltMakeDataBlock(&input[1], TSDB_DATA_TYPE_FLOAT, 0, rowNum, false);
|
scltMakeDataBlock(&input[1], TSDB_DATA_TYPE_FLOAT, 0, rowNum, false);
|
||||||
pInput[1] = *input[1];
|
pInput[1] = *input[1];
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput[1].columnData, i, (const char *)¶m1[i], false);
|
colDataSetVal(pInput[1].columnData, i, (const char *)¶m1[i], false);
|
||||||
}
|
}
|
||||||
PRINTF("tiny_int, float before LOG:{%d,%f}, {%d,%f}, {%d,%f}\n", *((int8_t *)pInput[0].data + 0),
|
PRINTF("tiny_int, float before LOG:{%d,%f}, {%d,%f}, {%d,%f}\n", *((int8_t *)pInput[0].data + 0),
|
||||||
*((float *)pInput[1].data + 0), *((int8_t *)pInput[0].data + 1), *((float *)pInput[1].data + 1),
|
*((float *)pInput[1].data + 0), *((int8_t *)pInput[0].data + 1), *((float *)pInput[1].data + 1),
|
||||||
|
@ -3558,7 +3558,7 @@ TEST(ScalarFunctionTest, powFunction_column) {
|
||||||
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
||||||
pInput[i] = *input[i];
|
pInput[i] = *input[i];
|
||||||
for (int32_t j = 0; j < rowNum; ++j) {
|
for (int32_t j = 0; j < rowNum; ++j) {
|
||||||
colDataAppend(pInput[i].columnData, j, (const char *)&val_tinyint[i][j], false);
|
colDataSetVal(pInput[i].columnData, j, (const char *)&val_tinyint[i][j], false);
|
||||||
}
|
}
|
||||||
PRINTF("tiny_int before POW:%d,%d,%d\n", *((int8_t *)pInput[i].data + 0), *((int8_t *)pInput[i].data + 1),
|
PRINTF("tiny_int before POW:%d,%d,%d\n", *((int8_t *)pInput[i].data + 0), *((int8_t *)pInput[i].data + 1),
|
||||||
*((int8_t *)pInput[i].data + 2));
|
*((int8_t *)pInput[i].data + 2));
|
||||||
|
@ -3583,7 +3583,7 @@ TEST(ScalarFunctionTest, powFunction_column) {
|
||||||
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
scltMakeDataBlock(&input[i], type, 0, rowNum, false);
|
||||||
pInput[i] = *input[i];
|
pInput[i] = *input[i];
|
||||||
for (int32_t j = 0; j < rowNum; ++j) {
|
for (int32_t j = 0; j < rowNum; ++j) {
|
||||||
colDataAppend(pInput[i].columnData, j, (const char *)&val_float[i][j], false);
|
colDataSetVal(pInput[i].columnData, j, (const char *)&val_float[i][j], false);
|
||||||
}
|
}
|
||||||
PRINTF("float before POW:%f,%f,%f\n", *((float *)pInput[i].data + 0), *((float *)pInput[i].data + 1),
|
PRINTF("float before POW:%f,%f,%f\n", *((float *)pInput[i].data + 0), *((float *)pInput[i].data + 1),
|
||||||
*((float *)pInput[i].data + 2));
|
*((float *)pInput[i].data + 2));
|
||||||
|
@ -3606,12 +3606,12 @@ TEST(ScalarFunctionTest, powFunction_column) {
|
||||||
scltMakeDataBlock(&input[0], TSDB_DATA_TYPE_TINYINT, 0, rowNum, false);
|
scltMakeDataBlock(&input[0], TSDB_DATA_TYPE_TINYINT, 0, rowNum, false);
|
||||||
pInput[0] = *input[0];
|
pInput[0] = *input[0];
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput[0].columnData, i, (const char *)¶m0[i], false);
|
colDataSetVal(pInput[0].columnData, i, (const char *)¶m0[i], false);
|
||||||
}
|
}
|
||||||
scltMakeDataBlock(&input[1], TSDB_DATA_TYPE_FLOAT, 0, rowNum, false);
|
scltMakeDataBlock(&input[1], TSDB_DATA_TYPE_FLOAT, 0, rowNum, false);
|
||||||
pInput[1] = *input[1];
|
pInput[1] = *input[1];
|
||||||
for (int32_t i = 0; i < rowNum; ++i) {
|
for (int32_t i = 0; i < rowNum; ++i) {
|
||||||
colDataAppend(pInput[1].columnData, i, (const char *)¶m1[i], false);
|
colDataSetVal(pInput[1].columnData, i, (const char *)¶m1[i], false);
|
||||||
}
|
}
|
||||||
PRINTF("tiny_int, float before POW:{%d,%f}, {%d,%f}, {%d,%f}\n", *((int8_t *)pInput[0].data + 0),
|
PRINTF("tiny_int, float before POW:{%d,%f}, {%d,%f}, {%d,%f}\n", *((int8_t *)pInput[0].data + 0),
|
||||||
*((float *)pInput[1].data + 0), *((int8_t *)pInput[0].data + 1), *((float *)pInput[1].data + 1),
|
*((float *)pInput[1].data + 0), *((int8_t *)pInput[0].data + 1), *((float *)pInput[1].data + 1),
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
int32_t streamDispatchReqToData(const SStreamDispatchReq* pReq, SStreamDataBlock* pData) {
|
int32_t streamDispatchReqToData(const SStreamDispatchReq* pReq, SStreamDataBlock* pData) {
|
||||||
int32_t blockNum = pReq->blockNum;
|
int32_t blockNum = pReq->blockNum;
|
||||||
SArray* pArray = taosArrayInit_s(blockNum, sizeof(SSDataBlock), blockNum);
|
SArray* pArray = taosArrayInit_s(sizeof(SSDataBlock), blockNum);
|
||||||
if (pArray == NULL) {
|
if (pArray == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef USE_UV
|
|
||||||
|
|
||||||
#include "transComm.h"
|
#include "transComm.h"
|
||||||
|
|
||||||
void* (*taosInitHandle[])(uint32_t ip, uint32_t port, char* label, int32_t numOfThreads, void* fp, void* shandle) = {
|
void* (*taosInitHandle[])(uint32_t ip, uint32_t port, char* label, int32_t numOfThreads, void* fp, void* shandle) = {
|
||||||
|
@ -88,6 +86,11 @@ void* rpcOpen(const SRpcInit* pInit) {
|
||||||
|
|
||||||
pRpc->connType = pInit->connType;
|
pRpc->connType = pInit->connType;
|
||||||
pRpc->idleTime = pInit->idleTime;
|
pRpc->idleTime = pInit->idleTime;
|
||||||
|
pRpc->parent = pInit->parent;
|
||||||
|
if (pInit->user) {
|
||||||
|
tstrncpy(pRpc->user, pInit->user, sizeof(pRpc->user));
|
||||||
|
}
|
||||||
|
|
||||||
pRpc->tcphandle =
|
pRpc->tcphandle =
|
||||||
(*taosInitHandle[pRpc->connType])(ip, pInit->localPort, pRpc->label, pRpc->numOfThreads, NULL, pRpc);
|
(*taosInitHandle[pRpc->connType])(ip, pInit->localPort, pRpc->label, pRpc->numOfThreads, NULL, pRpc);
|
||||||
|
|
||||||
|
@ -95,10 +98,6 @@ void* rpcOpen(const SRpcInit* pInit) {
|
||||||
taosMemoryFree(pRpc);
|
taosMemoryFree(pRpc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
pRpc->parent = pInit->parent;
|
|
||||||
if (pInit->user) {
|
|
||||||
tstrncpy(pRpc->user, pInit->user, sizeof(pRpc->user));
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t refId = transAddExHandle(transGetInstMgt(), pRpc);
|
int64_t refId = transAddExHandle(transGetInstMgt(), pRpc);
|
||||||
transAcquireExHandle(transGetInstMgt(), refId);
|
transAcquireExHandle(transGetInstMgt(), refId);
|
||||||
|
@ -188,5 +187,3 @@ void rpcCleanup(void) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -985,6 +985,7 @@ _RETURN:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cliDestroyBatch(SCliBatch* pBatch) {
|
static void cliDestroyBatch(SCliBatch* pBatch) {
|
||||||
|
if (pBatch == NULL) return;
|
||||||
while (!QUEUE_IS_EMPTY(&pBatch->wq)) {
|
while (!QUEUE_IS_EMPTY(&pBatch->wq)) {
|
||||||
queue* h = QUEUE_HEAD(&pBatch->wq);
|
queue* h = QUEUE_HEAD(&pBatch->wq);
|
||||||
QUEUE_REMOVE(h);
|
QUEUE_REMOVE(h);
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
#ifdef USE_UV
|
|
||||||
|
|
||||||
#include "transComm.h"
|
#include "transComm.h"
|
||||||
|
|
||||||
|
@ -67,7 +66,7 @@ int32_t transDecompressMsg(char** msg, int32_t len) {
|
||||||
|
|
||||||
char* buf = taosMemoryCalloc(1, oriLen + sizeof(STransMsgHead));
|
char* buf = taosMemoryCalloc(1, oriLen + sizeof(STransMsgHead));
|
||||||
STransMsgHead* pNewHead = (STransMsgHead*)buf;
|
STransMsgHead* pNewHead = (STransMsgHead*)buf;
|
||||||
int32_t decompLen = LZ4_decompress_safe(pCont + sizeof(STransCompMsg), pNewHead->content,
|
int32_t decompLen = LZ4_decompress_safe(pCont + sizeof(STransCompMsg), (char*)pNewHead->content,
|
||||||
len - sizeof(STransMsgHead) - sizeof(STransCompMsg), oriLen);
|
len - sizeof(STransMsgHead) - sizeof(STransCompMsg), oriLen);
|
||||||
memcpy((char*)pNewHead, (char*)pHead, sizeof(STransMsgHead));
|
memcpy((char*)pNewHead, (char*)pHead, sizeof(STransMsgHead));
|
||||||
|
|
||||||
|
@ -655,4 +654,3 @@ void transDestoryExHandle(void* handle) {
|
||||||
}
|
}
|
||||||
taosMemoryFree(handle);
|
taosMemoryFree(handle);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ SArray* taosArrayInit(size_t size, size_t elemSize) {
|
||||||
return pArray;
|
return pArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
SArray* taosArrayInit_s(size_t size, size_t elemSize, size_t initialSize) {
|
SArray* taosArrayInit_s(size_t elemSize, size_t initialSize) {
|
||||||
SArray* pArray = taosMemoryMalloc(sizeof(SArray));
|
SArray* pArray = taosMemoryMalloc(sizeof(SArray));
|
||||||
if (pArray == NULL) {
|
if (pArray == NULL) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
|
|
@ -325,7 +325,7 @@ int32_t tjsonToTArray(const SJson* pJson, const char* pName, FToObject func, SAr
|
||||||
const cJSON* jArray = tjsonGetObjectItem(pJson, pName);
|
const cJSON* jArray = tjsonGetObjectItem(pJson, pName);
|
||||||
int32_t size = tjsonGetArraySize(jArray);
|
int32_t size = tjsonGetArraySize(jArray);
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
*pArray = taosArrayInit_s(size, itemSize, size);
|
*pArray = taosArrayInit_s(itemSize, size);
|
||||||
if (NULL == *pArray) {
|
if (NULL == *pArray) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ fi
|
||||||
date
|
date
|
||||||
docker run \
|
docker run \
|
||||||
-v $REP_MOUNT_PARAM \
|
-v $REP_MOUNT_PARAM \
|
||||||
--rm --ulimit core=-1 taos_test:v1.0 sh -c "cd $REP_DIR;rm -rf debug;mkdir -p debug;cd debug;cmake .. -DBUILD_HTTP=false -DBUILD_TOOLS=true -DBUILD_TEST=true -DWEBSOCKET=true -DBUILD_TAOSX=true;make -j || exit 1"
|
--rm --ulimit core=-1 taos_test:v1.0 sh -c "pip uninstall taospy -y;pip3 install taospy==2.7.2;cd $REP_DIR;rm -rf debug;mkdir -p debug;cd debug;cmake .. -DBUILD_HTTP=false -DBUILD_TOOLS=true -DBUILD_TEST=true -DWEBSOCKET=true -DBUILD_TAOSX=true;make -j || exit 1"
|
||||||
|
|
||||||
if [[ -d ${WORKDIR}/debugNoSan ]] ;then
|
if [[ -d ${WORKDIR}/debugNoSan ]] ;then
|
||||||
echo "delete ${WORKDIR}/debugNoSan"
|
echo "delete ${WORKDIR}/debugNoSan"
|
||||||
|
@ -70,7 +70,7 @@ mv ${REP_REAL_PATH}/debug ${WORKDIR}/debugNoSan
|
||||||
date
|
date
|
||||||
docker run \
|
docker run \
|
||||||
-v $REP_MOUNT_PARAM \
|
-v $REP_MOUNT_PARAM \
|
||||||
--rm --ulimit core=-1 taos_test:v1.0 sh -c "cd $REP_DIR;rm -rf debug;mkdir -p debug;cd debug;cmake .. -DBUILD_HTTP=false -DBUILD_TOOLS=true -DBUILD_TEST=true -DWEBSOCKET=true -DBUILD_SANITIZER=1 -DTOOLS_SANITIZE=true -DTOOLS_BUILD_TYPE=Debug -DBUILD_TAOSX=true;make -j || exit 1 "
|
--rm --ulimit core=-1 taos_test:v1.0 sh -c "pip uninstall taospy -y;pip3 install taospy==2.7.2;cd $REP_DIR;rm -rf debug;mkdir -p debug;cd debug;cmake .. -DBUILD_HTTP=false -DBUILD_TOOLS=true -DBUILD_TEST=true -DWEBSOCKET=true -DBUILD_SANITIZER=1 -DTOOLS_SANITIZE=true -DTOOLS_BUILD_TYPE=Debug -DBUILD_TAOSX=true;make -j || exit 1"
|
||||||
|
|
||||||
mv ${REP_REAL_PATH}/debug ${WORKDIR}/debugSan
|
mv ${REP_REAL_PATH}/debug ${WORKDIR}/debugSan
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,8 @@ from __future__ import annotations
|
||||||
from typing import Any, Set, Tuple
|
from typing import Any, Set, Tuple
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
from typing import List
|
from typing import List
|
||||||
from typing import Optional # Type hinting, ref: https://stackoverflow.com/questions/19202633/python-3-type-hinting-for-none
|
from typing import \
|
||||||
|
Optional # Type hinting, ref: https://stackoverflow.com/questions/19202633/python-3-type-hinting-for-none
|
||||||
|
|
||||||
import textwrap
|
import textwrap
|
||||||
import time
|
import time
|
||||||
|
@ -39,7 +40,6 @@ import gc
|
||||||
import taos
|
import taos
|
||||||
from taos.tmq import *
|
from taos.tmq import *
|
||||||
|
|
||||||
|
|
||||||
from .shared.types import TdColumns, TdTags
|
from .shared.types import TdColumns, TdTags
|
||||||
|
|
||||||
# from crash_gen import ServiceManager, TdeInstance, TdeSubProcess
|
# from crash_gen import ServiceManager, TdeInstance, TdeSubProcess
|
||||||
|
@ -69,6 +69,7 @@ gSvcMgr: Optional[ServiceManager] # TODO: refactor this hack, use dep injecti
|
||||||
# logger: logging.Logger
|
# logger: logging.Logger
|
||||||
gContainer: Container
|
gContainer: Container
|
||||||
|
|
||||||
|
|
||||||
# def runThread(wt: WorkerThread):
|
# def runThread(wt: WorkerThread):
|
||||||
# wt.run()
|
# wt.run()
|
||||||
|
|
||||||
|
@ -163,7 +164,6 @@ class WorkerThread:
|
||||||
Logging.debug("[TRD] Thread Coordinator not running any more, worker thread now stopping...")
|
Logging.debug("[TRD] Thread Coordinator not running any more, worker thread now stopping...")
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
# Before we fetch the task and run it, let's ensure we properly "use" the database (not needed any more)
|
# Before we fetch the task and run it, let's ensure we properly "use" the database (not needed any more)
|
||||||
try:
|
try:
|
||||||
if (Config.getConfig().per_thread_db_connection): # most likely TRUE
|
if (Config.getConfig().per_thread_db_connection): # most likely TRUE
|
||||||
|
@ -172,7 +172,8 @@ class WorkerThread:
|
||||||
# self.useDb() # might encounter exceptions. TODO: catch
|
# self.useDb() # might encounter exceptions. TODO: catch
|
||||||
except taos.error.ProgrammingError as err:
|
except taos.error.ProgrammingError as err:
|
||||||
errno = Helper.convertErrno(err.errno)
|
errno = Helper.convertErrno(err.errno)
|
||||||
if errno in [0x383, 0x386, 0x00B, 0x014] : # invalid database, dropping, Unable to establish connection, Database not ready
|
if errno in [0x383, 0x386, 0x00B,
|
||||||
|
0x014]: # invalid database, dropping, Unable to establish connection, Database not ready
|
||||||
# ignore
|
# ignore
|
||||||
dummy = 0
|
dummy = 0
|
||||||
else:
|
else:
|
||||||
|
@ -251,6 +252,7 @@ class WorkerThread:
|
||||||
# else:
|
# else:
|
||||||
# return self._tc.getDbState().getDbConn().query(sql)
|
# return self._tc.getDbState().getDbConn().query(sql)
|
||||||
|
|
||||||
|
|
||||||
# The coordinator of all worker threads, mostly running in main thread
|
# The coordinator of all worker threads, mostly running in main thread
|
||||||
|
|
||||||
|
|
||||||
|
@ -374,7 +376,8 @@ class ThreadCoordinator:
|
||||||
# TODO: saw an error here once, let's print out stack info for err?
|
# TODO: saw an error here once, let's print out stack info for err?
|
||||||
traceback.print_stack() # Stack frame to here.
|
traceback.print_stack() # Stack frame to here.
|
||||||
Logging.info("Caused by:")
|
Logging.info("Caused by:")
|
||||||
traceback.print_exception(*sys.exc_info()) # Ref: https://www.geeksforgeeks.org/how-to-print-exception-stack-trace-in-python/
|
traceback.print_exception(
|
||||||
|
*sys.exc_info()) # Ref: https://www.geeksforgeeks.org/how-to-print-exception-stack-trace-in-python/
|
||||||
transitionFailed = True
|
transitionFailed = True
|
||||||
self._te = None # Not running any more
|
self._te = None # Not running any more
|
||||||
self._execStats.registerFailure("State transition error: {}".format(err))
|
self._execStats.registerFailure("State transition error: {}".format(err))
|
||||||
|
@ -409,7 +412,6 @@ class ThreadCoordinator:
|
||||||
# print("\n")
|
# print("\n")
|
||||||
# print(h.heap())
|
# print(h.heap())
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._syncAtBarrier() # For now just cross the barrier
|
self._syncAtBarrier() # For now just cross the barrier
|
||||||
Progress.emit(Progress.END_THREAD_STEP)
|
Progress.emit(Progress.END_THREAD_STEP)
|
||||||
|
@ -492,7 +494,6 @@ class ThreadCoordinator:
|
||||||
self._execStats = None
|
self._execStats = None
|
||||||
self._runStatus = None
|
self._runStatus = None
|
||||||
|
|
||||||
|
|
||||||
def printStats(self):
|
def printStats(self):
|
||||||
self._execStats.printStats()
|
self._execStats.printStats()
|
||||||
|
|
||||||
|
@ -564,6 +565,7 @@ class ThreadCoordinator:
|
||||||
with self._lock:
|
with self._lock:
|
||||||
self._executedTasks.append(task)
|
self._executedTasks.append(task)
|
||||||
|
|
||||||
|
|
||||||
class ThreadPool:
|
class ThreadPool:
|
||||||
def __init__(self, numThreads, maxSteps):
|
def __init__(self, numThreads, maxSteps):
|
||||||
self.numThreads = numThreads
|
self.numThreads = numThreads
|
||||||
|
@ -587,6 +589,7 @@ class ThreadPool:
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
self.threadList = [] # maybe clean up each?
|
self.threadList = [] # maybe clean up each?
|
||||||
|
|
||||||
|
|
||||||
# A queue of continguous POSITIVE integers, used by DbManager to generate continuous numbers
|
# A queue of continguous POSITIVE integers, used by DbManager to generate continuous numbers
|
||||||
# for new table names
|
# for new table names
|
||||||
|
|
||||||
|
@ -801,7 +804,8 @@ class AnyState:
|
||||||
for task in tasks:
|
for task in tasks:
|
||||||
if isinstance(task, cls):
|
if isinstance(task, cls):
|
||||||
raise CrashGenError(
|
raise CrashGenError(
|
||||||
"This task: {}, is not expected to be present, given the success/failure of others".format(cls.__name__))
|
"This task: {}, is not expected to be present, given the success/failure of others".format(
|
||||||
|
cls.__name__))
|
||||||
|
|
||||||
def assertNoSuccess(self, tasks, cls):
|
def assertNoSuccess(self, tasks, cls):
|
||||||
for task in tasks:
|
for task in tasks:
|
||||||
|
@ -1016,7 +1020,6 @@ class StateMechine:
|
||||||
|
|
||||||
sTable = self._db.getFixedSuperTable()
|
sTable = self._db.getFixedSuperTable()
|
||||||
|
|
||||||
|
|
||||||
if sTable.hasRegTables(dbc): # no regular tables
|
if sTable.hasRegTables(dbc): # no regular tables
|
||||||
# print("debug=====*\n"*100)
|
# print("debug=====*\n"*100)
|
||||||
Logging.debug("[STT] SUPER_TABLE_ONLY found, between {} and {}".format(ts, time.time()))
|
Logging.debug("[STT] SUPER_TABLE_ONLY found, between {} and {}".format(ts, time.time()))
|
||||||
|
@ -1096,10 +1099,13 @@ class StateMechine:
|
||||||
weightsTypes = BasicTypes.copy()
|
weightsTypes = BasicTypes.copy()
|
||||||
|
|
||||||
# this matrixs can balance the Frequency of TaskTypes
|
# this matrixs can balance the Frequency of TaskTypes
|
||||||
balance_TaskType_matrixs = {'TaskDropDb': 5 , 'TaskDropTopics': 20 , 'TaskDropStreams':10 , 'TaskDropStreamTables':10 ,
|
balance_TaskType_matrixs = {'TaskDropDb': 5, 'TaskDropTopics': 20, 'TaskDropStreams': 10,
|
||||||
|
'TaskDropStreamTables': 10,
|
||||||
'TaskReadData': 50, 'TaskDropSuperTable': 5, 'TaskAlterTags': 3, 'TaskAddData': 10,
|
'TaskReadData': 50, 'TaskDropSuperTable': 5, 'TaskAlterTags': 3, 'TaskAddData': 10,
|
||||||
'TaskDeleteData':10 , 'TaskCreateDb':10 , 'TaskCreateStream': 3, 'TaskCreateTopic' :3,
|
'TaskDeleteData': 10, 'TaskCreateDb': 10, 'TaskCreateStream': 3,
|
||||||
'TaskCreateConsumers':10, 'TaskCreateSuperTable': 10 } # TaskType : balance_matrixs of task
|
'TaskCreateTopic': 3,
|
||||||
|
'TaskCreateConsumers': 10,
|
||||||
|
'TaskCreateSuperTable': 10} # TaskType : balance_matrixs of task
|
||||||
|
|
||||||
for task, weights in balance_TaskType_matrixs.items():
|
for task, weights in balance_TaskType_matrixs.items():
|
||||||
|
|
||||||
|
@ -1111,7 +1117,6 @@ class StateMechine:
|
||||||
task = random.sample(weightsTypes, 1)
|
task = random.sample(weightsTypes, 1)
|
||||||
return task[0]
|
return task[0]
|
||||||
|
|
||||||
|
|
||||||
# ref:
|
# ref:
|
||||||
# https://eli.thegreenplace.net/2010/01/22/weighted-random-generation-in-python/
|
# https://eli.thegreenplace.net/2010/01/22/weighted-random-generation-in-python/
|
||||||
def _weighted_choice_sub(self, weights) -> int:
|
def _weighted_choice_sub(self, weights) -> int:
|
||||||
|
@ -1123,6 +1128,7 @@ class StateMechine:
|
||||||
return i
|
return i
|
||||||
raise CrashGenError("Unexpected no choice")
|
raise CrashGenError("Unexpected no choice")
|
||||||
|
|
||||||
|
|
||||||
class Database:
|
class Database:
|
||||||
''' We use this to represent an actual TDengine database inside a service instance,
|
''' We use this to represent an actual TDengine database inside a service instance,
|
||||||
possibly in a cluster environment.
|
possibly in a cluster environment.
|
||||||
|
@ -1194,7 +1200,8 @@ class Database:
|
||||||
500 # a number representing seconds within 10 years
|
500 # a number representing seconds within 10 years
|
||||||
# print("elSec = {}".format(elSec))
|
# print("elSec = {}".format(elSec))
|
||||||
|
|
||||||
t3 = datetime.datetime(local_epoch_time[0]-10, local_epoch_time[1], local_epoch_time[2]) # default "keep" is 10 years
|
t3 = datetime.datetime(local_epoch_time[0] - 10, local_epoch_time[1],
|
||||||
|
local_epoch_time[2]) # default "keep" is 10 years
|
||||||
t4 = datetime.datetime.fromtimestamp(
|
t4 = datetime.datetime.fromtimestamp(
|
||||||
t3.timestamp() + elSec2) # see explanation above
|
t3.timestamp() + elSec2) # see explanation above
|
||||||
Logging.debug("Setting up TICKS to start from: {}".format(t4))
|
Logging.debug("Setting up TICKS to start from: {}".format(t4))
|
||||||
|
@ -1210,11 +1217,14 @@ class Database:
|
||||||
# 10k at 1/20 chance, should be enough to avoid overlaps
|
# 10k at 1/20 chance, should be enough to avoid overlaps
|
||||||
tick = cls.setupLastTick()
|
tick = cls.setupLastTick()
|
||||||
cls._lastTick = tick
|
cls._lastTick = tick
|
||||||
cls._lastLaggingTick = tick + datetime.timedelta(0, -60*2) # lagging behind 2 minutes, should catch up fast
|
cls._lastLaggingTick = tick + datetime.timedelta(0,
|
||||||
|
-60 * 2) # lagging behind 2 minutes, should catch up fast
|
||||||
# if : # should be quite a bit into the future
|
# if : # should be quite a bit into the future
|
||||||
|
|
||||||
if Config.isSet('mix_oos_data') and Dice.throw(20) == 0: # if asked to do so, and 1 in 20 chance, return lagging tick
|
if Config.isSet('mix_oos_data') and Dice.throw(
|
||||||
cls._lastLaggingTick += datetime.timedelta(0, 1) # pick the next sequence from the lagging tick sequence
|
20) == 0: # if asked to do so, and 1 in 20 chance, return lagging tick
|
||||||
|
cls._lastLaggingTick += datetime.timedelta(0,
|
||||||
|
1) # pick the next sequence from the lagging tick sequence
|
||||||
return cls._lastLaggingTick
|
return cls._lastLaggingTick
|
||||||
else: # regular
|
else: # regular
|
||||||
# add one second to it
|
# add one second to it
|
||||||
|
@ -1334,8 +1344,6 @@ class Task():
|
||||||
self._execStats = execStats
|
self._execStats = execStats
|
||||||
self._db = db # A task is always associated/for a specific DB
|
self._db = db # A task is always associated/for a specific DB
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def isSuccess(self):
|
def isSuccess(self):
|
||||||
return self._err is None
|
return self._err is None
|
||||||
|
|
||||||
|
@ -1417,9 +1425,6 @@ class Task():
|
||||||
0x0203, # Invalid value
|
0x0203, # Invalid value
|
||||||
0x03f0, # Stream already exist , topic already exists
|
0x03f0, # Stream already exist , topic already exists
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1000 # REST catch-all error
|
1000 # REST catch-all error
|
||||||
]:
|
]:
|
||||||
return True # These are the ALWAYS-ACCEPTABLE ones
|
return True # These are the ALWAYS-ACCEPTABLE ones
|
||||||
|
@ -1443,7 +1448,6 @@ class Task():
|
||||||
|
|
||||||
return False # Not an acceptable error
|
return False # Not an acceptable error
|
||||||
|
|
||||||
|
|
||||||
def execute(self, wt: WorkerThread):
|
def execute(self, wt: WorkerThread):
|
||||||
wt.verifyThreadSelf()
|
wt.verifyThreadSelf()
|
||||||
self._workerThread = wt # type: ignore
|
self._workerThread = wt # type: ignore
|
||||||
|
@ -1485,7 +1489,8 @@ class Task():
|
||||||
# raise # so that we see full stack
|
# raise # so that we see full stack
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
print(
|
print(
|
||||||
"\n\n----------------------------\nProgram ABORTED Due to Unexpected TAOS Error: \n\n{}\n".format(errMsg) +
|
"\n\n----------------------------\nProgram ABORTED Due to Unexpected TAOS Error: \n\n{}\n".format(
|
||||||
|
errMsg) +
|
||||||
"----------------------------\n")
|
"----------------------------\n")
|
||||||
# sys.exit(-1)
|
# sys.exit(-1)
|
||||||
self._err = err
|
self._err = err
|
||||||
|
@ -1718,10 +1723,15 @@ class TaskCreateDb(StateTransitionTask):
|
||||||
cache_model = Dice.choice(['none', 'last_row', 'last_value', 'both'])
|
cache_model = Dice.choice(['none', 'last_row', 'last_value', 'both'])
|
||||||
buffer = random.randint(3, 128)
|
buffer = random.randint(3, 128)
|
||||||
dbName = self._db.getName()
|
dbName = self._db.getName()
|
||||||
self.execWtSql(wt, "create database {} {} {} vgroups {} cachemodel '{}' buffer {} ".format(dbName, repStr, updatePostfix, vg_nums, cache_model,buffer ) )
|
self.execWtSql(wt, "create database {} {} {} vgroups {} cachemodel '{}' buffer {} ".format(dbName, repStr,
|
||||||
|
updatePostfix,
|
||||||
|
vg_nums,
|
||||||
|
cache_model,
|
||||||
|
buffer))
|
||||||
if dbName == "db_0" and Config.getConfig().use_shadow_db:
|
if dbName == "db_0" and Config.getConfig().use_shadow_db:
|
||||||
self.execWtSql(wt, "create database {} {} {} ".format("db_s", repStr, updatePostfix))
|
self.execWtSql(wt, "create database {} {} {} ".format("db_s", repStr, updatePostfix))
|
||||||
|
|
||||||
|
|
||||||
class TaskDropDb(StateTransitionTask):
|
class TaskDropDb(StateTransitionTask):
|
||||||
@classmethod
|
@classmethod
|
||||||
def getEndState(cls):
|
def getEndState(cls):
|
||||||
|
@ -1734,7 +1744,8 @@ class TaskDropDb(StateTransitionTask):
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.queryWtSql(wt, "drop database {}".format(self._db.getName())) # drop database maybe failed ,because topic exists
|
self.queryWtSql(wt, "drop database {}".format(
|
||||||
|
self._db.getName())) # drop database maybe failed ,because topic exists
|
||||||
except taos.error.ProgrammingError as err:
|
except taos.error.ProgrammingError as err:
|
||||||
errno = Helper.convertErrno(err.errno)
|
errno = Helper.convertErrno(err.errno)
|
||||||
if errno in [0x0203]: # drop maybe failed
|
if errno in [0x0203]: # drop maybe failed
|
||||||
|
@ -1769,7 +1780,8 @@ class TaskCreateStream(StateTransitionTask):
|
||||||
stbname = sTable.getName()
|
stbname = sTable.getName()
|
||||||
sub_tables = sTable.getRegTables(wt.getDbConn())
|
sub_tables = sTable.getRegTables(wt.getDbConn())
|
||||||
aggExpr = Dice.choice([
|
aggExpr = Dice.choice([
|
||||||
'count(*)', 'avg(speed)', 'sum(speed)', 'stddev(speed)','min(speed)', 'max(speed)', 'first(speed)', 'last(speed)',
|
'count(*)', 'avg(speed)', 'sum(speed)', 'stddev(speed)', 'min(speed)', 'max(speed)', 'first(speed)',
|
||||||
|
'last(speed)',
|
||||||
'apercentile(speed, 10)', 'last_row(*)', 'twa(speed)'])
|
'apercentile(speed, 10)', 'last_row(*)', 'twa(speed)'])
|
||||||
|
|
||||||
stream_sql = '' # set default value
|
stream_sql = '' # set default value
|
||||||
|
@ -1814,19 +1826,25 @@ class TaskCreateTopic(StateTransitionTask):
|
||||||
stbname = sTable.getName()
|
stbname = sTable.getName()
|
||||||
sub_tables = sTable.getRegTables(wt.getDbConn())
|
sub_tables = sTable.getRegTables(wt.getDbConn())
|
||||||
|
|
||||||
scalarExpr = Dice.choice([ '*','speed','color','abs(speed)','acos(speed)','asin(speed)','atan(speed)','ceil(speed)','cos(speed)','cos(speed)',
|
scalarExpr = Dice.choice(
|
||||||
'floor(speed)','log(speed,2)','pow(speed,2)','round(speed)','sin(speed)','sqrt(speed)','char_length(color)','concat(color,color)',
|
['*', 'speed', 'color', 'abs(speed)', 'acos(speed)', 'asin(speed)', 'atan(speed)', 'ceil(speed)',
|
||||||
'concat_ws(" ", color,color," ")','length(color)', 'lower(color)', 'ltrim(color)','substr(color , 2)','upper(color)','cast(speed as double)',
|
'cos(speed)', 'cos(speed)',
|
||||||
|
'floor(speed)', 'log(speed,2)', 'pow(speed,2)', 'round(speed)', 'sin(speed)', 'sqrt(speed)',
|
||||||
|
'char_length(color)', 'concat(color,color)',
|
||||||
|
'concat_ws(" ", color,color," ")', 'length(color)', 'lower(color)', 'ltrim(color)', 'substr(color , 2)',
|
||||||
|
'upper(color)', 'cast(speed as double)',
|
||||||
'cast(ts as bigint)'])
|
'cast(ts as bigint)'])
|
||||||
topic_sql = '' # set default value
|
topic_sql = '' # set default value
|
||||||
if Dice.throw(3) == 0: # create topic : source data from sub query
|
if Dice.throw(3) == 0: # create topic : source data from sub query
|
||||||
if sub_tables: # if not empty
|
if sub_tables: # if not empty
|
||||||
sub_tbname = sub_tables[0]
|
sub_tbname = sub_tables[0]
|
||||||
# create topic : source data from sub query of sub stable
|
# create topic : source data from sub query of sub stable
|
||||||
topic_sql = 'create topic {} as select {} FROM {}.{} ; '.format(sub_topic_name,scalarExpr,dbname,sub_tbname)
|
topic_sql = 'create topic {} as select {} FROM {}.{} ; '.format(sub_topic_name, scalarExpr, dbname,
|
||||||
|
sub_tbname)
|
||||||
|
|
||||||
else: # create topic : source data from sub query of stable
|
else: # create topic : source data from sub query of stable
|
||||||
topic_sql = 'create topic {} as select {} FROM {}.{} '.format(super_topic_name,scalarExpr, dbname,stbname)
|
topic_sql = 'create topic {} as select {} FROM {}.{} '.format(super_topic_name, scalarExpr, dbname,
|
||||||
|
stbname)
|
||||||
elif Dice.throw(3) == 1: # create topic : source data from super table
|
elif Dice.throw(3) == 1: # create topic : source data from super table
|
||||||
topic_sql = 'create topic {} AS STABLE {}.{} '.format(stable_topic, dbname, stbname)
|
topic_sql = 'create topic {} AS STABLE {}.{} '.format(stable_topic, dbname, stbname)
|
||||||
|
|
||||||
|
@ -1840,6 +1858,7 @@ class TaskCreateTopic(StateTransitionTask):
|
||||||
self.execWtSql(wt, topic_sql)
|
self.execWtSql(wt, topic_sql)
|
||||||
Logging.debug("[OPS] db topic is creating at {}".format(time.time()))
|
Logging.debug("[OPS] db topic is creating at {}".format(time.time()))
|
||||||
|
|
||||||
|
|
||||||
class TaskDropTopics(StateTransitionTask):
|
class TaskDropTopics(StateTransitionTask):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1853,7 +1872,6 @@ class TaskDropTopics(StateTransitionTask):
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
dbname = self._db.getName()
|
dbname = self._db.getName()
|
||||||
|
|
||||||
|
|
||||||
if not self._db.exists(wt.getDbConn()):
|
if not self._db.exists(wt.getDbConn()):
|
||||||
Logging.debug("Skipping task, no DB yet")
|
Logging.debug("Skipping task, no DB yet")
|
||||||
return
|
return
|
||||||
|
@ -1865,6 +1883,7 @@ class TaskDropTopics(StateTransitionTask):
|
||||||
sTable.dropTopics(wt.getDbConn(), dbname, None) # drop topics of database
|
sTable.dropTopics(wt.getDbConn(), dbname, None) # drop topics of database
|
||||||
sTable.dropTopics(wt.getDbConn(), dbname, tblName) # drop topics of stable
|
sTable.dropTopics(wt.getDbConn(), dbname, tblName) # drop topics of stable
|
||||||
|
|
||||||
|
|
||||||
class TaskDropStreams(StateTransitionTask):
|
class TaskDropStreams(StateTransitionTask):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1878,7 +1897,6 @@ class TaskDropStreams(StateTransitionTask):
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
# dbname = self._db.getName()
|
# dbname = self._db.getName()
|
||||||
|
|
||||||
|
|
||||||
if not self._db.exists(wt.getDbConn()):
|
if not self._db.exists(wt.getDbConn()):
|
||||||
Logging.debug("Skipping task, no DB yet")
|
Logging.debug("Skipping task, no DB yet")
|
||||||
return
|
return
|
||||||
|
@ -1889,6 +1907,7 @@ class TaskDropStreams(StateTransitionTask):
|
||||||
if sTable.hasStreams(wt.getDbConn()):
|
if sTable.hasStreams(wt.getDbConn()):
|
||||||
sTable.dropStreams(wt.getDbConn()) # drop stream of database
|
sTable.dropStreams(wt.getDbConn()) # drop stream of database
|
||||||
|
|
||||||
|
|
||||||
class TaskDropStreamTables(StateTransitionTask):
|
class TaskDropStreamTables(StateTransitionTask):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1902,7 +1921,6 @@ class TaskDropStreamTables(StateTransitionTask):
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
# dbname = self._db.getName()
|
# dbname = self._db.getName()
|
||||||
|
|
||||||
|
|
||||||
if not self._db.exists(wt.getDbConn()):
|
if not self._db.exists(wt.getDbConn()):
|
||||||
Logging.debug("Skipping task, no DB yet")
|
Logging.debug("Skipping task, no DB yet")
|
||||||
return
|
return
|
||||||
|
@ -1913,6 +1931,7 @@ class TaskDropStreamTables(StateTransitionTask):
|
||||||
if sTable.hasStreamTables(wt.getDbConn()):
|
if sTable.hasStreamTables(wt.getDbConn()):
|
||||||
sTable.dropStreamTables(wt.getDbConn()) # drop stream tables
|
sTable.dropStreamTables(wt.getDbConn()) # drop stream tables
|
||||||
|
|
||||||
|
|
||||||
class TaskCreateConsumers(StateTransitionTask):
|
class TaskCreateConsumers(StateTransitionTask):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
@ -1974,7 +1993,6 @@ class TdSuperTable:
|
||||||
def getName(self):
|
def getName(self):
|
||||||
return self._stName
|
return self._stName
|
||||||
|
|
||||||
|
|
||||||
def drop(self, dbc, skipCheck=False):
|
def drop(self, dbc, skipCheck=False):
|
||||||
dbName = self._dbName
|
dbName = self._dbName
|
||||||
if self.exists(dbc): # if myself exists
|
if self.exists(dbc): # if myself exists
|
||||||
|
@ -2018,27 +2036,18 @@ class TdSuperTable:
|
||||||
def createConsumer(self, dbc, Consumer_nums):
|
def createConsumer(self, dbc, Consumer_nums):
|
||||||
|
|
||||||
def generateConsumer(current_topic_list):
|
def generateConsumer(current_topic_list):
|
||||||
conf = TaosTmqConf()
|
consumer = Consumer({"group.id": "tg2", "td.connect.user": "root", "td.connect.pass": "taosdata"})
|
||||||
conf.set("group.id", "tg2")
|
topic_list = []
|
||||||
conf.set("td.connect.user", "root")
|
|
||||||
conf.set("td.connect.pass", "taosdata")
|
|
||||||
# conf.set("enable.auto.commit", "true")
|
|
||||||
# def tmq_commit_cb_print(tmq, resp, offset, param=None):
|
|
||||||
# print(f"commit: {resp}, tmq: {tmq}, offset: {offset}, param: {param}")
|
|
||||||
# conf.set_auto_commit_cb(tmq_commit_cb_print, None)
|
|
||||||
consumer = conf.new_consumer()
|
|
||||||
topic_list = TaosTmqList()
|
|
||||||
for topic in current_topic_list:
|
for topic in current_topic_list:
|
||||||
topic_list.append(topic)
|
topic_list.append(topic)
|
||||||
try:
|
|
||||||
consumer.subscribe(topic_list)
|
consumer.subscribe(topic_list)
|
||||||
except TmqError as e :
|
|
||||||
pass
|
|
||||||
|
|
||||||
# consumer with random work life
|
# consumer with random work life
|
||||||
time_start = time.time()
|
time_start = time.time()
|
||||||
while 1:
|
while 1:
|
||||||
res = consumer.poll(1000)
|
res = consumer.poll(1)
|
||||||
|
consumer.commit(res)
|
||||||
if time.time() - time_start > random.randint(5, 50):
|
if time.time() - time_start > random.randint(5, 50):
|
||||||
break
|
break
|
||||||
try:
|
try:
|
||||||
|
@ -2067,14 +2076,16 @@ class TdSuperTable:
|
||||||
def getRegTables(self, dbc: DbConn):
|
def getRegTables(self, dbc: DbConn):
|
||||||
dbName = self._dbName
|
dbName = self._dbName
|
||||||
try:
|
try:
|
||||||
dbc.query("select distinct TBNAME from {}.{}".format(dbName, self._stName)) # TODO: analyze result set later
|
dbc.query("select distinct TBNAME from {}.{}".format(dbName,
|
||||||
|
self._stName)) # TODO: analyze result set later
|
||||||
except taos.error.ProgrammingError as err:
|
except taos.error.ProgrammingError as err:
|
||||||
errno2 = Helper.convertErrno(err.errno)
|
errno2 = Helper.convertErrno(err.errno)
|
||||||
Logging.debug("[=] Failed to get tables from super table: errno=0x{:X}, msg: {}".format(errno2, err))
|
Logging.debug("[=] Failed to get tables from super table: errno=0x{:X}, msg: {}".format(errno2, err))
|
||||||
raise
|
raise
|
||||||
|
|
||||||
qr = dbc.getQueryResult()
|
qr = dbc.getQueryResult()
|
||||||
return [v[0] for v in qr] # list transformation, ref: https://stackoverflow.com/questions/643823/python-list-transformation
|
return [v[0] for v in
|
||||||
|
qr] # list transformation, ref: https://stackoverflow.com/questions/643823/python-list-transformation
|
||||||
|
|
||||||
def hasRegTables(self, dbc: DbConn):
|
def hasRegTables(self, dbc: DbConn):
|
||||||
|
|
||||||
|
@ -2317,7 +2328,6 @@ class TdSuperTable:
|
||||||
|
|
||||||
]) # TODO: add more from 'top'
|
]) # TODO: add more from 'top'
|
||||||
|
|
||||||
|
|
||||||
# if aggExpr not in ['stddev(speed)']: # STDDEV not valid for super tables?! (Done in TD-1049)
|
# if aggExpr not in ['stddev(speed)']: # STDDEV not valid for super tables?! (Done in TD-1049)
|
||||||
sql = "select {} from {}.{}".format(aggExpr, self._dbName, self.getName())
|
sql = "select {} from {}.{}".format(aggExpr, self._dbName, self.getName())
|
||||||
if Dice.throw(3) == 0: # 1 in X chance
|
if Dice.throw(3) == 0: # 1 in X chance
|
||||||
|
@ -2329,6 +2339,7 @@ class TdSuperTable:
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class TaskReadData(StateTransitionTask):
|
class TaskReadData(StateTransitionTask):
|
||||||
@classmethod
|
@classmethod
|
||||||
def getEndState(cls):
|
def getEndState(cls):
|
||||||
|
@ -2368,7 +2379,6 @@ class TaskReadData(StateTransitionTask):
|
||||||
# by now, causing error below to be incorrectly handled due to timing issue
|
# by now, causing error below to be incorrectly handled due to timing issue
|
||||||
return # TODO: fix server restart status race condtion
|
return # TODO: fix server restart status race condtion
|
||||||
|
|
||||||
|
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
self._reconnectIfNeeded(wt)
|
self._reconnectIfNeeded(wt)
|
||||||
|
|
||||||
|
@ -2386,6 +2396,7 @@ class TaskReadData(StateTransitionTask):
|
||||||
Logging.debug("[=] Read Failure: errno=0x{:X}, msg: {}, SQL: {}".format(errno2, err, dbc.getLastSql()))
|
Logging.debug("[=] Read Failure: errno=0x{:X}, msg: {}, SQL: {}".format(errno2, err, dbc.getLastSql()))
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
class SqlQuery:
|
class SqlQuery:
|
||||||
@classmethod
|
@classmethod
|
||||||
def buildRandom(cls, db: Database):
|
def buildRandom(cls, db: Database):
|
||||||
|
@ -2399,6 +2410,7 @@ class SqlQuery:
|
||||||
def getSql(self):
|
def getSql(self):
|
||||||
return self._sql
|
return self._sql
|
||||||
|
|
||||||
|
|
||||||
class TaskDropSuperTable(StateTransitionTask):
|
class TaskDropSuperTable(StateTransitionTask):
|
||||||
@classmethod
|
@classmethod
|
||||||
def getEndState(cls):
|
def getEndState(cls):
|
||||||
|
@ -2430,7 +2442,6 @@ class TaskDropSuperTable(StateTransitionTask):
|
||||||
Logging.debug("[DB] Acceptable error when dropping a table")
|
Logging.debug("[DB] Acceptable error when dropping a table")
|
||||||
continue # try to delete next regular table
|
continue # try to delete next regular table
|
||||||
|
|
||||||
|
|
||||||
if (not tickOutput):
|
if (not tickOutput):
|
||||||
tickOutput = True # Print only one time
|
tickOutput = True # Print only one time
|
||||||
if isSuccess:
|
if isSuccess:
|
||||||
|
@ -2443,8 +2454,6 @@ class TaskDropSuperTable(StateTransitionTask):
|
||||||
self.execWtSql(wt, "drop table {}.{}".format(self._db.getName(), tblName))
|
self.execWtSql(wt, "drop table {}.{}".format(self._db.getName(), tblName))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TaskAlterTags(StateTransitionTask):
|
class TaskAlterTags(StateTransitionTask):
|
||||||
@classmethod
|
@classmethod
|
||||||
def getEndState(cls):
|
def getEndState(cls):
|
||||||
|
@ -2472,6 +2481,7 @@ class TaskAlterTags(StateTransitionTask):
|
||||||
sTable.changeTag(dbc, "extraTag", "newTag")
|
sTable.changeTag(dbc, "extraTag", "newTag")
|
||||||
# sql = "alter table db.{} change tag extraTag newTag".format(tblName)
|
# sql = "alter table db.{} change tag extraTag newTag".format(tblName)
|
||||||
|
|
||||||
|
|
||||||
class TaskRestartService(StateTransitionTask):
|
class TaskRestartService(StateTransitionTask):
|
||||||
_isRunning = False
|
_isRunning = False
|
||||||
_classLock = threading.Lock()
|
_classLock = threading.Lock()
|
||||||
|
@ -2487,6 +2497,7 @@ class TaskRestartService(StateTransitionTask):
|
||||||
return False # don't run this otherwise
|
return False # don't run this otherwise
|
||||||
|
|
||||||
CHANCE_TO_RESTART_SERVICE = 200
|
CHANCE_TO_RESTART_SERVICE = 200
|
||||||
|
|
||||||
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
def _executeInternal(self, te: TaskExecutor, wt: WorkerThread):
|
||||||
if not Config.getConfig().auto_start_service: # only execute when we are in -a mode
|
if not Config.getConfig().auto_start_service: # only execute when we are in -a mode
|
||||||
print("_a", end="", flush=True)
|
print("_a", end="", flush=True)
|
||||||
|
@ -2500,11 +2511,13 @@ class TaskRestartService(StateTransitionTask):
|
||||||
|
|
||||||
if Dice.throw(self.CHANCE_TO_RESTART_SERVICE) == 0: # 1 in N chance
|
if Dice.throw(self.CHANCE_TO_RESTART_SERVICE) == 0: # 1 in N chance
|
||||||
dbc = wt.getDbConn()
|
dbc = wt.getDbConn()
|
||||||
dbc.execute("select * from information_schema.ins_databases") # simple delay, align timing with other workers
|
dbc.execute(
|
||||||
|
"select * from information_schema.ins_databases") # simple delay, align timing with other workers
|
||||||
gSvcMgr.restart()
|
gSvcMgr.restart()
|
||||||
|
|
||||||
self._isRunning = False
|
self._isRunning = False
|
||||||
|
|
||||||
|
|
||||||
class TaskAddData(StateTransitionTask):
|
class TaskAddData(StateTransitionTask):
|
||||||
# Track which table is being actively worked on
|
# Track which table is being actively worked on
|
||||||
activeTable: Set[int] = set()
|
activeTable: Set[int] = set()
|
||||||
|
@ -2571,8 +2584,6 @@ class TaskAddData(StateTransitionTask):
|
||||||
# Logging.info("Data added in batch: {}".format(sql))
|
# Logging.info("Data added in batch: {}".format(sql))
|
||||||
self._unlockTableIfNeeded(fullTableName)
|
self._unlockTableIfNeeded(fullTableName)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _addData(self, db: Database, dbc, regTableName, te: TaskExecutor): # implied: NOT in batches
|
def _addData(self, db: Database, dbc, regTableName, te: TaskExecutor): # implied: NOT in batches
|
||||||
numRecords = self.LARGE_NUMBER_OF_RECORDS if Config.getConfig().larger_data else self.SMALL_NUMBER_OF_RECORDS
|
numRecords = self.LARGE_NUMBER_OF_RECORDS if Config.getConfig().larger_data else self.SMALL_NUMBER_OF_RECORDS
|
||||||
|
|
||||||
|
@ -2590,7 +2601,8 @@ class TaskAddData(StateTransitionTask):
|
||||||
|
|
||||||
# TODO: too ugly trying to lock the table reliably, refactor...
|
# TODO: too ugly trying to lock the table reliably, refactor...
|
||||||
fullTableName = db.getName() + '.' + regTableName
|
fullTableName = db.getName() + '.' + regTableName
|
||||||
self._lockTableIfNeeded(fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
self._lockTableIfNeeded(
|
||||||
|
fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = "INSERT INTO {} VALUES ('{}', {}, '{}');".format( # removed: tags ('{}', {})
|
sql = "INSERT INTO {} VALUES ('{}', {}, '{}');".format( # removed: tags ('{}', {})
|
||||||
|
@ -2604,7 +2616,8 @@ class TaskAddData(StateTransitionTask):
|
||||||
intWrote = intToWrite
|
intWrote = intToWrite
|
||||||
|
|
||||||
# Quick hack, attach an update statement here. TODO: create an "update" task
|
# Quick hack, attach an update statement here. TODO: create an "update" task
|
||||||
if (not Config.getConfig().use_shadow_db) and Dice.throw(5) == 0: # 1 in N chance, plus not using shaddow DB
|
if (not Config.getConfig().use_shadow_db) and Dice.throw(
|
||||||
|
5) == 0: # 1 in N chance, plus not using shaddow DB
|
||||||
intToUpdate = db.getNextInt() # Updated, but should not succeed
|
intToUpdate = db.getNextInt() # Updated, but should not succeed
|
||||||
nextColor = db.getNextColor()
|
nextColor = db.getNextColor()
|
||||||
sql = "INSERt INTO {} VALUES ('{}', {}, '{}');".format( # "INSERt" means "update" here
|
sql = "INSERt INTO {} VALUES ('{}', {}, '{}');".format( # "INSERt" means "update" here
|
||||||
|
@ -2692,6 +2705,7 @@ class TaskAddData(StateTransitionTask):
|
||||||
|
|
||||||
self.activeTable.discard(i) # not raising an error, unlike remove
|
self.activeTable.discard(i) # not raising an error, unlike remove
|
||||||
|
|
||||||
|
|
||||||
class TaskDeleteData(StateTransitionTask):
|
class TaskDeleteData(StateTransitionTask):
|
||||||
# Track which table is being actively worked on
|
# Track which table is being actively worked on
|
||||||
activeTable: Set[int] = set()
|
activeTable: Set[int] = set()
|
||||||
|
@ -2756,7 +2770,8 @@ class TaskDeleteData(StateTransitionTask):
|
||||||
|
|
||||||
# TODO: too ugly trying to lock the table reliably, refactor...
|
# TODO: too ugly trying to lock the table reliably, refactor...
|
||||||
fullTableName = db.getName() + '.' + regTableName
|
fullTableName = db.getName() + '.' + regTableName
|
||||||
self._lockTableIfNeeded(fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
self._lockTableIfNeeded(
|
||||||
|
fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = "delete from {} where ts = '{}' ;".format( # removed: tags ('{}', {})
|
sql = "delete from {} where ts = '{}' ;".format( # removed: tags ('{}', {})
|
||||||
|
@ -2772,7 +2787,8 @@ class TaskDeleteData(StateTransitionTask):
|
||||||
intWrote = intToWrite
|
intWrote = intToWrite
|
||||||
|
|
||||||
# Quick hack, attach an update statement here. TODO: create an "update" task
|
# Quick hack, attach an update statement here. TODO: create an "update" task
|
||||||
if (not Config.getConfig().use_shadow_db) and Dice.throw(5) == 0: # 1 in N chance, plus not using shaddow DB
|
if (not Config.getConfig().use_shadow_db) and Dice.throw(
|
||||||
|
5) == 0: # 1 in N chance, plus not using shaddow DB
|
||||||
intToUpdate = db.getNextInt() # Updated, but should not succeed
|
intToUpdate = db.getNextInt() # Updated, but should not succeed
|
||||||
# nextColor = db.getNextColor()
|
# nextColor = db.getNextColor()
|
||||||
sql = "delete from {} where ts = '{}' ;".format( # "INSERt" means "update" here
|
sql = "delete from {} where ts = '{}' ;".format( # "INSERt" means "update" here
|
||||||
|
@ -2827,7 +2843,8 @@ class TaskDeleteData(StateTransitionTask):
|
||||||
|
|
||||||
# TODO: too ugly trying to lock the table reliably, refactor...
|
# TODO: too ugly trying to lock the table reliably, refactor...
|
||||||
fullTableName = db.getName() + '.' + regTableName
|
fullTableName = db.getName() + '.' + regTableName
|
||||||
self._lockTableIfNeeded(fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
self._lockTableIfNeeded(
|
||||||
|
fullTableName) # so that we are verify read-back. TODO: deal with exceptions before unlock
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sql = "delete from {} ;".format( # removed: tags ('{}', {})
|
sql = "delete from {} ;".format( # removed: tags ('{}', {})
|
||||||
|
@ -2837,7 +2854,8 @@ class TaskDeleteData(StateTransitionTask):
|
||||||
# Logging.info("Data added: {}".format(sql))
|
# Logging.info("Data added: {}".format(sql))
|
||||||
|
|
||||||
# Quick hack, attach an update statement here. TODO: create an "update" task
|
# Quick hack, attach an update statement here. TODO: create an "update" task
|
||||||
if (not Config.getConfig().use_shadow_db) and Dice.throw(5) == 0: # 1 in N chance, plus not using shaddow DB
|
if (not Config.getConfig().use_shadow_db) and Dice.throw(
|
||||||
|
5) == 0: # 1 in N chance, plus not using shaddow DB
|
||||||
sql = "delete from {} ;".format( # "INSERt" means "update" here
|
sql = "delete from {} ;".format( # "INSERt" means "update" here
|
||||||
fullTableName)
|
fullTableName)
|
||||||
dbc.execute(sql)
|
dbc.execute(sql)
|
||||||
|
@ -2937,7 +2955,9 @@ class ThreadStacks: # stack info for all threads
|
||||||
lastSqlForThread = DbConn.fetchSqlForThread(shortTid)
|
lastSqlForThread = DbConn.fetchSqlForThread(shortTid)
|
||||||
last_sql_commit_time = DbConn.get_save_sql_time(shortTid)
|
last_sql_commit_time = DbConn.get_save_sql_time(shortTid)
|
||||||
# time_cost = DbConn.get_time_cost()
|
# time_cost = DbConn.get_time_cost()
|
||||||
print("Last SQL statement attempted from thread {} ({:.4f} sec ago) is: {}".format(shortTid, self.current_time-last_sql_commit_time ,lastSqlForThread))
|
print("Last SQL statement attempted from thread {} ({:.4f} sec ago) is: {}".format(shortTid,
|
||||||
|
self.current_time - last_sql_commit_time,
|
||||||
|
lastSqlForThread))
|
||||||
stackFrame = 0
|
stackFrame = 0
|
||||||
for frame in stack: # was using: reversed(stack)
|
for frame in stack: # was using: reversed(stack)
|
||||||
# print(frame)
|
# print(frame)
|
||||||
|
@ -2949,6 +2969,7 @@ class ThreadStacks: # stack info for all threads
|
||||||
if self.current_time - last_sql_commit_time > 100: # dead lock occured
|
if self.current_time - last_sql_commit_time > 100: # dead lock occured
|
||||||
print("maybe dead locked of thread {} ".format(shortTid))
|
print("maybe dead locked of thread {} ".format(shortTid))
|
||||||
|
|
||||||
|
|
||||||
class ClientManager:
|
class ClientManager:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Logging.info("Starting service manager")
|
Logging.info("Starting service manager")
|
||||||
|
@ -3062,7 +3083,6 @@ class ClientManager:
|
||||||
svcMgr.stopTaosServices()
|
svcMgr.stopTaosServices()
|
||||||
svcMgr = None
|
svcMgr = None
|
||||||
|
|
||||||
|
|
||||||
# Release global variables
|
# Release global variables
|
||||||
# gConfig = None
|
# gConfig = None
|
||||||
Config.clearConfig()
|
Config.clearConfig()
|
||||||
|
@ -3093,6 +3113,7 @@ class ClientManager:
|
||||||
# self.tc.getDbManager().cleanUp() # clean up first, so we can show ZERO db connections
|
# self.tc.getDbManager().cleanUp() # clean up first, so we can show ZERO db connections
|
||||||
self.tc.printStats()
|
self.tc.printStats()
|
||||||
|
|
||||||
|
|
||||||
class MainExec:
|
class MainExec:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._clientMgr = None
|
self._clientMgr = None
|
||||||
|
@ -3131,7 +3152,8 @@ class MainExec:
|
||||||
|
|
||||||
def runService(self):
|
def runService(self):
|
||||||
global gSvcMgr
|
global gSvcMgr
|
||||||
gSvcMgr = self._svcMgr = ServiceManager(Config.getConfig().num_dnodes) # save it in a global variable TODO: hack alert
|
gSvcMgr = self._svcMgr = ServiceManager(
|
||||||
|
Config.getConfig().num_dnodes) # save it in a global variable TODO: hack alert
|
||||||
|
|
||||||
gSvcMgr.run() # run to some end state
|
gSvcMgr.run() # run to some end state
|
||||||
gSvcMgr = self._svcMgr = None
|
gSvcMgr = self._svcMgr = None
|
||||||
|
@ -3259,7 +3281,6 @@ class MainExec:
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def init(self): # TODO: refactor
|
def init(self): # TODO: refactor
|
||||||
global gContainer
|
global gContainer
|
||||||
gContainer = Container() # micky-mouse DI
|
gContainer = Container() # micky-mouse DI
|
||||||
|
|
|
@ -38,8 +38,9 @@ python_error=`cat ${LOG_DIR}/*.info | grep -w "stack" | wc -l`
|
||||||
# /root/TDengine/source/libs/function/src/builtinsimpl.c:856:29: runtime error: signed integer overflow: 9223372036854775806 + 9223372036854775805 cannot be represented in type 'long int'
|
# /root/TDengine/source/libs/function/src/builtinsimpl.c:856:29: runtime error: signed integer overflow: 9223372036854775806 + 9223372036854775805 cannot be represented in type 'long int'
|
||||||
# /root/TDengine/source/libs/scalar/src/sclvector.c:1075:66: runtime error: signed integer overflow: 9223372034707292160 + 1668838476672 cannot be represented in type 'long int'
|
# /root/TDengine/source/libs/scalar/src/sclvector.c:1075:66: runtime error: signed integer overflow: 9223372034707292160 + 1668838476672 cannot be represented in type 'long int'
|
||||||
# /root/TDengine/source/common/src/tdataformat.c:1876:7: runtime error: signed integer overflow: 8252423483843671206 + 2406154664059062870 cannot be represented in type 'long int'
|
# /root/TDengine/source/common/src/tdataformat.c:1876:7: runtime error: signed integer overflow: 8252423483843671206 + 2406154664059062870 cannot be represented in type 'long int'
|
||||||
|
# /home/chr/TDengine/source/libs/scalar/src/filter.c:3149:14: runtime error: applying non-zero offset 18446744073709551615 to null pointer
|
||||||
|
|
||||||
runtime_error=`cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type"| grep -v "signed integer overflow" |grep -v "strerror.c"| grep -v "asan_malloc_linux.cc" |wc -l`
|
runtime_error=`cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type"| grep -v "signed integer overflow" |grep -v "strerror.c"| grep -v "asan_malloc_linux.cc" |grep -v "filter.c:3149:14"|wc -l`
|
||||||
|
|
||||||
echo -e "\033[44;32;1m"asan error_num: $error_num"\033[0m"
|
echo -e "\033[44;32;1m"asan error_num: $error_num"\033[0m"
|
||||||
echo -e "\033[44;32;1m"asan memory_leak: $memory_leak"\033[0m"
|
echo -e "\033[44;32;1m"asan memory_leak: $memory_leak"\033[0m"
|
||||||
|
|
|
@ -12,12 +12,13 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import taos
|
import taos
|
||||||
from util.log import *
|
|
||||||
from util.cases import *
|
|
||||||
from util.sql import *
|
|
||||||
from util.common import *
|
|
||||||
from util.sqlset import *
|
|
||||||
from taos.tmq import *
|
from taos.tmq import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.common import *
|
||||||
|
from util.log import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.sqlset import *
|
||||||
|
|
||||||
|
|
||||||
class TDTestCase:
|
class TDTestCase:
|
||||||
def init(self, conn, logSql, replicaVar=1):
|
def init(self, conn, logSql, replicaVar=1):
|
||||||
|
@ -67,14 +68,17 @@ class TDTestCase:
|
||||||
f'now,1,2,3,4,5,6,7,8,9.9,10.1,true,"abcd","涛思数据"'
|
f'now,1,2,3,4,5,6,7,8,9.9,10.1,true,"abcd","涛思数据"'
|
||||||
]
|
]
|
||||||
self.tbnum = 1
|
self.tbnum = 1
|
||||||
|
|
||||||
def prepare_data(self):
|
def prepare_data(self):
|
||||||
tdSql.execute(self.setsql.set_create_stable_sql(self.stbname, self.column_dict, self.tag_dict))
|
tdSql.execute(self.setsql.set_create_stable_sql(self.stbname, self.column_dict, self.tag_dict))
|
||||||
for i in range(self.tbnum):
|
for i in range(self.tbnum):
|
||||||
tdSql.execute(f'create table {self.stbname}_{i} using {self.stbname} tags({self.tag_list[i]})')
|
tdSql.execute(f'create table {self.stbname}_{i} using {self.stbname} tags({self.tag_list[i]})')
|
||||||
for j in self.values_list:
|
for j in self.values_list:
|
||||||
tdSql.execute(f'insert into {self.stbname}_{i} values({j})')
|
tdSql.execute(f'insert into {self.stbname}_{i} values({j})')
|
||||||
|
|
||||||
def create_user(self):
|
def create_user(self):
|
||||||
for user_name in ['jiacy1_all','jiacy1_read','jiacy1_write','jiacy1_none','jiacy0_all','jiacy0_read','jiacy0_write','jiacy0_none']:
|
for user_name in ['jiacy1_all', 'jiacy1_read', 'jiacy1_write', 'jiacy1_none', 'jiacy0_all', 'jiacy0_read',
|
||||||
|
'jiacy0_write', 'jiacy0_none']:
|
||||||
if 'jiacy1' in user_name.lower():
|
if 'jiacy1' in user_name.lower():
|
||||||
tdSql.execute(f'create user {user_name} pass "123" sysinfo 1')
|
tdSql.execute(f'create user {user_name} pass "123" sysinfo 1')
|
||||||
elif 'jiacy0' in user_name.lower():
|
elif 'jiacy0' in user_name.lower():
|
||||||
|
@ -101,6 +105,7 @@ class TDTestCase:
|
||||||
self.queryResult = None
|
self.queryResult = None
|
||||||
tdLog.info(f"sql:{sql}, expect error occured")
|
tdLog.info(f"sql:{sql}, expect error occured")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def drop_topic(self):
|
def drop_topic(self):
|
||||||
jiacy1_all_conn = taos.connect(user='jiacy1_all', password='123')
|
jiacy1_all_conn = taos.connect(user='jiacy1_all', password='123')
|
||||||
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123')
|
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123')
|
||||||
|
@ -114,7 +119,8 @@ class TDTestCase:
|
||||||
for user in [jiacy1_all_conn, jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
for user in [jiacy1_all_conn, jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
||||||
user.execute(f'create topic db_jiacy as select * from db.stb')
|
user.execute(f'create topic db_jiacy as select * from db.stb')
|
||||||
user.execute('drop topic db_jiacy')
|
user.execute('drop topic db_jiacy')
|
||||||
for user in [jiacy1_write_conn,jiacy1_none_conn,jiacy0_write_conn,jiacy0_none_conn,jiacy1_all_conn,jiacy1_read_conn,jiacy0_all_conn,jiacy0_read_conn]:
|
for user in [jiacy1_write_conn, jiacy1_none_conn, jiacy0_write_conn, jiacy0_none_conn, jiacy1_all_conn,
|
||||||
|
jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
||||||
sql_list = []
|
sql_list = []
|
||||||
if user in [jiacy1_all_conn, jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
if user in [jiacy1_all_conn, jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
||||||
sql_list = ['drop topic root_db']
|
sql_list = ['drop topic root_db']
|
||||||
|
@ -134,27 +140,20 @@ class TDTestCase:
|
||||||
self.queryCols = 0
|
self.queryCols = 0
|
||||||
self.queryResult = None
|
self.queryResult = None
|
||||||
tdLog.info(f"sql:{sql}, expect error occured")
|
tdLog.info(f"sql:{sql}, expect error occured")
|
||||||
|
|
||||||
def tmq_commit_cb_print(tmq, resp, param=None):
|
def tmq_commit_cb_print(tmq, resp, param=None):
|
||||||
print(f"commit: {resp}, tmq: {tmq}, param: {param}")
|
print(f"commit: {resp}, tmq: {tmq}, param: {param}")
|
||||||
|
|
||||||
def subscribe_topic(self):
|
def subscribe_topic(self):
|
||||||
print("create topic")
|
print("create topic")
|
||||||
tdSql.execute('create topic db_topic as select * from db.stb')
|
tdSql.execute('create topic db_topic as select * from db.stb')
|
||||||
tdSql.execute('grant subscribe on db_topic to jiacy1_all')
|
tdSql.execute('grant subscribe on db_topic to jiacy1_all')
|
||||||
print("build consumer")
|
print("build consumer")
|
||||||
conf = TaosTmqConf()
|
tmq = Consumer({"group.id": "tg2", "td.connect.user": "jiacy1_all", "td.connect.pass": "123",
|
||||||
conf.set("group.id", "tg2")
|
"enable.auto.commit": "true"})
|
||||||
conf.set("td.connect.user", "jiacy1_all")
|
|
||||||
conf.set("td.connect.pass", "123")
|
|
||||||
conf.set("enable.auto.commit", "true")
|
|
||||||
conf.set_auto_commit_cb(self.tmq_commit_cb_print, None)
|
|
||||||
tmq = conf.new_consumer()
|
|
||||||
print("build topic list")
|
print("build topic list")
|
||||||
topic_list = TaosTmqList()
|
tmq.subscribe(["db_topic"])
|
||||||
topic_list.append("db_topic")
|
|
||||||
print("basic consume loop")
|
print("basic consume loop")
|
||||||
tmq.subscribe(topic_list)
|
|
||||||
sub_list = tmq.subscription()
|
|
||||||
print("subscribed topics: ", sub_list)
|
|
||||||
c = 0
|
c = 0
|
||||||
l = 0
|
l = 0
|
||||||
for i in range(10):
|
for i in range(10):
|
||||||
|
@ -163,19 +162,22 @@ class TDTestCase:
|
||||||
res = tmq.poll(10)
|
res = tmq.poll(10)
|
||||||
print(f"loop {l}")
|
print(f"loop {l}")
|
||||||
l += 1
|
l += 1
|
||||||
if res:
|
if not res:
|
||||||
|
print(f"received empty message at loop {l} (committed {c})")
|
||||||
|
continue
|
||||||
|
if res.error():
|
||||||
|
print(f"consumer error at loop {l} (committed {c}) {res.error()}")
|
||||||
|
continue
|
||||||
|
|
||||||
c += 1
|
c += 1
|
||||||
topic = res.get_topic_name()
|
topic = res.topic()
|
||||||
vg = res.get_vgroup_id()
|
db = res.database()
|
||||||
db = res.get_db_name()
|
print(f"topic: {topic}\ndb: {db}")
|
||||||
print(f"topic: {topic}\nvgroup id: {vg}\ndb: {db}")
|
|
||||||
for row in res:
|
for row in res:
|
||||||
print(row)
|
print(row.fetchall())
|
||||||
print("* committed")
|
print("* committed")
|
||||||
tmq.commit(res)
|
tmq.commit(res)
|
||||||
else:
|
|
||||||
print(f"received empty message at loop {l} (committed {c})")
|
|
||||||
pass
|
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
tdSql.prepare()
|
tdSql.prepare()
|
||||||
|
@ -184,9 +186,11 @@ class TDTestCase:
|
||||||
self.drop_topic()
|
self.drop_topic()
|
||||||
self.user_privilege_check()
|
self.user_privilege_check()
|
||||||
self.subscribe_topic()
|
self.subscribe_topic()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
tdSql.close()
|
tdSql.close()
|
||||||
tdLog.success("%s successfully executed" % __file__)
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
|
||||||
tdCases.addWindows(__file__, TDTestCase())
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
tdCases.addLinux(__file__, TDTestCase())
|
tdCases.addLinux(__file__, TDTestCase())
|
Loading…
Reference in New Issue