Merge branch '3.0' into feat/TD-30813-2
This commit is contained in:
commit
c7dee947cc
|
@ -193,7 +193,7 @@ int32_t tColDataDecompress(void *input, SColDataCompressInfo *info, SColData *co
|
|||
|
||||
// for stmt bind
|
||||
int32_t tColDataAddValueByBind(SColData *pColData, TAOS_MULTI_BIND *pBind, int32_t buffMaxLen);
|
||||
void tColDataSortMerge(SArray *colDataArr);
|
||||
int32_t tColDataSortMerge(SArray *colDataArr);
|
||||
|
||||
// for raw block
|
||||
int32_t tColDataAddValueByDataBlock(SColData *pColData, int8_t type, int32_t bytes, int32_t nRows, char *lengthOrbitmap,
|
||||
|
|
|
@ -213,7 +213,6 @@ static FORCE_INLINE SKvRowIdx *tdKvRowColIdxAt(STSRow *pRow, col_id_t idx) {
|
|||
}
|
||||
|
||||
static FORCE_INLINE int16_t tdKvRowColIdAt(STSRow *pRow, col_id_t idx) {
|
||||
ASSERT(idx >= 0);
|
||||
if (idx == 0) {
|
||||
return PRIMARYKEY_TIMESTAMP_COL_ID;
|
||||
}
|
||||
|
@ -288,9 +287,7 @@ int32_t tdGetBitmapValType(const void *pBitmap, int16_t colIdx, TDRowValT *pValT
|
|||
*
|
||||
*/
|
||||
|
||||
static FORCE_INLINE void tdSRowInit(SRowBuilder *pBuilder, int16_t sver) {
|
||||
pBuilder->sver = sver;
|
||||
}
|
||||
static FORCE_INLINE void tdSRowInit(SRowBuilder *pBuilder, int16_t sver) { pBuilder->sver = sver; }
|
||||
int32_t tdSRowSetInfo(SRowBuilder *pBuilder, int32_t nCols, int32_t nBoundCols, int32_t flen);
|
||||
int32_t tdSRowSetTpInfo(SRowBuilder *pBuilder, int32_t nCols, int32_t flen);
|
||||
int32_t tdSRowSetExtendedInfo(SRowBuilder *pBuilder, int32_t nCols, int32_t nBoundCols, int32_t flen,
|
||||
|
|
|
@ -53,7 +53,7 @@ void taosVariantCreateFromBinary(SVariant *pVar, const char *pz, size_t len, uin
|
|||
|
||||
void taosVariantDestroy(SVariant *pV);
|
||||
|
||||
void taosVariantAssign(SVariant *pDst, const SVariant *pSrc);
|
||||
int32_t taosVariantAssign(SVariant *pDst, const SVariant *pSrc);
|
||||
|
||||
int32_t taosVariantCompare(const SVariant *p1, const SVariant *p2);
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@ extern "C" {
|
|||
#define MON_VER_LEN 12
|
||||
#define MON_LOG_LEN 1024
|
||||
|
||||
#define VNODE_METRIC_TAG_VALUE_INSERT_AFFECTED_ROWS "inserted_rows"
|
||||
|
||||
typedef struct {
|
||||
int64_t ts;
|
||||
ELogLevel level;
|
||||
|
@ -216,6 +218,7 @@ typedef struct {
|
|||
} SDmNotifyHandle;
|
||||
|
||||
int32_t monInit(const SMonCfg *pCfg);
|
||||
void monInitVnode();
|
||||
void monCleanup();
|
||||
void monRecordLog(int64_t ts, ELogLevel level, const char *content);
|
||||
int32_t monGetLogs(SMonLogs *logs);
|
||||
|
|
|
@ -152,6 +152,7 @@ int32_t taosGetErrSize();
|
|||
#define TSDB_CODE_FAILED_TO_CONNECT_S3 TAOS_DEF_ERROR_CODE(0, 0x0135)
|
||||
#define TSDB_CODE_MSG_PREPROCESSED TAOS_DEF_ERROR_CODE(0, 0x0136) // internal
|
||||
#define TSDB_CODE_OUT_OF_BUFFER TAOS_DEF_ERROR_CODE(0, 0x0137)
|
||||
#define TSDB_CODE_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x0138)
|
||||
|
||||
//client
|
||||
#define TSDB_CODE_TSC_INVALID_OPERATION TAOS_DEF_ERROR_CODE(0, 0x0200)
|
||||
|
@ -964,6 +965,7 @@ int32_t taosGetErrSize();
|
|||
#define TSDB_CODE_STREAM_INVALID_STATETRANS TAOS_DEF_ERROR_CODE(0, 0x4103)
|
||||
#define TSDB_CODE_STREAM_TASK_IVLD_STATUS TAOS_DEF_ERROR_CODE(0, 0x4104)
|
||||
#define TSDB_CODE_STREAM_NOT_LEADER TAOS_DEF_ERROR_CODE(0, 0x4105)
|
||||
#define TSDB_CODE_STREAM_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x4106)
|
||||
|
||||
// TDLite
|
||||
#define TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS TAOS_DEF_ERROR_CODE(0, 0x5100)
|
||||
|
|
|
@ -98,11 +98,6 @@
|
|||
# enable/disable system monitor
|
||||
# monitor 1
|
||||
|
||||
# enable/disable audit log
|
||||
# audit 1
|
||||
|
||||
# enable/disable audit create table
|
||||
# auditCreateTable 1
|
||||
|
||||
# The following parameter is used to limit the maximum number of lines in log files.
|
||||
# max number of lines per log filters
|
||||
|
|
|
@ -176,16 +176,20 @@ int32_t taos_connect_internal(const char* ip, const char* user, const char* pass
|
|||
|
||||
_return:
|
||||
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
(void)taosThreadMutexUnlock(&appInfo.mutex);
|
||||
taosMemoryFreeClear(key);
|
||||
return code;
|
||||
} else {
|
||||
code = taosThreadMutexUnlock(&appInfo.mutex);
|
||||
taosMemoryFreeClear(key);
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
tscError("failed to unlock app info, code:%s", tstrerror(TAOS_SYSTEM_ERROR(code)));
|
||||
return code;
|
||||
}
|
||||
|
||||
taosMemoryFreeClear(key);
|
||||
|
||||
return taosConnectImpl(user, &secretEncrypt[0], localDb, NULL, NULL, *pInst, connType, pObj);
|
||||
}
|
||||
}
|
||||
|
||||
//SAppInstInfo* getAppInstInfo(const char* clusterKey) {
|
||||
// SAppInstInfo** ppAppInstInfo = taosHashGet(appInfo.pInstMap, clusterKey, strlen(clusterKey));
|
||||
|
@ -1792,6 +1796,7 @@ void processMsgFromServer(void* parent, SRpcMsg* pMsg, SEpSet* pEpSet) {
|
|||
AsyncArg* arg = taosMemoryCalloc(1, sizeof(AsyncArg));
|
||||
if (NULL == arg) {
|
||||
pMsg->code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
taosMemoryFree(tEpSet);
|
||||
rpcFreeCont(pMsg->pCont);
|
||||
destroySendMsgInfo(pMsg->info.ahandle);
|
||||
return;
|
||||
|
|
|
@ -120,9 +120,13 @@ static int32_t monitorReportAsyncCB(void* param, SDataBuf* pMsg, int32_t code) {
|
|||
.data = NULL};
|
||||
if (monitorPutData2MonitorQueue(tmp) == 0) {
|
||||
p->fileName = NULL;
|
||||
} else {
|
||||
if(taosCloseFile(&(p->pFile)) != 0) {
|
||||
tscError("failed to close file:%p", p->pFile);
|
||||
}
|
||||
}
|
||||
return code;
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
static int32_t sendReport(void* pTransporter, SEpSet* epSet, char* pCont, MONITOR_TYPE type, void* param) {
|
||||
|
@ -165,6 +169,9 @@ static int32_t sendReport(void* pTransporter, SEpSet* epSet, char* pCont, MONITO
|
|||
return asyncSendMsgToServer(pTransporter, epSet, &transporterId, pInfo);
|
||||
|
||||
FAILED:
|
||||
if (taosCloseFile(&(((MonitorSlowLogData*)param)->pFile)) != 0) {
|
||||
tscError("failed to close file:%p", ((MonitorSlowLogData*)param)->pFile);
|
||||
}
|
||||
monitorFreeSlowLogDataEx(param);
|
||||
return TAOS_GET_TERRNO(TSDB_CODE_TSC_INTERNAL_ERROR);
|
||||
}
|
||||
|
@ -315,7 +322,7 @@ void monitorCreateClientCounter(int64_t clusterId, const char* name, const char*
|
|||
void monitorCounterInc(int64_t clusterId, const char* counterName, const char** label_values) {
|
||||
taosWLockLatch(&monitorLock);
|
||||
if (atomic_load_32(&monitorFlag) == 1) {
|
||||
taosRUnLockLatch(&monitorLock);
|
||||
taosWUnLockLatch(&monitorLock);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -462,11 +469,17 @@ static int64_t getFileSize(char* path) {
|
|||
static int32_t sendSlowLog(int64_t clusterId, char* data, TdFilePtr pFile, int64_t offset, SLOW_LOG_QUEUE_TYPE type,
|
||||
char* fileName, void* pTransporter, SEpSet* epSet) {
|
||||
if (data == NULL) {
|
||||
if (taosCloseFile(&pFile) != 0) {
|
||||
tscError("failed to close file:%p", pFile);
|
||||
}
|
||||
taosMemoryFree(fileName);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
MonitorSlowLogData* pParam = taosMemoryMalloc(sizeof(MonitorSlowLogData));
|
||||
if (pParam == NULL) {
|
||||
if (taosCloseFile(&pFile) != 0) {
|
||||
tscError("failed to close file:%p", pFile);
|
||||
}
|
||||
taosMemoryFree(data);
|
||||
taosMemoryFree(fileName);
|
||||
return terrno;
|
||||
|
@ -485,6 +498,9 @@ static int32_t monitorReadSend(int64_t clusterId, TdFilePtr pFile, int64_t* offs
|
|||
SAppInstInfo* pInst = getAppInstByClusterId(clusterId);
|
||||
if (pInst == NULL) {
|
||||
tscError("failed to get app instance by clusterId:%" PRId64, clusterId);
|
||||
if (taosCloseFile(&pFile) != 0) {
|
||||
tscError("failed to close file:%p", pFile);
|
||||
}
|
||||
taosMemoryFree(fileName);
|
||||
return terrno;
|
||||
}
|
||||
|
@ -710,7 +726,7 @@ static void* monitorThreadFunc(void* param) {
|
|||
MonitorSlowLogData* slowLogData = NULL;
|
||||
(void)taosReadQitem(monitorQueue, (void**)&slowLogData);
|
||||
if (slowLogData != NULL) {
|
||||
if (slowLogData->type == SLOW_LOG_READ_BEGINNIG) {
|
||||
if (slowLogData->type == SLOW_LOG_READ_BEGINNIG && quitCnt == 0) {
|
||||
if (slowLogData->pFile != NULL) {
|
||||
monitorSendSlowLogAtBeginning(slowLogData->clusterId, &(slowLogData->fileName), slowLogData->pFile,
|
||||
slowLogData->offset);
|
||||
|
@ -729,9 +745,9 @@ static void* monitorThreadFunc(void* param) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
monitorFreeSlowLogData(slowLogData);
|
||||
taosFreeQitem(slowLogData);
|
||||
}
|
||||
|
||||
if (quitCnt == 0) {
|
||||
monitorSendAllSlowLog();
|
||||
|
@ -853,6 +869,9 @@ int32_t monitorPutData2MonitorQueue(MonitorSlowLogData data) {
|
|||
if (taosWriteQitem(monitorQueue, slowLogData) == 0) {
|
||||
(void)tsem2_post(&monitorSem);
|
||||
} else {
|
||||
if (taosCloseFile(&(slowLogData->pFile)) != 0) {
|
||||
tscError("failed to close file:%p", slowLogData->pFile);
|
||||
}
|
||||
monitorFreeSlowLogData(slowLogData);
|
||||
taosFreeQitem(slowLogData);
|
||||
}
|
||||
|
|
|
@ -1670,6 +1670,8 @@ int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src) {
|
|||
int32_t code = 0;
|
||||
|
||||
dst->info = src->info;
|
||||
dst->info.pks[0].pData = NULL;
|
||||
dst->info.pks[1].pData = NULL;
|
||||
dst->info.rows = 0;
|
||||
dst->info.capacity = 0;
|
||||
|
||||
|
@ -1707,6 +1709,8 @@ int32_t assignOneDataBlock(SSDataBlock* dst, const SSDataBlock* src) {
|
|||
|
||||
uint32_t cap = dst->info.capacity;
|
||||
dst->info = src->info;
|
||||
dst->info.pks[0].pData = NULL;
|
||||
dst->info.pks[1].pData = NULL;
|
||||
dst->info.capacity = cap;
|
||||
return code;
|
||||
}
|
||||
|
@ -1737,6 +1741,8 @@ int32_t copyDataBlock(SSDataBlock* pDst, const SSDataBlock* pSrc) {
|
|||
uint32_t cap = pDst->info.capacity;
|
||||
|
||||
pDst->info = pSrc->info;
|
||||
pDst->info.pks[0].pData = NULL;
|
||||
pDst->info.pks[1].pData = NULL;
|
||||
code = copyPkVal(&pDst->info, &pSrc->info);
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
uError("%s failed at line %d since %s", __func__, __LINE__, tstrerror(code));
|
||||
|
@ -1854,6 +1860,8 @@ int32_t blockCopyOneRow(const SSDataBlock* pDataBlock, int32_t rowIdx, SSDataBlo
|
|||
}
|
||||
|
||||
pBlock->info = pDataBlock->info;
|
||||
pBlock->info.pks[0].pData = NULL;
|
||||
pBlock->info.pks[1].pData = NULL;
|
||||
pBlock->info.rows = 0;
|
||||
pBlock->info.capacity = 0;
|
||||
|
||||
|
@ -1916,20 +1924,20 @@ int32_t copyPkVal(SDataBlockInfo* pDst, const SDataBlockInfo* pSrc) {
|
|||
// prepare the pk buffer if needed
|
||||
SValue* p = &pDst->pks[0];
|
||||
|
||||
p->type = pDst->pks[0].type;
|
||||
p->pData = taosMemoryCalloc(1, pDst->pks[0].nData);
|
||||
p->type = pSrc->pks[0].type;
|
||||
p->pData = taosMemoryCalloc(1, pSrc->pks[0].nData);
|
||||
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
|
||||
|
||||
p->nData = pDst->pks[0].nData;
|
||||
memcpy(p->pData, pDst->pks[0].pData, p->nData);
|
||||
p->nData = pSrc->pks[0].nData;
|
||||
memcpy(p->pData, pSrc->pks[0].pData, p->nData);
|
||||
|
||||
p = &pDst->pks[1];
|
||||
p->type = pDst->pks[1].type;
|
||||
p->pData = taosMemoryCalloc(1, pDst->pks[1].nData);
|
||||
p->type = pSrc->pks[1].type;
|
||||
p->pData = taosMemoryCalloc(1, pSrc->pks[1].nData);
|
||||
QUERY_CHECK_NULL(p->pData, code, lino, _end, terrno);
|
||||
|
||||
p->nData = pDst->pks[1].nData;
|
||||
memcpy(p->pData, pDst->pks[1].pData, p->nData);
|
||||
p->nData = pSrc->pks[1].nData;
|
||||
memcpy(p->pData, pSrc->pks[1].pData, p->nData);
|
||||
|
||||
_end:
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
|
@ -1951,6 +1959,8 @@ int32_t createOneDataBlock(const SSDataBlock* pDataBlock, bool copyData, SSDataB
|
|||
}
|
||||
|
||||
pDstBlock->info = pDataBlock->info;
|
||||
pDstBlock->info.pks[0].pData = NULL;
|
||||
pDstBlock->info.pks[1].pData = NULL;
|
||||
|
||||
pDstBlock->info.rows = 0;
|
||||
pDstBlock->info.capacity = 0;
|
||||
|
|
|
@ -119,7 +119,6 @@ static FORCE_INLINE void tRowBuildScanAddValue(SRowBuildScanInfo *sinfo, SColVal
|
|||
bool isPK = ((pTColumn->flags & COL_IS_KEY) != 0);
|
||||
|
||||
if (isPK) {
|
||||
ASSERTS(sinfo->numOfPKs < TD_MAX_PK_COLS, "too many primary keys");
|
||||
sinfo->tupleIndices[sinfo->numOfPKs].type = colVal->value.type;
|
||||
sinfo->tupleIndices[sinfo->numOfPKs].offset =
|
||||
IS_VAR_DATA_TYPE(pTColumn->type) ? sinfo->tupleVarSize + sinfo->tupleFixedSize : pTColumn->offset;
|
||||
|
@ -149,9 +148,15 @@ static int32_t tRowBuildScan(SArray *colVals, const STSchema *schema, SRowBuildS
|
|||
int32_t numOfColVals = TARRAY_SIZE(colVals);
|
||||
SColVal *colValArray = (SColVal *)TARRAY_DATA(colVals);
|
||||
|
||||
ASSERT(numOfColVals > 0);
|
||||
ASSERT(colValArray[0].cid == PRIMARYKEY_TIMESTAMP_COL_ID);
|
||||
ASSERT(colValArray[0].value.type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
if (!(numOfColVals > 0)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (!(colValArray[0].cid == PRIMARYKEY_TIMESTAMP_COL_ID)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (!(colValArray[0].value.type == TSDB_DATA_TYPE_TIMESTAMP)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
*sinfo = (SRowBuildScanInfo){
|
||||
.tupleFixedSize = schema->flen,
|
||||
|
@ -166,7 +171,10 @@ static int32_t tRowBuildScan(SArray *colVals, const STSchema *schema, SRowBuildS
|
|||
}
|
||||
|
||||
if (colValArray[colValIndex].cid == schema->columns[i].colId) {
|
||||
ASSERT(colValArray[colValIndex].value.type == schema->columns[i].type);
|
||||
if (!(colValArray[colValIndex].value.type == schema->columns[i].type)) {
|
||||
code = TSDB_CODE_INVALID_PARA;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
if (COL_VAL_IS_VALUE(&colValArray[colValIndex])) {
|
||||
tRowBuildScanAddValue(sinfo, &colValArray[colValIndex], schema->columns + i);
|
||||
|
@ -272,7 +280,6 @@ static int32_t tRowBuildTupleRow(SArray *aColVal, const SRowBuildScanInfo *sinfo
|
|||
(*ppRow)->ts = colValArray[0].value.val;
|
||||
|
||||
if (sinfo->tupleFlag == HAS_NONE || sinfo->tupleFlag == HAS_NULL) {
|
||||
ASSERT(sinfo->tupleRowSize == sizeof(SRow));
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -285,7 +292,6 @@ static int32_t tRowBuildTupleRow(SArray *aColVal, const SRowBuildScanInfo *sinfo
|
|||
for (int32_t i = 0; i < sinfo->numOfPKs; i++) {
|
||||
primaryKeys += tPutPrimaryKeyIndex(primaryKeys, sinfo->tupleIndices + i);
|
||||
}
|
||||
ASSERT(primaryKeys == bitmap);
|
||||
|
||||
// bitmap + fixed + varlen
|
||||
int32_t numOfColVals = TARRAY_SIZE(aColVal);
|
||||
|
@ -356,7 +362,9 @@ static int32_t tRowBuildKVRow(SArray *aColVal, const SRowBuildScanInfo *sinfo, c
|
|||
(*ppRow)->len = sinfo->kvRowSize;
|
||||
(*ppRow)->ts = colValArray[0].value.val;
|
||||
|
||||
ASSERT(sinfo->flag != HAS_NONE && sinfo->flag != HAS_NULL);
|
||||
if (!(sinfo->flag != HAS_NONE && sinfo->flag != HAS_NULL)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
uint8_t *primaryKeys = (*ppRow)->data;
|
||||
SKVIdx *indices = (SKVIdx *)(primaryKeys + sinfo->kvPKSize);
|
||||
|
@ -367,7 +375,6 @@ static int32_t tRowBuildKVRow(SArray *aColVal, const SRowBuildScanInfo *sinfo, c
|
|||
for (int32_t i = 0; i < sinfo->numOfPKs; i++) {
|
||||
primaryKeys += tPutPrimaryKeyIndex(primaryKeys, sinfo->kvIndices + i);
|
||||
}
|
||||
ASSERT(primaryKeys == (uint8_t *)indices);
|
||||
|
||||
int32_t numOfColVals = TARRAY_SIZE(aColVal);
|
||||
int32_t colValIndex = 1;
|
||||
|
@ -504,8 +511,8 @@ _exit:
|
|||
}
|
||||
|
||||
int32_t tRowGet(SRow *pRow, STSchema *pTSchema, int32_t iCol, SColVal *pColVal) {
|
||||
ASSERT(iCol < pTSchema->numOfCols);
|
||||
ASSERT(pRow->sver == pTSchema->version);
|
||||
if (!(iCol < pTSchema->numOfCols)) return TSDB_CODE_INVALID_PARA;
|
||||
if (!(pRow->sver == pTSchema->version)) return TSDB_CODE_INVALID_PARA;
|
||||
|
||||
STColumn *pTColumn = pTSchema->columns + iCol;
|
||||
|
||||
|
@ -786,7 +793,7 @@ struct SRowIter {
|
|||
};
|
||||
|
||||
int32_t tRowIterOpen(SRow *pRow, STSchema *pTSchema, SRowIter **ppIter) {
|
||||
ASSERT(pRow->sver == pTSchema->version);
|
||||
if (!(pRow->sver == pTSchema->version)) return TSDB_CODE_INVALID_PARA;
|
||||
|
||||
int32_t code = 0;
|
||||
|
||||
|
@ -839,7 +846,6 @@ int32_t tRowIterOpen(SRow *pRow, STSchema *pTSchema, SRowIter **ppIter) {
|
|||
pIter->pv = pIter->pf + pTSchema->flen;
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -952,7 +958,6 @@ SColVal *tRowIterNext(SRowIter *pIter) {
|
|||
bv = GET_BIT2(pIter->pb, pIter->iTColumn - 1);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1070,14 +1075,15 @@ static int32_t tRowTupleUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *
|
|||
pv = pf + pTSchema->flen;
|
||||
break;
|
||||
default:
|
||||
ASSERTS(0, "Invalid row flag");
|
||||
return TSDB_CODE_INVALID_DATA_FMT;
|
||||
}
|
||||
|
||||
while (pColData) {
|
||||
if (pTColumn) {
|
||||
if (pTColumn->colId == pColData->cid) {
|
||||
ASSERT(pTColumn->type == pColData->type);
|
||||
if (!(pTColumn->type == pColData->type)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (pb) {
|
||||
uint8_t bv;
|
||||
switch (pRow->flag) {
|
||||
|
@ -1095,7 +1101,6 @@ static int32_t tRowTupleUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *
|
|||
bv = GET_BIT2(pb, iTColumn - 1);
|
||||
break;
|
||||
default:
|
||||
ASSERTS(0, "Invalid row flag");
|
||||
return TSDB_CODE_INVALID_DATA_FMT;
|
||||
}
|
||||
|
||||
|
@ -1178,7 +1183,7 @@ static int32_t tRowKVUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aCo
|
|||
} else if (pRow->flag & KV_FLG_BIG) {
|
||||
pv = pKVIdx->idx + (pKVIdx->nCol << 2);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
while (pColData) {
|
||||
|
@ -1193,7 +1198,6 @@ static int32_t tRowKVUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aCo
|
|||
} else if (pRow->flag & KV_FLG_BIG) {
|
||||
pData = pv + ((uint32_t *)pKVIdx->idx)[iCol];
|
||||
} else {
|
||||
ASSERTS(0, "Invalid KV row format");
|
||||
return TSDB_CODE_INVALID_DATA_FMT;
|
||||
}
|
||||
|
||||
|
@ -1256,8 +1260,8 @@ _exit:
|
|||
* flag < 0: backward update
|
||||
*/
|
||||
int32_t tRowUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aColData, int32_t nColData, int32_t flag) {
|
||||
ASSERT(pRow->sver == pTSchema->version);
|
||||
ASSERT(nColData > 0);
|
||||
if (!(pRow->sver == pTSchema->version)) return TSDB_CODE_INVALID_PARA;
|
||||
if (!(nColData > 0)) return TSDB_CODE_INVALID_PARA;
|
||||
|
||||
if (pRow->flag == HAS_NONE) {
|
||||
return tRowNoneUpsertColData(aColData, nColData, flag);
|
||||
|
@ -1277,8 +1281,6 @@ void tRowGetPrimaryKey(SRow *row, SRowKey *key) {
|
|||
return;
|
||||
}
|
||||
|
||||
ASSERT(row->numOfPKs <= TD_MAX_PK_COLS);
|
||||
|
||||
SPrimaryKeyIndex indices[TD_MAX_PK_COLS];
|
||||
|
||||
uint8_t *data = row->data;
|
||||
|
@ -1317,8 +1319,6 @@ void tRowGetPrimaryKey(SRow *row, SRowKey *key) {
|
|||
} while (0)
|
||||
|
||||
int32_t tValueCompare(const SValue *tv1, const SValue *tv2) {
|
||||
ASSERT(tv1->type == tv2->type);
|
||||
|
||||
switch (tv1->type) {
|
||||
case TSDB_DATA_TYPE_BOOL:
|
||||
case TSDB_DATA_TYPE_TINYINT:
|
||||
|
@ -1476,7 +1476,6 @@ static void debugPrintTagVal(int8_t type, const void *val, int32_t vlen, const c
|
|||
printf("%s:%d type:%d vlen:%d, val:%" PRIi8 "\n", tag, ln, (int32_t)type, vlen, *(int8_t *)val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1526,7 +1525,6 @@ static int32_t tPutTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
|
|||
n += tPutCStr(p ? p + n : p, pTagVal->pKey);
|
||||
} else {
|
||||
n += tPutI16v(p ? p + n : p, pTagVal->cid);
|
||||
ASSERTS(pTagVal->cid > 0, "Invalid tag cid:%" PRIi16, pTagVal->cid);
|
||||
}
|
||||
|
||||
// type
|
||||
|
@ -1602,8 +1600,6 @@ int32_t tTagNew(SArray *pArray, int32_t version, int8_t isJson, STag **ppTag) {
|
|||
isLarge = 1;
|
||||
}
|
||||
|
||||
ASSERT(szTag <= INT16_MAX);
|
||||
|
||||
// build tag
|
||||
(*ppTag) = (STag *)taosMemoryCalloc(szTag, 1);
|
||||
if ((*ppTag) == NULL) {
|
||||
|
@ -1806,8 +1802,14 @@ STSchema *tBuildTSchema(SSchema *aSchema, int32_t numOfCols, int32_t version) {
|
|||
pTSchema->version = version;
|
||||
|
||||
// timestamp column
|
||||
ASSERT(aSchema[0].type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
ASSERT(aSchema[0].colId == PRIMARYKEY_TIMESTAMP_COL_ID);
|
||||
if (!(aSchema[0].type == TSDB_DATA_TYPE_TIMESTAMP)) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
if (!(aSchema[0].colId == PRIMARYKEY_TIMESTAMP_COL_ID)) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
pTSchema->columns[0].colId = aSchema[0].colId;
|
||||
pTSchema->columns[0].type = aSchema[0].type;
|
||||
pTSchema->columns[0].flags = aSchema[0].flags;
|
||||
|
@ -1910,7 +1912,9 @@ static FORCE_INLINE int32_t tColDataPutValue(SColData *pColData, uint8_t *pData,
|
|||
pColData->nData += nData;
|
||||
}
|
||||
} else {
|
||||
ASSERT(pColData->nData == tDataTypes[pColData->type].bytes * pColData->nVal);
|
||||
if (!(pColData->nData == tDataTypes[pColData->type].bytes * pColData->nVal)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
code = tRealloc(&pColData->pData, pColData->nData + tDataTypes[pColData->type].bytes);
|
||||
if (code) goto _exit;
|
||||
if (pData) {
|
||||
|
@ -2259,7 +2263,9 @@ static int32_t (*tColDataAppendValueImpl[8][3])(SColData *pColData, uint8_t *pDa
|
|||
// VALUE NONE NULL
|
||||
};
|
||||
int32_t tColDataAppendValue(SColData *pColData, SColVal *pColVal) {
|
||||
ASSERT(pColData->cid == pColVal->cid && pColData->type == pColVal->value.type);
|
||||
if (!(pColData->cid == pColVal->cid && pColData->type == pColVal->value.type)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
return tColDataAppendValueImpl[pColData->flag][pColVal->flag](
|
||||
pColData, IS_VAR_DATA_TYPE(pColData->type) ? pColVal->value.pData : (uint8_t *)&pColVal->value.val,
|
||||
pColVal->value.nData);
|
||||
|
@ -2569,8 +2575,8 @@ static int32_t (*tColDataUpdateValueImpl[8][3])(SColData *pColData, uint8_t *pDa
|
|||
// VALUE NONE NULL
|
||||
};
|
||||
int32_t tColDataUpdateValue(SColData *pColData, SColVal *pColVal, bool forward) {
|
||||
ASSERT(pColData->cid == pColVal->cid && pColData->type == pColVal->value.type);
|
||||
ASSERT(pColData->nVal > 0);
|
||||
if (!(pColData->cid == pColVal->cid && pColData->type == pColVal->value.type)) return TSDB_CODE_INVALID_PARA;
|
||||
if (!(pColData->nVal > 0)) return TSDB_CODE_INVALID_PARA;
|
||||
|
||||
if (tColDataUpdateValueImpl[pColData->flag][pColVal->flag] == NULL) return 0;
|
||||
|
||||
|
@ -2687,7 +2693,6 @@ uint8_t tColDataGetBitValue(const SColData *pColData, int32_t iVal) {
|
|||
case (HAS_VALUE | HAS_NULL | HAS_NONE):
|
||||
return GET_BIT2(pColData->pBitMap, iVal);
|
||||
default:
|
||||
ASSERTS(0, "not possible");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -3053,7 +3058,9 @@ int32_t tColDataAddValueByBind(SColData *pColData, TAOS_MULTI_BIND *pBind, int32
|
|||
int32_t code = 0;
|
||||
|
||||
if (!(pBind->num == 1 && pBind->is_null && *pBind->is_null)) {
|
||||
ASSERT(pColData->type == pBind->buffer_type);
|
||||
if (!(pColData->type == pBind->buffer_type)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
|
||||
if (IS_VAR_DATA_TYPE(pColData->type)) { // var-length data type
|
||||
|
@ -3677,15 +3684,21 @@ static void tColDataMerge(SColData *aColData, int32_t nColData) {
|
|||
}
|
||||
}
|
||||
|
||||
void tColDataSortMerge(SArray *colDataArr) {
|
||||
int32_t tColDataSortMerge(SArray *colDataArr) {
|
||||
int32_t nColData = TARRAY_SIZE(colDataArr);
|
||||
SColData *aColData = (SColData *)TARRAY_DATA(colDataArr);
|
||||
|
||||
if (aColData[0].nVal <= 1) goto _exit;
|
||||
if (!(aColData[0].type == TSDB_DATA_TYPE_TIMESTAMP)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (!(aColData[0].cid == PRIMARYKEY_TIMESTAMP_COL_ID)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (!(aColData[0].flag == HAS_VALUE)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
ASSERT(aColData[0].type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
ASSERT(aColData[0].cid == PRIMARYKEY_TIMESTAMP_COL_ID);
|
||||
ASSERT(aColData[0].flag == HAS_VALUE);
|
||||
if (aColData[0].nVal <= 1) goto _exit;
|
||||
|
||||
int8_t doSort = 0;
|
||||
int8_t doMerge = 0;
|
||||
|
@ -3734,7 +3747,7 @@ void tColDataSortMerge(SArray *colDataArr) {
|
|||
}
|
||||
|
||||
_exit:
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t tPutColDataVersion0(uint8_t *pBuf, SColData *pColData) {
|
||||
|
@ -3841,8 +3854,7 @@ int32_t tPutColData(uint8_t version, uint8_t *pBuf, SColData *pColData) {
|
|||
} else if (version == 1) {
|
||||
return tPutColDataVersion1(pBuf, pColData);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return -1;
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3852,8 +3864,7 @@ int32_t tGetColData(uint8_t version, uint8_t *pBuf, SColData *pColData) {
|
|||
} else if (version == 1) {
|
||||
return tGetColDataVersion1(pBuf, pColData);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return -1;
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3889,7 +3900,6 @@ static FORCE_INLINE void tColDataCalcSMABool(SColData *pColData, int64_t *sum, i
|
|||
CALC_SUM_MAX_MIN(*sum, *max, *min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3921,7 +3931,6 @@ static FORCE_INLINE void tColDataCalcSMATinyInt(SColData *pColData, int64_t *sum
|
|||
CALC_SUM_MAX_MIN(*sum, *max, *min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3953,7 +3962,6 @@ static FORCE_INLINE void tColDataCalcSMATinySmallInt(SColData *pColData, int64_t
|
|||
CALC_SUM_MAX_MIN(*sum, *max, *min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3985,7 +3993,6 @@ static FORCE_INLINE void tColDataCalcSMAInt(SColData *pColData, int64_t *sum, in
|
|||
CALC_SUM_MAX_MIN(*sum, *max, *min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4017,7 +4024,6 @@ static FORCE_INLINE void tColDataCalcSMABigInt(SColData *pColData, int64_t *sum,
|
|||
CALC_SUM_MAX_MIN(*sum, *max, *min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4049,7 +4055,6 @@ static FORCE_INLINE void tColDataCalcSMAFloat(SColData *pColData, int64_t *sum,
|
|||
CALC_SUM_MAX_MIN(*(double *)sum, *(double *)max, *(double *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4081,7 +4086,6 @@ static FORCE_INLINE void tColDataCalcSMADouble(SColData *pColData, int64_t *sum,
|
|||
CALC_SUM_MAX_MIN(*(double *)sum, *(double *)max, *(double *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4113,7 +4117,6 @@ static FORCE_INLINE void tColDataCalcSMAUTinyInt(SColData *pColData, int64_t *su
|
|||
CALC_SUM_MAX_MIN(*(uint64_t *)sum, *(uint64_t *)max, *(uint64_t *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4145,7 +4148,6 @@ static FORCE_INLINE void tColDataCalcSMATinyUSmallInt(SColData *pColData, int64_
|
|||
CALC_SUM_MAX_MIN(*(uint64_t *)sum, *(uint64_t *)max, *(uint64_t *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4177,7 +4179,6 @@ static FORCE_INLINE void tColDataCalcSMAUInt(SColData *pColData, int64_t *sum, i
|
|||
CALC_SUM_MAX_MIN(*(uint64_t *)sum, *(uint64_t *)max, *(uint64_t *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4209,7 +4210,6 @@ static FORCE_INLINE void tColDataCalcSMAUBigInt(SColData *pColData, int64_t *sum
|
|||
CALC_SUM_MAX_MIN(*(uint64_t *)sum, *(uint64_t *)max, *(uint64_t *)min, val);
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4248,7 +4248,6 @@ static FORCE_INLINE void tColDataCalcSMAVarType(SColData *pColData, int64_t *sum
|
|||
}
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4309,7 +4308,9 @@ int32_t tValueColumnAppend(SValueColumn *valCol, const SValue *value) {
|
|||
valCol->type = value->type;
|
||||
}
|
||||
|
||||
ASSERT(value->type == valCol->type);
|
||||
if (!(value->type == valCol->type)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (IS_VAR_DATA_TYPE(value->type)) {
|
||||
if ((code = tBufferPutI32(&valCol->offsets, tBufferGetSize(&valCol->data)))) {
|
||||
|
@ -4386,7 +4387,9 @@ int32_t tValueColumnGet(SValueColumn *valCol, int32_t idx, SValue *value) {
|
|||
int32_t tValueColumnCompress(SValueColumn *valCol, SValueColumnCompressInfo *info, SBuffer *output, SBuffer *assist) {
|
||||
int32_t code;
|
||||
|
||||
ASSERT(valCol->numOfValues > 0);
|
||||
if (!(valCol->numOfValues > 0)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
(*info) = (SValueColumnCompressInfo){
|
||||
.cmprAlg = info->cmprAlg,
|
||||
|
@ -4500,7 +4503,7 @@ int32_t tValueColumnCompressInfoDecode(SBufferReader *reader, SValueColumnCompre
|
|||
if ((code = tBufferGetI32v(reader, &info->dataOriginalSize))) return code;
|
||||
if ((code = tBufferGetI32v(reader, &info->dataCompressedSize))) return code;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -4516,7 +4519,9 @@ int32_t tCompressData(void *input, // input
|
|||
int32_t code;
|
||||
|
||||
extraSizeNeeded = (info->cmprAlg == NO_COMPRESSION) ? info->originalSize : info->originalSize + COMP_OVERFLOW_BYTES;
|
||||
ASSERT(outputSize >= extraSizeNeeded);
|
||||
if (!(outputSize >= extraSizeNeeded)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (info->cmprAlg == NO_COMPRESSION) {
|
||||
(void)memcpy(output, input, info->originalSize);
|
||||
|
@ -4598,10 +4603,14 @@ int32_t tDecompressData(void *input, // input
|
|||
) {
|
||||
int32_t code;
|
||||
|
||||
ASSERT(outputSize >= info->originalSize);
|
||||
if (!(outputSize >= info->originalSize)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (info->cmprAlg == NO_COMPRESSION) {
|
||||
ASSERT(info->compressedSize == info->originalSize);
|
||||
if (!(info->compressedSize == info->originalSize)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
(void)memcpy(output, input, info->compressedSize);
|
||||
} else if (info->cmprAlg == ONE_STAGE_COMP || info->cmprAlg == TWO_STAGE_COMP) {
|
||||
SBuffer local;
|
||||
|
@ -4634,7 +4643,9 @@ int32_t tDecompressData(void *input, // input
|
|||
return TSDB_CODE_COMPRESS_ERROR;
|
||||
}
|
||||
|
||||
ASSERT(decompressedSize == info->originalSize);
|
||||
if (!(decompressedSize == info->originalSize)) {
|
||||
return TSDB_CODE_COMPRESS_ERROR;
|
||||
}
|
||||
tBufferDestroy(&local);
|
||||
} else {
|
||||
DEFINE_VAR(info->cmprAlg);
|
||||
|
@ -4668,7 +4679,9 @@ int32_t tDecompressData(void *input, // input
|
|||
return TSDB_CODE_COMPRESS_ERROR;
|
||||
}
|
||||
|
||||
ASSERT(decompressedSize == info->originalSize);
|
||||
if (!(decompressedSize == info->originalSize)) {
|
||||
return TSDB_CODE_COMPRESS_ERROR;
|
||||
}
|
||||
tBufferDestroy(&local);
|
||||
}
|
||||
|
||||
|
|
|
@ -1599,6 +1599,12 @@ static int32_t taosSetServerCfg(SConfig *pCfg) {
|
|||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "minDiskFreeSize");
|
||||
tsMinDiskFreeSize = pItem->i64;
|
||||
|
||||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "s3MigrateIntervalSec");
|
||||
tsS3MigrateIntervalSec = pItem->i32;
|
||||
|
||||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "s3MigrateEnabled");
|
||||
tsS3MigrateEnabled = (bool)pItem->bval;
|
||||
|
||||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "s3PageCacheSize");
|
||||
tsS3PageCacheSize = pItem->i32;
|
||||
|
||||
|
|
|
@ -103,7 +103,9 @@ int32_t tInitSubmitMsgIter(const SSubmitReq *pMsg, SSubmitMsgIter *pIter) {
|
|||
|
||||
pIter->totalLen = htonl(pMsg->length);
|
||||
pIter->numOfBlocks = htonl(pMsg->numOfBlocks);
|
||||
ASSERT(pIter->totalLen > 0);
|
||||
if (!(pIter->totalLen > 0)) {
|
||||
return terrno = TSDB_CODE_TDB_SUBMIT_MSG_MSSED_UP;
|
||||
}
|
||||
pIter->len = 0;
|
||||
pIter->pMsg = pMsg;
|
||||
if (pIter->totalLen <= sizeof(SSubmitReq)) {
|
||||
|
@ -114,17 +116,21 @@ int32_t tInitSubmitMsgIter(const SSubmitReq *pMsg, SSubmitMsgIter *pIter) {
|
|||
}
|
||||
|
||||
int32_t tGetSubmitMsgNext(SSubmitMsgIter *pIter, SSubmitBlk **pPBlock) {
|
||||
ASSERT(pIter->len >= 0);
|
||||
if (!(pIter->len >= 0)) {
|
||||
return terrno = TSDB_CODE_INVALID_MSG_LEN;
|
||||
}
|
||||
|
||||
if (pIter->len == 0) {
|
||||
pIter->len += sizeof(SSubmitReq);
|
||||
} else {
|
||||
if (pIter->len >= pIter->totalLen) {
|
||||
ASSERT(0);
|
||||
return terrno = TSDB_CODE_INVALID_MSG_LEN;
|
||||
}
|
||||
|
||||
pIter->len += (sizeof(SSubmitBlk) + pIter->dataLen + pIter->schemaLen);
|
||||
ASSERT(pIter->len > 0);
|
||||
if (!(pIter->len > 0)) {
|
||||
return terrno = TSDB_CODE_INVALID_MSG_LEN;
|
||||
}
|
||||
}
|
||||
|
||||
if (pIter->len > pIter->totalLen) {
|
||||
|
@ -377,7 +383,9 @@ static int32_t tDeserializeSClientHbReq(SDecoder *pDecoder, SClientHbReq *pReq)
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(desc.subPlanNum == taosArrayGetSize(desc.subDesc));
|
||||
if (!(desc.subPlanNum == taosArrayGetSize(desc.subDesc))) {
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
|
||||
if (!taosArrayPush(pReq->query->queryDesc, &desc)) {
|
||||
return terrno;
|
||||
|
@ -8476,7 +8484,7 @@ int tEncodeSVCreateTbReq(SEncoder *pCoder, const SVCreateTbReq *pReq) {
|
|||
} else if (pReq->type == TSDB_NORMAL_TABLE) {
|
||||
if (tEncodeSSchemaWrapper(pCoder, &pReq->ntb.schemaRow) < 0) return -1;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
// ENCODESQL
|
||||
|
||||
|
@ -8528,7 +8536,7 @@ int tDecodeSVCreateTbReq(SDecoder *pCoder, SVCreateTbReq *pReq) {
|
|||
} else if (pReq->type == TSDB_NORMAL_TABLE) {
|
||||
if (tDecodeSSchemaWrapperEx(pCoder, &pReq->ntb.schemaRow) < 0) return -1;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
|
||||
// DECODESQL
|
||||
|
@ -9311,7 +9319,6 @@ bool tOffsetEqual(const STqOffsetVal *pLeft, const STqOffsetVal *pRight) {
|
|||
return pLeft->uid == pRight->uid;
|
||||
} else {
|
||||
uError("offset type:%d", pLeft->type);
|
||||
ASSERT(0);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -9727,7 +9734,9 @@ static int32_t tEncodeSSubmitTbData(SEncoder *pCoder, const SSubmitTbData *pSubm
|
|||
|
||||
// auto create table
|
||||
if (pSubmitTbData->flags & SUBMIT_REQ_AUTO_CREATE_TABLE) {
|
||||
ASSERT(pSubmitTbData->pCreateTbReq);
|
||||
if (!(pSubmitTbData->pCreateTbReq)) {
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
if (tEncodeSVCreateTbReq(pCoder, pSubmitTbData->pCreateTbReq) < 0) return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -105,7 +105,6 @@ int32_t tNameExtractFullName(const SName* name, char* dst) {
|
|||
|
||||
size_t tnameLen = strlen(name->tname);
|
||||
if (tnameLen > 0) {
|
||||
/*ASSERT(name->type == TSDB_TABLE_NAME_T);*/
|
||||
dst[len] = TS_PATH_DELIMITER[0];
|
||||
|
||||
memcpy(dst + len + 1, name->tname, tnameLen);
|
||||
|
@ -160,7 +159,10 @@ int32_t tNameGetFullDbName(const SName* name, char* dst) {
|
|||
bool tNameIsEmpty(const SName* name) { return name->type == 0 || name->acctId == 0; }
|
||||
|
||||
const char* tNameGetTableName(const SName* name) {
|
||||
ASSERT(name != NULL && name->type == TSDB_TABLE_NAME_T);
|
||||
if (!(name != NULL && name->type == TSDB_TABLE_NAME_T)) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
return &name->tname[0];
|
||||
}
|
||||
|
||||
|
|
|
@ -459,8 +459,8 @@ void taosVariantDestroy(SVariant *pVar) {
|
|||
}
|
||||
}
|
||||
|
||||
void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
||||
if (pSrc == NULL || pDst == NULL) return;
|
||||
int32_t taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
||||
if (pSrc == NULL || pDst == NULL) return 0;
|
||||
|
||||
pDst->nType = pSrc->nType;
|
||||
if (pSrc->nType == TSDB_DATA_TYPE_BINARY || pSrc->nType == TSDB_DATA_TYPE_VARBINARY ||
|
||||
|
@ -468,19 +468,20 @@ void taosVariantAssign(SVariant *pDst, const SVariant *pSrc) {
|
|||
pSrc->nType == TSDB_DATA_TYPE_GEOMETRY) {
|
||||
int32_t len = pSrc->nLen + TSDB_NCHAR_SIZE;
|
||||
char *p = taosMemoryRealloc(pDst->pz, len);
|
||||
ASSERT(p);
|
||||
if (!p) return terrno;
|
||||
|
||||
(void)memset(p, 0, len);
|
||||
pDst->pz = p;
|
||||
|
||||
(void)memcpy(pDst->pz, pSrc->pz, pSrc->nLen);
|
||||
pDst->nLen = pSrc->nLen;
|
||||
return;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (IS_NUMERIC_TYPE(pSrc->nType) || (pSrc->nType == TSDB_DATA_TYPE_BOOL)) {
|
||||
pDst->i = pSrc->i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t taosVariantCompare(const SVariant *p1, const SVariant *p2) {
|
||||
|
|
|
@ -101,20 +101,6 @@ typedef struct SQueryNode SQueryNode;
|
|||
#define VND_INFO_FNAME "vnode.json"
|
||||
#define VND_INFO_FNAME_TMP "vnode_tmp.json"
|
||||
|
||||
#define VNODE_METRIC_SQL_COUNT "taosd_sql_req:count"
|
||||
|
||||
#define VNODE_METRIC_TAG_NAME_SQL_TYPE "sql_type"
|
||||
#define VNODE_METRIC_TAG_NAME_CLUSTER_ID "cluster_id"
|
||||
#define VNODE_METRIC_TAG_NAME_DNODE_ID "dnode_id"
|
||||
#define VNODE_METRIC_TAG_NAME_DNODE_EP "dnode_ep"
|
||||
#define VNODE_METRIC_TAG_NAME_VGROUP_ID "vgroup_id"
|
||||
#define VNODE_METRIC_TAG_NAME_USERNAME "username"
|
||||
#define VNODE_METRIC_TAG_NAME_RESULT "result"
|
||||
|
||||
#define VNODE_METRIC_TAG_VALUE_INSERT_AFFECTED_ROWS "inserted_rows"
|
||||
// #define VNODE_METRIC_TAG_VALUE_INSERT "insert"
|
||||
// #define VNODE_METRIC_TAG_VALUE_DELETE "delete"
|
||||
|
||||
// vnd.h
|
||||
typedef int32_t (*_query_reseek_func_t)(void* pQHandle);
|
||||
struct SQueryNode {
|
||||
|
@ -452,7 +438,6 @@ typedef struct SVMonitorObj {
|
|||
char strClusterId[TSDB_CLUSTER_ID_LEN];
|
||||
char strDnodeId[TSDB_NODE_ID_LEN];
|
||||
char strVgId[TSDB_VGROUP_ID_LEN];
|
||||
taos_counter_t* insertCounter;
|
||||
} SVMonitorObj;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -503,7 +503,6 @@ static int checkAllEntriesInCache(const STagFilterResEntry* pEntry, SArray* pInv
|
|||
}
|
||||
|
||||
static FORCE_INLINE void setMD5DigestInKey(uint64_t* pBuf, const char* key, int32_t keyLen) {
|
||||
// ASSERT(keyLen == sizeof(int64_t) * 2);
|
||||
memcpy(&pBuf[2], key, keyLen);
|
||||
}
|
||||
|
||||
|
|
|
@ -332,6 +332,10 @@ static int tagIdxKeyCmpr(const void *pKey1, int kLen1, const void *pKey2, int kL
|
|||
} else if (!pTagIdxKey1->isNull && !pTagIdxKey2->isNull) {
|
||||
// all not NULL, compr tag vals
|
||||
__compar_fn_t func = getComparFunc(pTagIdxKey1->type, 0);
|
||||
if (func == NULL) {
|
||||
metaError("meta/open: %s", terrstr());
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
c = func(pTagIdxKey1->data, pTagIdxKey2->data);
|
||||
if (c) return c;
|
||||
}
|
||||
|
|
|
@ -1103,7 +1103,12 @@ int32_t metaFilterCreateTime(void *pVnode, SMetaFltParam *arg, SArray *pUids) {
|
|||
SBtimeIdxKey *p = entryKey;
|
||||
if (count > TRY_ERROR_LIMIT) break;
|
||||
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
int32_t cmp = (*param->filterFunc)((void *)&p->btime, (void *)&pBtimeKey->btime, param->type);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
ret = terrno;
|
||||
break;
|
||||
}
|
||||
if (cmp == 0) {
|
||||
if (taosArrayPush(pUids, &p->uid) == NULL) {
|
||||
ret = terrno;
|
||||
|
@ -1167,7 +1172,12 @@ int32_t metaFilterTableName(void *pVnode, SMetaFltParam *arg, SArray *pUids) {
|
|||
if (count > TRY_ERROR_LIMIT) break;
|
||||
|
||||
char *pTableKey = (char *)pEntryKey;
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
cmp = (*param->filterFunc)(pTableKey, pName, pCursor->type);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
ret = terrno;
|
||||
goto END;
|
||||
}
|
||||
if (cmp == 0) {
|
||||
tb_uid_t tuid = *(tb_uid_t *)pEntryVal;
|
||||
if (taosArrayPush(pUids, &tuid) == NULL) {
|
||||
|
@ -1361,7 +1371,12 @@ int32_t metaFilterTableIds(void *pVnode, SMetaFltParam *arg, SArray *pUids) {
|
|||
}
|
||||
}
|
||||
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
int32_t cmp = (*param->filterFunc)(p->data, pKey->data, pKey->type);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
TAOS_CHECK_GOTO(terrno, NULL, END);
|
||||
break;
|
||||
}
|
||||
if (cmp == 0) {
|
||||
// match
|
||||
tb_uid_t tuid = 0;
|
||||
|
|
|
@ -2368,6 +2368,9 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow, bool *pIgnoreEarlie
|
|||
|
||||
if (!state->pIndexList) {
|
||||
state->pIndexList = taosArrayInit(1, sizeof(SBrinBlk));
|
||||
if (!state->pIndexList) {
|
||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _err);
|
||||
}
|
||||
} else {
|
||||
taosArrayClear(state->pIndexList);
|
||||
}
|
||||
|
@ -2653,7 +2656,6 @@ static int32_t getNextRowFromMem(void *iter, TSDBROW **ppRow, bool *pIgnoreEarli
|
|||
TAOS_RETURN(code);
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -208,8 +208,6 @@ static int32_t tsdbCommitOpenReader(SCommitter2 *committer) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(TARRAY2_SIZE(committer->sttReaderArray) == 0);
|
||||
|
||||
if (committer->ctx->info->fset == NULL //
|
||||
|| committer->sttTrigger > 1 //
|
||||
|| TARRAY2_SIZE(committer->ctx->info->fset->lvlArr) == 0 //
|
||||
|
@ -264,11 +262,6 @@ static int32_t tsdbCommitOpenIter(SCommitter2 *committer) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(TARRAY2_SIZE(committer->dataIterArray) == 0);
|
||||
ASSERT(committer->dataIterMerger == NULL);
|
||||
ASSERT(TARRAY2_SIZE(committer->tombIterArray) == 0);
|
||||
ASSERT(committer->tombIterMerger == NULL);
|
||||
|
||||
STsdbIter *iter;
|
||||
STsdbIterConfig config = {0};
|
||||
|
||||
|
@ -342,10 +335,6 @@ static int32_t tsdbCommitFileSetBegin(SCommitter2 *committer) {
|
|||
committer->ctx->tbid->suid = 0;
|
||||
committer->ctx->tbid->uid = 0;
|
||||
|
||||
ASSERT(TARRAY2_SIZE(committer->dataIterArray) == 0);
|
||||
ASSERT(committer->dataIterMerger == NULL);
|
||||
ASSERT(committer->writer == NULL);
|
||||
|
||||
TAOS_CHECK_GOTO(tsdbCommitOpenReader(committer), &lino, _exit);
|
||||
TAOS_CHECK_GOTO(tsdbCommitOpenIter(committer), &lino, _exit);
|
||||
TAOS_CHECK_GOTO(tsdbCommitOpenWriter(committer), &lino, _exit);
|
||||
|
@ -637,13 +626,10 @@ static int32_t tsdbCloseCommitter(SCommitter2 *committer, int32_t eno) {
|
|||
if (eno == 0) {
|
||||
TAOS_CHECK_GOTO(tsdbFSEditBegin(committer->tsdb->pFS, committer->fopArray, TSDB_FEDIT_COMMIT), &lino, _exit);
|
||||
} else {
|
||||
// TODO
|
||||
ASSERT(0);
|
||||
tsdbError("vgId:%d %s failed at %s:%d since %s", TD_VID(committer->tsdb->pVnode), __func__, __FILE__, lino,
|
||||
tstrerror(eno));
|
||||
}
|
||||
|
||||
ASSERT(committer->writer == NULL);
|
||||
ASSERT(committer->dataIterMerger == NULL);
|
||||
ASSERT(committer->tombIterMerger == NULL);
|
||||
TARRAY2_DESTROY(committer->dataIterArray, NULL);
|
||||
TARRAY2_DESTROY(committer->tombIterArray, NULL);
|
||||
TARRAY2_DESTROY(committer->sttReaderArray, NULL);
|
||||
|
|
|
@ -113,7 +113,7 @@ _exit:
|
|||
}
|
||||
|
||||
static int32_t tsdbDataFileRAWWriterCloseAbort(SDataFileRAWWriter *writer) {
|
||||
ASSERT(0);
|
||||
tsdbError("vgId:%d %s failed since not implemented", TD_VID(writer->config->tsdb->pVnode), __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -122,8 +122,6 @@ static int32_t tsdbDataFileRAWWriterDoClose(SDataFileRAWWriter *writer) { return
|
|||
static int32_t tsdbDataFileRAWWriterCloseCommit(SDataFileRAWWriter *writer, TFileOpArray *opArr) {
|
||||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
ASSERT(writer->ctx->offset <= writer->file.size);
|
||||
ASSERT(writer->config->fid == writer->file.fid);
|
||||
|
||||
STFileOp op = (STFileOp){
|
||||
.optype = TSDB_FOP_CREATE,
|
||||
|
|
|
@ -283,7 +283,9 @@ int32_t tsdbDataFileReadBrinBlock(SDataFileReader *reader, const SBrinBlk *brinB
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(br.offset == br.buffer->size);
|
||||
if (br.offset != br.buffer->size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -313,7 +315,10 @@ int32_t tsdbDataFileReadBlockData(SDataFileReader *reader, const SBrinRecord *re
|
|||
// decompress
|
||||
SBufferReader br = BUFFER_READER_INITIALIZER(0, buffer);
|
||||
TAOS_CHECK_GOTO(tBlockDataDecompress(&br, bData, assist), &lino, _exit);
|
||||
ASSERT(br.offset == buffer->size);
|
||||
|
||||
if (br.offset != buffer->size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -345,7 +350,9 @@ int32_t tsdbDataFileReadBlockDataByColumn(SDataFileReader *reader, const SBrinRe
|
|||
SBufferReader br = BUFFER_READER_INITIALIZER(0, buffer0);
|
||||
TAOS_CHECK_GOTO(tGetDiskDataHdr(&br, &hdr), &lino, _exit);
|
||||
|
||||
ASSERT(hdr.delimiter == TSDB_FILE_DLMT);
|
||||
if (hdr.delimiter != TSDB_FILE_DLMT) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
tBlockDataReset(bData);
|
||||
bData->suid = hdr.suid;
|
||||
|
@ -354,7 +361,9 @@ int32_t tsdbDataFileReadBlockDataByColumn(SDataFileReader *reader, const SBrinRe
|
|||
|
||||
// Key part
|
||||
TAOS_CHECK_GOTO(tBlockDataDecompressKeyPart(&hdr, &br, bData, assist), &lino, _exit);
|
||||
ASSERT(br.offset == buffer0->size);
|
||||
if (br.offset != buffer0->size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
int extraColIdx = -1;
|
||||
for (int i = 0; i < ncid; i++) {
|
||||
|
@ -526,7 +535,9 @@ int32_t tsdbDataFileReadBlockSma(SDataFileReader *reader, const SBrinRecord *rec
|
|||
TAOS_CHECK_GOTO(tGetColumnDataAgg(&br, sma), &lino, _exit);
|
||||
TAOS_CHECK_GOTO(TARRAY2_APPEND_PTR(columnDataAggArray, sma), &lino, _exit);
|
||||
}
|
||||
ASSERT(br.offset == record->smaSize);
|
||||
if (br.offset != record->smaSize) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
}
|
||||
|
||||
_exit:
|
||||
|
@ -661,7 +672,8 @@ struct SDataFileWriter {
|
|||
};
|
||||
|
||||
static int32_t tsdbDataFileWriterCloseAbort(SDataFileWriter *writer) {
|
||||
ASSERT(0);
|
||||
tsdbError("vgId:%d %s failed at %s:%d since %s", TD_VID(writer->config->tsdb->pVnode), __func__, __FILE__, __LINE__,
|
||||
"not implemented");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -980,7 +992,9 @@ static int32_t tsdbDataFileDoWriteBlockData(SDataFileWriter *writer, SBlockData
|
|||
return 0;
|
||||
}
|
||||
|
||||
ASSERT(bData->uid);
|
||||
if (!bData->uid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
@ -1234,7 +1248,6 @@ static int32_t tsdbDataFileWriteTableDataEnd(SDataFileWriter *writer) {
|
|||
|
||||
if (writer->ctx->tbHasOldData) {
|
||||
TAOS_CHECK_GOTO(tsdbDataFileDoWriteTableOldData(writer, NULL /* as the largest key */), &lino, _exit);
|
||||
ASSERT(writer->ctx->tbHasOldData == false);
|
||||
}
|
||||
|
||||
TAOS_CHECK_GOTO(tsdbDataFileDoWriteBlockData(writer, writer->blockData), &lino, _exit);
|
||||
|
@ -1251,9 +1264,6 @@ static int32_t tsdbDataFileWriteTableDataBegin(SDataFileWriter *writer, const TA
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(writer->ctx->blockDataIdx == writer->ctx->blockData->nRow);
|
||||
ASSERT(writer->blockData->nRow == 0);
|
||||
|
||||
SMetaInfo info;
|
||||
bool drop = false;
|
||||
TABLEID tbid1[1];
|
||||
|
@ -1451,7 +1461,9 @@ int32_t tsdbFileWriteTombBlk(STsdbFD *fd, const TTombBlkArray *tombBlkArray, SFD
|
|||
}
|
||||
|
||||
static int32_t tsdbDataFileDoWriteTombBlk(SDataFileWriter *writer) {
|
||||
ASSERT(TARRAY2_SIZE(writer->tombBlkArray) > 0);
|
||||
if (TARRAY2_SIZE(writer->tombBlkArray) <= 0) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
@ -1523,7 +1535,9 @@ static int32_t tsdbDataFileDoWriteTombRecord(SDataFileWriter *writer, const STom
|
|||
TAOS_CHECK_GOTO(tsdbDataFileDoWriteTombBlock(writer), &lino, _exit);
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
tsdbError("vgId:%d duplicate tomb record, cid:%" PRId64 ", suid:%" PRId64 ", uid:%" PRId64 ", version:%" PRId64,
|
||||
TD_VID(writer->config->tsdb->pVnode), writer->config->cid, record->suid, record->uid,
|
||||
record->version);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1566,7 +1580,9 @@ _exit:
|
|||
|
||||
int32_t tsdbFileWriteBrinBlk(STsdbFD *fd, TBrinBlkArray *brinBlkArray, SFDataPtr *ptr, int64_t *fileSize,
|
||||
int32_t encryptAlgorithm, char *encryptKey) {
|
||||
ASSERT(TARRAY2_SIZE(brinBlkArray) > 0);
|
||||
if (TARRAY2_SIZE(brinBlkArray) <= 0) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
ptr->offset = *fileSize;
|
||||
ptr->size = TARRAY2_DATA_LEN(brinBlkArray);
|
||||
|
||||
|
@ -1852,7 +1868,9 @@ int32_t tsdbDataFileWriteBlockData(SDataFileWriter *writer, SBlockData *bData) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(bData->uid);
|
||||
if (!bData->uid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (!writer->ctx->opened) {
|
||||
TAOS_CHECK_GOTO(tsdbDataFileWriterDoOpen(writer), &lino, _exit);
|
||||
|
@ -1895,7 +1913,9 @@ _exit:
|
|||
}
|
||||
|
||||
int32_t tsdbDataFileFlush(SDataFileWriter *writer) {
|
||||
ASSERT(writer->ctx->opened);
|
||||
if (!writer->ctx->opened) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (writer->blockData->nRow == 0) return 0;
|
||||
if (writer->ctx->tbHasOldData) return 0;
|
||||
|
@ -1910,8 +1930,6 @@ static int32_t tsdbDataFileWriterOpenTombFD(SDataFileWriter *writer) {
|
|||
char fname[TSDB_FILENAME_LEN];
|
||||
int32_t ftype = TSDB_FTYPE_TOMB;
|
||||
|
||||
ASSERT(writer->files[ftype].size == 0);
|
||||
|
||||
int32_t flag = (TD_FILE_READ | TD_FILE_WRITE | TD_FILE_CREATE | TD_FILE_TRUNC);
|
||||
|
||||
int32_t lcn = writer->files[ftype].lcn;
|
||||
|
|
|
@ -83,7 +83,10 @@ static int32_t tsdbBinaryToFS(uint8_t *pData, int64_t nData, STsdbFS *pFS) {
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(n + sizeof(TSCKSUM) == nData);
|
||||
if (n + sizeof(TSCKSUM) != nData) {
|
||||
code = TSDB_CODE_FILE_CORRUPTED;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
|
@ -450,8 +453,9 @@ static int32_t tsdbMergeFileSet(STsdb *pTsdb, SDFileSet *pSetOld, SDFileSet *pSe
|
|||
taosMemoryFree(pHeadF);
|
||||
}
|
||||
} else {
|
||||
ASSERT(pHeadF->offset == pSetNew->pHeadF->offset);
|
||||
ASSERT(pHeadF->size == pSetNew->pHeadF->size);
|
||||
if (pHeadF->offset != pSetNew->pHeadF->offset || pHeadF->size != pSetNew->pHeadF->size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
}
|
||||
|
||||
// data
|
||||
|
@ -499,7 +503,6 @@ static int32_t tsdbMergeFileSet(STsdb *pTsdb, SDFileSet *pSetOld, SDFileSet *pSe
|
|||
// stt
|
||||
if (sameDisk) {
|
||||
if (pSetNew->nSttF > pSetOld->nSttF) {
|
||||
ASSERT(pSetNew->nSttF == pSetOld->nSttF + 1);
|
||||
pSetOld->aSttF[pSetOld->nSttF] = (SSttFile *)taosMemoryMalloc(sizeof(SSttFile));
|
||||
if (pSetOld->aSttF[pSetOld->nSttF] == NULL) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
|
@ -509,7 +512,6 @@ static int32_t tsdbMergeFileSet(STsdb *pTsdb, SDFileSet *pSetOld, SDFileSet *pSe
|
|||
pSetOld->aSttF[pSetOld->nSttF]->nRef = 1;
|
||||
pSetOld->nSttF++;
|
||||
} else if (pSetNew->nSttF < pSetOld->nSttF) {
|
||||
ASSERT(pSetNew->nSttF == 1);
|
||||
for (int32_t iStt = 0; iStt < pSetOld->nSttF; iStt++) {
|
||||
SSttFile *pSttFile = pSetOld->aSttF[iStt];
|
||||
nRef = atomic_sub_fetch_32(&pSttFile->nRef, 1);
|
||||
|
@ -548,8 +550,10 @@ static int32_t tsdbMergeFileSet(STsdb *pTsdb, SDFileSet *pSetOld, SDFileSet *pSe
|
|||
*pSetOld->aSttF[iStt] = *pSetNew->aSttF[iStt];
|
||||
pSetOld->aSttF[iStt]->nRef = 1;
|
||||
} else {
|
||||
ASSERT(pSetOld->aSttF[iStt]->size == pSetOld->aSttF[iStt]->size);
|
||||
ASSERT(pSetOld->aSttF[iStt]->offset == pSetOld->aSttF[iStt]->offset);
|
||||
if (pSetOld->aSttF[iStt]->size != pSetOld->aSttF[iStt]->size ||
|
||||
pSetOld->aSttF[iStt]->offset == pSetOld->aSttF[iStt]->offset) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -777,8 +781,6 @@ int32_t tsdbFSOpen(STsdb *pTsdb, int8_t rollback) {
|
|||
// empty one
|
||||
code = tsdbSaveFSToFile(&pTsdb->fs, current);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
||||
ASSERT(!rollback);
|
||||
}
|
||||
|
||||
// scan and fix FS
|
||||
|
@ -796,7 +798,6 @@ int32_t tsdbFSClose(STsdb *pTsdb) {
|
|||
int32_t code = 0;
|
||||
|
||||
if (pTsdb->fs.pDelFile) {
|
||||
ASSERT(pTsdb->fs.pDelFile->nRef == 1);
|
||||
taosMemoryFree(pTsdb->fs.pDelFile);
|
||||
}
|
||||
|
||||
|
@ -804,20 +805,16 @@ int32_t tsdbFSClose(STsdb *pTsdb) {
|
|||
SDFileSet *pSet = (SDFileSet *)taosArrayGet(pTsdb->fs.aDFileSet, iSet);
|
||||
|
||||
// head
|
||||
ASSERT(pSet->pHeadF->nRef == 1);
|
||||
taosMemoryFree(pSet->pHeadF);
|
||||
|
||||
// data
|
||||
ASSERT(pSet->pDataF->nRef == 1);
|
||||
taosMemoryFree(pSet->pDataF);
|
||||
|
||||
// sma
|
||||
ASSERT(pSet->pSmaF->nRef == 1);
|
||||
taosMemoryFree(pSet->pSmaF);
|
||||
|
||||
// stt
|
||||
for (int32_t iStt = 0; iStt < pSet->nSttF; iStt++) {
|
||||
ASSERT(pSet->aSttF[iStt]->nRef == 1);
|
||||
taosMemoryFree(pSet->aSttF[iStt]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -208,7 +208,9 @@ static int32_t load_fs(STsdb *pTsdb, const char *fname, TFileSetArray *arr) {
|
|||
/* fmtv */
|
||||
item1 = cJSON_GetObjectItem(json, "fmtv");
|
||||
if (cJSON_IsNumber(item1)) {
|
||||
ASSERT(item1->valuedouble == 1);
|
||||
if (item1->valuedouble != 1) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
} else {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
@ -892,7 +894,6 @@ int32_t tsdbFSEditCommit(STFileSystem *fs) {
|
|||
|
||||
// commit
|
||||
code = commit_edit(fs);
|
||||
ASSERT(code == 0);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
||||
// schedule merge
|
||||
|
@ -1050,7 +1051,6 @@ static SHashObj *tsdbFSetRangeArrayToHash(TFileSetRangeArray *pRanges) {
|
|||
STFileSetRange *u = TARRAY2_GET(pRanges, i);
|
||||
int32_t fid = u->fid;
|
||||
int32_t code = taosHashPut(pHash, &fid, sizeof(fid), u, sizeof(*u));
|
||||
ASSERT(code == 0);
|
||||
tsdbDebug("range diff hash fid:%d, sver:%" PRId64 ", ever:%" PRId64, u->fid, u->sver, u->ever);
|
||||
}
|
||||
return pHash;
|
||||
|
@ -1190,10 +1190,8 @@ int32_t tsdbBeginTaskOnFileSet(STsdb *tsdb, int32_t fid, STFileSet **fset) {
|
|||
(void)taosThreadCondWait(&(*fset)->beginTask, &tsdb->mutex);
|
||||
|
||||
(void)tsdbFSGetFSet(tsdb->pFS, fid, fset);
|
||||
ASSERT(fset != NULL);
|
||||
|
||||
(*fset)->numWaitTask--;
|
||||
ASSERT((*fset)->numWaitTask >= 0);
|
||||
} else {
|
||||
(*fset)->taskRunning = true;
|
||||
break;
|
||||
|
|
|
@ -106,7 +106,9 @@ static void tsdbSttLvlRemove(SSttLvl **lvl) {
|
|||
static int32_t tsdbSttLvlApplyEdit(STsdb *pTsdb, const SSttLvl *lvl1, SSttLvl *lvl2) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(lvl1->level == lvl2->level);
|
||||
if (lvl1->level != lvl2->level) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
int32_t i1 = 0, i2 = 0;
|
||||
while (i1 < TARRAY2_SIZE(lvl1->fobjArr) || i2 < TARRAY2_SIZE(lvl2->fobjArr)) {
|
||||
|
@ -331,29 +333,24 @@ int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op) {
|
|||
code = TARRAY2_SORT_INSERT(lvl->fobjArr, fobj, tsdbTFileObjCmpr);
|
||||
if (code) return code;
|
||||
} else {
|
||||
ASSERT(fset->farr[fobj->f->type] == NULL);
|
||||
fset->farr[fobj->f->type] = fobj;
|
||||
}
|
||||
} else if (op->optype == TSDB_FOP_REMOVE) {
|
||||
// delete a file
|
||||
if (op->of.type == TSDB_FTYPE_STT) {
|
||||
SSttLvl *lvl = tsdbTFileSetGetSttLvl(fset, op->of.stt->level);
|
||||
ASSERT(lvl);
|
||||
|
||||
STFileObj tfobj = {.f[0] = {.cid = op->of.cid}};
|
||||
STFileObj *tfobjp = &tfobj;
|
||||
int32_t idx = TARRAY2_SEARCH_IDX(lvl->fobjArr, &tfobjp, tsdbTFileObjCmpr, TD_EQ);
|
||||
ASSERT(idx >= 0);
|
||||
TARRAY2_REMOVE(lvl->fobjArr, idx, tsdbSttLvlClearFObj);
|
||||
} else {
|
||||
ASSERT(tsdbIsSameTFile(&op->of, fset->farr[op->of.type]->f));
|
||||
(void)tsdbTFileObjUnref(fset->farr[op->of.type]);
|
||||
fset->farr[op->of.type] = NULL;
|
||||
}
|
||||
} else {
|
||||
if (op->nf.type == TSDB_FTYPE_STT) {
|
||||
SSttLvl *lvl = tsdbTFileSetGetSttLvl(fset, op->of.stt->level);
|
||||
ASSERT(lvl);
|
||||
|
||||
STFileObj tfobj = {.f[0] = {.cid = op->of.cid}}, *tfobjp = &tfobj;
|
||||
STFileObj **fobjPtr = TARRAY2_SEARCH(lvl->fobjArr, &tfobjp, tsdbTFileObjCmpr, TD_EQ);
|
||||
|
@ -374,7 +371,9 @@ int32_t tsdbTFileSetEdit(STsdb *pTsdb, STFileSet *fset, const STFileOp *op) {
|
|||
int32_t tsdbTFileSetApplyEdit(STsdb *pTsdb, const STFileSet *fset1, STFileSet *fset2) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(fset1->fid == fset2->fid);
|
||||
if (fset1->fid != fset2->fid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
for (tsdb_ftype_t ftype = TSDB_FTYPE_MIN; ftype < TSDB_FTYPE_MAX; ++ftype) {
|
||||
if (!fset1->farr[ftype] && !fset2->farr[ftype]) continue;
|
||||
|
|
|
@ -159,8 +159,6 @@ int32_t tsdbFSetRAWWriteBlockData(SFSetRAWWriter *writer, STsdbDataRAWBlockHeade
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(writer->ctx->offset >= 0 && writer->ctx->offset <= writer->ctx->file.size);
|
||||
|
||||
if (writer->ctx->offset == writer->ctx->file.size) {
|
||||
code = tsdbFSetRAWWriteFileDataEnd(writer);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
@ -173,7 +171,6 @@ int32_t tsdbFSetRAWWriteBlockData(SFSetRAWWriter *writer, STsdbDataRAWBlockHeade
|
|||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
||||
writer->ctx->offset += bHdr->dataLength;
|
||||
ASSERT(writer->ctx->offset == writer->dataWriter->ctx->offset);
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
|
|
@ -73,8 +73,6 @@ static int32_t tsdbFSetWriteTableDataEnd(SFSetWriter *writer) {
|
|||
int32_t numRow = ((writer->blockData[pidx].nRow + writer->blockData[cidx].nRow) >> 1);
|
||||
|
||||
if (writer->blockData[pidx].nRow > 0 && numRow >= writer->config->minRow) {
|
||||
ASSERT(writer->blockData[pidx].nRow == writer->config->maxRow);
|
||||
|
||||
SRowInfo row = {
|
||||
.suid = writer->ctx->tbid->suid,
|
||||
.uid = writer->ctx->tbid->uid,
|
||||
|
|
|
@ -242,19 +242,30 @@ int32_t tsdbTFileObjInit(STsdb *pTsdb, const STFile *f, STFileObj **fobj) {
|
|||
|
||||
int32_t tsdbTFileObjRef(STFileObj *fobj) {
|
||||
int32_t nRef;
|
||||
(void)(void)taosThreadMutexLock(&fobj->mutex);
|
||||
ASSERT(fobj->ref > 0 && fobj->state == TSDB_FSTATE_LIVE);
|
||||
(void)taosThreadMutexLock(&fobj->mutex);
|
||||
|
||||
if (fobj->ref <= 0 || fobj->state != TSDB_FSTATE_LIVE) {
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
tsdbError("file %s, fobj:%p ref %d", fobj->fname, fobj, fobj->ref);
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
nRef = ++fobj->ref;
|
||||
(void)(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
tsdbTrace("ref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t tsdbTFileObjUnref(STFileObj *fobj) {
|
||||
(void)(void)taosThreadMutexLock(&fobj->mutex);
|
||||
(void)taosThreadMutexLock(&fobj->mutex);
|
||||
int32_t nRef = --fobj->ref;
|
||||
(void)(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
ASSERT(nRef >= 0);
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
|
||||
if (nRef < 0) {
|
||||
tsdbError("file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
tsdbTrace("unref file %s, fobj:%p ref %d", fobj->fname, fobj, nRef);
|
||||
if (nRef == 0) {
|
||||
if (fobj->state == TSDB_FSTATE_DEAD) {
|
||||
|
@ -319,7 +330,11 @@ static void tsdbTFileObjRemoveLC(STFileObj *fobj, bool remove_all) {
|
|||
|
||||
int32_t tsdbTFileObjRemove(STFileObj *fobj) {
|
||||
(void)taosThreadMutexLock(&fobj->mutex);
|
||||
ASSERT(fobj->state == TSDB_FSTATE_LIVE && fobj->ref > 0);
|
||||
if (fobj->state != TSDB_FSTATE_LIVE || fobj->ref <= 0) {
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
tsdbError("file %s, fobj:%p ref %d", fobj->fname, fobj, fobj->ref);
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
fobj->state = TSDB_FSTATE_DEAD;
|
||||
int32_t nRef = --fobj->ref;
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
|
@ -333,7 +348,13 @@ int32_t tsdbTFileObjRemove(STFileObj *fobj) {
|
|||
|
||||
int32_t tsdbTFileObjRemoveUpdateLC(STFileObj *fobj) {
|
||||
(void)taosThreadMutexLock(&fobj->mutex);
|
||||
ASSERT(fobj->state == TSDB_FSTATE_LIVE && fobj->ref > 0);
|
||||
|
||||
if (fobj->state != TSDB_FSTATE_LIVE || fobj->ref <= 0) {
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
tsdbError("file %s, fobj:%p ref %d", fobj->fname, fobj, fobj->ref);
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
fobj->state = TSDB_FSTATE_DEAD;
|
||||
int32_t nRef = --fobj->ref;
|
||||
(void)taosThreadMutexUnlock(&fobj->mutex);
|
||||
|
|
|
@ -547,8 +547,7 @@ int32_t tsdbIterOpen(const STsdbIterConfig *config, STsdbIter **iter) {
|
|||
code = tsdbMemTombIterOpen(iter[0]);
|
||||
break;
|
||||
default:
|
||||
code = TSDB_CODE_INVALID_PARA;
|
||||
ASSERTS(false, "Not implemented");
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (code) {
|
||||
|
@ -588,7 +587,7 @@ int32_t tsdbIterClose(STsdbIter **iter) {
|
|||
case TSDB_ITER_TYPE_MEMT_TOMB:
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
taosMemoryFree(iter[0]);
|
||||
iter[0] = NULL;
|
||||
|
@ -610,7 +609,7 @@ int32_t tsdbIterNext(STsdbIter *iter) {
|
|||
case TSDB_ITER_TYPE_MEMT_TOMB:
|
||||
return tsdbMemTombIterNext(iter, NULL);
|
||||
default:
|
||||
ASSERT(false);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -630,7 +629,7 @@ static int32_t tsdbIterSkipTableData(STsdbIter *iter, const TABLEID *tbid) {
|
|||
case TSDB_ITER_TYPE_MEMT_TOMB:
|
||||
return tsdbMemTombIterNext(iter, tbid);
|
||||
default:
|
||||
ASSERT(false);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -691,7 +690,10 @@ int32_t tsdbIterMergerOpen(const TTsdbIterArray *iterArray, SIterMerger **merger
|
|||
TARRAY2_FOREACH(iterArray, iter) {
|
||||
if (iter->noMoreData) continue;
|
||||
node = tRBTreePut(merger[0]->iterTree, iter->node);
|
||||
ASSERT(node);
|
||||
if (node == NULL) {
|
||||
taosMemoryFree(merger[0]);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
|
||||
return tsdbIterMergerNext(merger[0]);
|
||||
|
@ -718,10 +720,8 @@ int32_t tsdbIterMergerNext(SIterMerger *merger) {
|
|||
merger->iter = NULL;
|
||||
} else if ((node = tRBTreeMin(merger->iterTree))) {
|
||||
c = merger->iterTree->cmprFn(merger->iter->node, node);
|
||||
ASSERT(c);
|
||||
if (c > 0) {
|
||||
node = tRBTreePut(merger->iterTree, merger->iter->node);
|
||||
ASSERT(node);
|
||||
merger->iter = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -734,15 +734,9 @@ int32_t tsdbIterMergerNext(SIterMerger *merger) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
SRowInfo *tsdbIterMergerGetData(SIterMerger *merger) {
|
||||
ASSERT(!merger->isTomb);
|
||||
return merger->iter ? merger->iter->row : NULL;
|
||||
}
|
||||
SRowInfo *tsdbIterMergerGetData(SIterMerger *merger) { return merger->iter ? merger->iter->row : NULL; }
|
||||
|
||||
STombRecord *tsdbIterMergerGetTombRecord(SIterMerger *merger) {
|
||||
ASSERT(merger->isTomb);
|
||||
return merger->iter ? merger->iter->record : NULL;
|
||||
}
|
||||
STombRecord *tsdbIterMergerGetTombRecord(SIterMerger *merger) { return merger->iter ? merger->iter->record : NULL; }
|
||||
|
||||
int32_t tsdbIterMergerSkipTableData(SIterMerger *merger, const TABLEID *tbid) {
|
||||
int32_t code;
|
||||
|
@ -757,10 +751,8 @@ int32_t tsdbIterMergerSkipTableData(SIterMerger *merger, const TABLEID *tbid) {
|
|||
merger->iter = NULL;
|
||||
} else if ((node = tRBTreeMin(merger->iterTree))) {
|
||||
c = merger->iterTree->cmprFn(merger->iter->node, node);
|
||||
ASSERT(c);
|
||||
if (c > 0) {
|
||||
node = tRBTreePut(merger->iterTree, merger->iter->node);
|
||||
ASSERT(node);
|
||||
merger->iter = NULL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -170,7 +170,6 @@ int32_t tsdbDeleteTableData(STsdb *pTsdb, int64_t version, tb_uid_t suid, tb_uid
|
|||
goto _err;
|
||||
}
|
||||
|
||||
ASSERT(pPool != NULL);
|
||||
// do delete
|
||||
SDelData *pDelData = (SDelData *)vnodeBufPoolMalloc(pPool, sizeof(*pDelData));
|
||||
if (pDelData == NULL) {
|
||||
|
@ -183,7 +182,6 @@ int32_t tsdbDeleteTableData(STsdb *pTsdb, int64_t version, tb_uid_t suid, tb_uid
|
|||
pDelData->pNext = NULL;
|
||||
taosWLockLatch(&pTbData->lock);
|
||||
if (pTbData->pHead == NULL) {
|
||||
ASSERT(pTbData->pTail == NULL);
|
||||
pTbData->pHead = pTbData->pTail = pDelData;
|
||||
} else {
|
||||
pTbData->pTail->pNext = pDelData;
|
||||
|
@ -263,8 +261,6 @@ void tsdbTbDataIterOpen(STbData *pTbData, STsdbRowKey *pFrom, int8_t backward, S
|
|||
bool tsdbTbDataIterNext(STbDataIter *pIter) {
|
||||
pIter->pRow = NULL;
|
||||
if (pIter->backward) {
|
||||
ASSERT(pIter->pNode != pIter->pTbData->sl.pTail);
|
||||
|
||||
if (pIter->pNode == pIter->pTbData->sl.pHead) {
|
||||
return false;
|
||||
}
|
||||
|
@ -274,8 +270,6 @@ bool tsdbTbDataIterNext(STbDataIter *pIter) {
|
|||
return false;
|
||||
}
|
||||
} else {
|
||||
ASSERT(pIter->pNode != pIter->pTbData->sl.pHead);
|
||||
|
||||
if (pIter->pNode == pIter->pTbData->sl.pTail) {
|
||||
return false;
|
||||
}
|
||||
|
@ -366,7 +360,6 @@ static int32_t tsdbGetOrCreateTbData(SMemTable *pMemTable, tb_uid_t suid, tb_uid
|
|||
SVBufPool *pPool = pMemTable->pTsdb->pVnode->inUse;
|
||||
int8_t maxLevel = pMemTable->pTsdb->pVnode->config.tsdbCfg.slLevel;
|
||||
|
||||
ASSERT(pPool != NULL);
|
||||
pTbData = vnodeBufPoolMallocAligned(pPool, sizeof(*pTbData) + SL_NODE_SIZE(maxLevel) * 2);
|
||||
if (pTbData == NULL) {
|
||||
code = terrno;
|
||||
|
@ -516,8 +509,6 @@ static int32_t tbDataDoPut(SMemTable *pMemTable, STbData *pTbData, SMemSkipListN
|
|||
pNode = (SMemSkipListNode *)vnodeBufPoolMallocAligned(pPool, nSize + pRow->pTSRow->len);
|
||||
} else if (pRow->type == TSDBROW_COL_FMT) {
|
||||
pNode = (SMemSkipListNode *)vnodeBufPoolMallocAligned(pPool, nSize);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
if (pNode == NULL) {
|
||||
code = terrno;
|
||||
|
@ -582,10 +573,6 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData,
|
|||
int32_t nColData = TARRAY_SIZE(pSubmitTbData->aCol);
|
||||
SColData *aColData = (SColData *)TARRAY_DATA(pSubmitTbData->aCol);
|
||||
|
||||
ASSERT(aColData[0].cid == PRIMARYKEY_TIMESTAMP_COL_ID);
|
||||
ASSERT(aColData[0].type == TSDB_DATA_TYPE_TIMESTAMP);
|
||||
ASSERT(aColData[0].flag == HAS_VALUE);
|
||||
|
||||
// copy and construct block data
|
||||
SBlockData *pBlockData = vnodeBufPoolMalloc(pPool, sizeof(*pBlockData));
|
||||
if (pBlockData == NULL) {
|
||||
|
@ -740,7 +727,9 @@ int32_t tsdbRefMemTable(SMemTable *pMemTable, SQueryNode *pQNode) {
|
|||
int32_t code = 0;
|
||||
|
||||
int32_t nRef = atomic_fetch_add_32(&pMemTable->nRef, 1);
|
||||
ASSERT(nRef > 0);
|
||||
if (nRef <= 0) {
|
||||
tsdbError("vgId:%d, memtable ref count is invalid, ref:%d", TD_VID(pMemTable->pTsdb->pVnode), nRef);
|
||||
}
|
||||
|
||||
(void)vnodeBufPoolRegisterQuery(pMemTable->pPool, pQNode);
|
||||
|
||||
|
|
|
@ -69,13 +69,6 @@ static int32_t tsdbMergerClose(SMerger *merger) {
|
|||
int32_t lino = 0;
|
||||
SVnode *pVnode = merger->tsdb->pVnode;
|
||||
|
||||
ASSERT(merger->writer == NULL);
|
||||
ASSERT(merger->dataIterMerger == NULL);
|
||||
ASSERT(merger->tombIterMerger == NULL);
|
||||
ASSERT(TARRAY2_SIZE(merger->dataIterArr) == 0);
|
||||
ASSERT(TARRAY2_SIZE(merger->tombIterArr) == 0);
|
||||
ASSERT(TARRAY2_SIZE(merger->sttReaderArr) == 0);
|
||||
|
||||
// clear the merge
|
||||
TARRAY2_DESTROY(merger->tombIterArr, NULL);
|
||||
TARRAY2_DESTROY(merger->dataIterArr, NULL);
|
||||
|
@ -156,8 +149,6 @@ static int32_t tsdbMergeFileSetBeginOpenReader(SMerger *merger) {
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(merger->ctx->level > 0);
|
||||
|
||||
if (merger->ctx->level <= TSDB_MAX_LEVEL) {
|
||||
TARRAY2_FOREACH_REVERSE(merger->ctx->fset->lvlArr, lvl) {
|
||||
if (TARRAY2_SIZE(lvl->fobjArr) == 0) {
|
||||
|
@ -180,8 +171,6 @@ static int32_t tsdbMergeFileSetBeginOpenReader(SMerger *merger) {
|
|||
numFile = numFile - TARRAY2_SIZE(lvl->fobjArr) * pow(merger->sttTrigger, lvl->level);
|
||||
}
|
||||
|
||||
ASSERT(numFile >= 0);
|
||||
|
||||
// get file system operations
|
||||
TARRAY2_FOREACH(merger->ctx->fset->lvlArr, lvl) {
|
||||
if (lvl->level >= merger->ctx->level) {
|
||||
|
@ -323,11 +312,6 @@ static int32_t tsdbMergeFileSetBegin(SMerger *merger) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(TARRAY2_SIZE(merger->sttReaderArr) == 0);
|
||||
ASSERT(TARRAY2_SIZE(merger->dataIterArr) == 0);
|
||||
ASSERT(merger->dataIterMerger == NULL);
|
||||
ASSERT(merger->writer == NULL);
|
||||
|
||||
TARRAY2_CLEAR(merger->fopArr, NULL);
|
||||
|
||||
merger->ctx->tbid->suid = 0;
|
||||
|
|
|
@ -901,7 +901,10 @@ int32_t tLDataIterNextRow(SLDataIter *pIter, const char *idStr, bool* hasNext) {
|
|||
pIter->rInfo.row = tsdbRowFromBlockData(pBlockData, pIter->iRow);
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
tsdbError("failed to exec stt-file nextIter, lino:%d, code:%s, %s", lino, tstrerror(code), idStr);
|
||||
}
|
||||
|
||||
*hasNext = (code == TSDB_CODE_SUCCESS) && (pIter->pSttBlk != NULL) && (pBlockData != NULL);
|
||||
return code;
|
||||
}
|
||||
|
|
|
@ -194,7 +194,7 @@ int32_t initRowKey(SRowKey* pKey, int64_t ts, int32_t numOfPks, int32_t type, in
|
|||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
} else {
|
||||
switch (type) {
|
||||
|
@ -223,7 +223,7 @@ int32_t initRowKey(SRowKey* pKey, int64_t ts, int32_t numOfPks, int32_t type, in
|
|||
pKey->pks[0].val = UINT8_MAX;
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -77,7 +77,9 @@ static int32_t tsdbOpenFileImpl(STsdbFD *pFD) {
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(pFD->szFile % szPage == 0);
|
||||
if (pFD->szFile % szPage != 0) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_INVALID_PARA, lino, _exit);
|
||||
}
|
||||
pFD->szFile = pFD->szFile / szPage;
|
||||
|
||||
_exit:
|
||||
|
@ -149,7 +151,6 @@ static int32_t tsdbWriteFilePage(STsdbFD *pFD, int32_t encryptAlgorithm, char *e
|
|||
|
||||
offset -= chunkoffset;
|
||||
}
|
||||
ASSERT(offset >= 0);
|
||||
|
||||
int64_t n = taosLSeekFile(pFD->pFD, offset, SEEK_SET);
|
||||
if (n < 0) {
|
||||
|
@ -202,7 +203,6 @@ static int32_t tsdbReadFilePage(STsdbFD *pFD, int64_t pgno, int32_t encryptAlgor
|
|||
int32_t code = 0;
|
||||
int32_t lino;
|
||||
|
||||
// ASSERT(pgno <= pFD->szFile);
|
||||
if (!pFD->pFD) {
|
||||
code = tsdbOpenFileImpl(pFD);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
@ -216,7 +216,6 @@ static int32_t tsdbReadFilePage(STsdbFD *pFD, int64_t pgno, int32_t encryptAlgor
|
|||
|
||||
offset -= chunkoffset;
|
||||
}
|
||||
ASSERT(offset >= 0);
|
||||
|
||||
// seek
|
||||
int64_t n = taosLSeekFile(pFD->pFD, offset, SEEK_SET);
|
||||
|
@ -317,8 +316,9 @@ static int32_t tsdbReadFileImp(STsdbFD *pFD, int64_t offset, uint8_t *pBuf, int6
|
|||
int32_t szPgCont = PAGE_CONTENT_SIZE(pFD->szPage);
|
||||
int64_t bOffset = fOffset % pFD->szPage;
|
||||
|
||||
// ASSERT(pgno && pgno <= pFD->szFile);
|
||||
ASSERT(bOffset < szPgCont);
|
||||
if (bOffset >= szPgCont) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_INVALID_PARA, lino, _exit);
|
||||
}
|
||||
|
||||
while (n < size) {
|
||||
if (pFD->pgno != pgno) {
|
||||
|
@ -417,7 +417,9 @@ static int32_t tsdbReadFileS3(STsdbFD *pFD, int64_t offset, uint8_t *pBuf, int64
|
|||
int64_t pgno = OFFSET_PGNO(fOffset, pFD->szPage);
|
||||
int64_t bOffset = fOffset % pFD->szPage;
|
||||
|
||||
ASSERT(bOffset < szPgCont);
|
||||
if (bOffset >= szPgCont) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_INVALID_PARA, lino, _exit);
|
||||
}
|
||||
|
||||
// 1, find pgnoStart & pgnoEnd to fetch from s3, if all pgs are local, no need to fetch
|
||||
// 2, fetch pgnoStart ~ pgnoEnd from s3
|
||||
|
@ -690,7 +692,9 @@ int32_t tsdbReadBlockIdx(SDataFReader *pReader, SArray *aBlockIdx) {
|
|||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
||||
}
|
||||
}
|
||||
ASSERT(n == size);
|
||||
if (n != size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -731,7 +735,9 @@ int32_t tsdbReadSttBlk(SDataFReader *pReader, int32_t iStt, SArray *aSttBlk) {
|
|||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
||||
}
|
||||
}
|
||||
ASSERT(n == size);
|
||||
if (n != size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -760,7 +766,9 @@ int32_t tsdbReadDataBlk(SDataFReader *pReader, SBlockIdx *pBlockIdx, SMapData *m
|
|||
int32_t n;
|
||||
code = tGetMapData(pReader->aBuf[0], mDataBlk, &n);
|
||||
if (code) goto _exit;
|
||||
ASSERT(n == size);
|
||||
if (n != size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -861,7 +869,9 @@ int32_t tsdbReadDelDatav1(SDelFReader *pReader, SDelIdx *pDelIdx, SArray *aDelDa
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(n == size);
|
||||
if (n != size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
@ -901,7 +911,9 @@ int32_t tsdbReadDelIdx(SDelFReader *pReader, SArray *aDelIdx) {
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(n == size);
|
||||
if (n != size) {
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_FILE_CORRUPTED, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
if (code) {
|
||||
|
|
|
@ -403,8 +403,6 @@ static int32_t tsdbS3FidLevel(int32_t fid, STsdbKeepCfg *pKeepCfg, int32_t s3Kee
|
|||
nowSec = nowSec * 1000000l;
|
||||
} else if (pKeepCfg->precision == TSDB_TIME_PRECISION_NANO) {
|
||||
nowSec = nowSec * 1000000000l;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
nowSec = nowSec - pKeepCfg->keepTimeOffset * tsTickPerHour[pKeepCfg->precision];
|
||||
|
|
|
@ -67,9 +67,6 @@ static int32_t tsdbSnapReadFileSetOpenReader(STsdbSnapReader* reader) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(reader->dataReader == NULL);
|
||||
ASSERT(TARRAY2_SIZE(reader->sttReaderArr) == 0);
|
||||
|
||||
// data
|
||||
SDataFileReaderConfig config = {
|
||||
.tsdb = reader->tsdb,
|
||||
|
@ -125,11 +122,6 @@ static int32_t tsdbSnapReadFileSetOpenIter(STsdbSnapReader* reader) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(reader->dataIterMerger == NULL);
|
||||
ASSERT(reader->tombIterMerger == NULL);
|
||||
ASSERT(TARRAY2_SIZE(reader->dataIterArr) == 0);
|
||||
ASSERT(TARRAY2_SIZE(reader->tombIterArr) == 0);
|
||||
|
||||
STsdbIter* iter;
|
||||
STsdbIterConfig config = {
|
||||
.filterByVersion = true,
|
||||
|
@ -210,8 +202,6 @@ static int32_t tsdbSnapReadRangeBegin(STsdbSnapReader* reader) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(reader->ctx->fsr == NULL);
|
||||
|
||||
if (reader->ctx->fsrArrIdx < TARRAY2_SIZE(reader->fsrArr)) {
|
||||
reader->ctx->fsr = TARRAY2_GET(reader->fsrArr, reader->ctx->fsrArrIdx++);
|
||||
reader->ctx->isDataDone = false;
|
||||
|
@ -335,7 +325,6 @@ static int32_t tsdbSnapReadTimeSeriesData(STsdbSnapReader* reader, uint8_t** dat
|
|||
}
|
||||
|
||||
if (reader->blockData->nRow > 0) {
|
||||
ASSERT(reader->blockData->suid || reader->blockData->uid);
|
||||
code = tsdbSnapCmprData(reader, data);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
}
|
||||
|
@ -616,7 +605,6 @@ static int32_t tsdbSnapWriteTimeSeriesRow(STsdbSnapWriter* writer, SRowInfo* row
|
|||
}
|
||||
|
||||
if (row->suid == INT64_MAX) {
|
||||
ASSERT(writer->ctx->hasData == false);
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
|
@ -634,9 +622,6 @@ static int32_t tsdbSnapWriteFileSetOpenReader(STsdbSnapWriter* writer) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(writer->ctx->dataReader == NULL);
|
||||
ASSERT(TARRAY2_SIZE(writer->ctx->sttReaderArr) == 0);
|
||||
|
||||
if (writer->ctx->fset) {
|
||||
// open data reader
|
||||
SDataFileReaderConfig dataFileReaderConfig = {
|
||||
|
@ -825,8 +810,6 @@ static int32_t tsdbSnapWriteFileSetBegin(STsdbSnapWriter* writer, int32_t fid) {
|
|||
int32_t code = 0;
|
||||
int32_t lino = 0;
|
||||
|
||||
ASSERT(writer->ctx->fsetWriteBegin == false);
|
||||
|
||||
STFileSet* fset = &(STFileSet){.fid = fid};
|
||||
|
||||
writer->ctx->fid = fid;
|
||||
|
@ -885,7 +868,6 @@ static int32_t tsdbSnapWriteTombRecord(STsdbSnapWriter* writer, const STombRecor
|
|||
}
|
||||
|
||||
if (record->suid == INT64_MAX) {
|
||||
ASSERT(writer->ctx->hasTomb == false);
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
|
@ -996,7 +978,6 @@ static int32_t tsdbSnapWriteDecmprTombBlock(SSnapDataHdr* hdr, STombBlock* tombB
|
|||
TAOS_UNUSED(tTombBlockClear(tombBlock));
|
||||
|
||||
int64_t size = hdr->size;
|
||||
ASSERT(size % TOMB_RECORD_ELEM_NUM == 0);
|
||||
size = size / TOMB_RECORD_ELEM_NUM;
|
||||
tombBlock->numOfRecords = size / sizeof(int64_t);
|
||||
|
||||
|
@ -1043,8 +1024,6 @@ static int32_t tsdbSnapWriteTombData(STsdbSnapWriter* writer, SSnapDataHdr* hdr)
|
|||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
}
|
||||
|
||||
ASSERT(writer->ctx->hasData == false);
|
||||
|
||||
for (int32_t i = 0; i < TOMB_BLOCK_SIZE(tombBlock); ++i) {
|
||||
code = tTombBlockGet(tombBlock, i, &record);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
@ -1177,7 +1156,7 @@ int32_t tsdbSnapWrite(STsdbSnapWriter* writer, SSnapDataHdr* hdr) {
|
|||
code = tsdbSnapWriteTombData(writer, hdr);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
} else {
|
||||
ASSERT(0);
|
||||
TSDB_CHECK_CODE(code = TSDB_CODE_INVALID_PARA, lino, _exit);
|
||||
}
|
||||
|
||||
_exit:
|
||||
|
|
|
@ -106,7 +106,6 @@ _exit:
|
|||
#endif
|
||||
|
||||
void tMapDataGetItemByIdx(SMapData *pMapData, int32_t idx, void *pItem, int32_t (*tGetItemFn)(uint8_t *, void *)) {
|
||||
ASSERT(idx >= 0 && idx < pMapData->nItem);
|
||||
(void)tGetItemFn(pMapData->pData + pMapData->aOffset[idx], pItem);
|
||||
}
|
||||
|
||||
|
@ -584,7 +583,8 @@ int32_t tsdbFidLevel(int32_t fid, STsdbKeepCfg *pKeepCfg, int64_t nowSec) {
|
|||
} else if (pKeepCfg->precision == TSDB_TIME_PRECISION_NANO) {
|
||||
nowSec = nowSec * 1000000000l;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
tsdbError("invalid time precision:%d", pKeepCfg->precision);
|
||||
return 0;
|
||||
}
|
||||
|
||||
nowSec = nowSec - pKeepCfg->keepTimeOffset * tsTickPerHour[pKeepCfg->precision];
|
||||
|
@ -628,8 +628,6 @@ void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *
|
|||
*pColVal = COL_VAL_NONE(pTColumn->colId, pTColumn->type);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -697,8 +695,6 @@ int32_t tsdbRowIterOpen(STSDBRowIter *pIter, TSDBROW *pRow, STSchema *pTSchema)
|
|||
if (code) return code;
|
||||
} else if (pRow->type == TSDBROW_COL_FMT) {
|
||||
pIter->iColData = 0;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -730,8 +726,8 @@ SColVal *tsdbRowIterNext(STSDBRowIter *pIter) {
|
|||
return NULL;
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return NULL; // suppress error report by compiler
|
||||
tsdbError("invalid row type:%d", pIter->pRow->type);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -902,76 +898,6 @@ int32_t tsdbRowMergerGetRow(SRowMerger *pMerger, SRow **ppRow) {
|
|||
return tRowBuild(pMerger->pArray, pMerger->pTSchema, ppRow);
|
||||
}
|
||||
|
||||
/*
|
||||
// delete skyline ======================================================
|
||||
static int32_t tsdbMergeSkyline2(SArray *aSkyline1, SArray *aSkyline2, SArray *aSkyline) {
|
||||
int32_t code = 0;
|
||||
int32_t i1 = 0;
|
||||
int32_t n1 = taosArrayGetSize(aSkyline1);
|
||||
int32_t i2 = 0;
|
||||
int32_t n2 = taosArrayGetSize(aSkyline2);
|
||||
TSDBKEY *pSkyline1;
|
||||
TSDBKEY *pSkyline2;
|
||||
TSDBKEY item;
|
||||
int64_t version1 = 0;
|
||||
int64_t version2 = 0;
|
||||
|
||||
ASSERT(n1 > 0 && n2 > 0);
|
||||
|
||||
taosArrayClear(aSkyline);
|
||||
|
||||
while (i1 < n1 && i2 < n2) {
|
||||
pSkyline1 = (TSDBKEY *)taosArrayGet(aSkyline1, i1);
|
||||
pSkyline2 = (TSDBKEY *)taosArrayGet(aSkyline2, i2);
|
||||
|
||||
if (pSkyline1->ts < pSkyline2->ts) {
|
||||
version1 = pSkyline1->version;
|
||||
i1++;
|
||||
} else if (pSkyline1->ts > pSkyline2->ts) {
|
||||
version2 = pSkyline2->version;
|
||||
i2++;
|
||||
} else {
|
||||
version1 = pSkyline1->version;
|
||||
version2 = pSkyline2->version;
|
||||
i1++;
|
||||
i2++;
|
||||
}
|
||||
|
||||
item.ts = TMIN(pSkyline1->ts, pSkyline2->ts);
|
||||
item.version = TMAX(version1, version2);
|
||||
if (taosArrayPush(aSkyline, &item) == NULL) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
goto _exit;
|
||||
}
|
||||
}
|
||||
|
||||
while (i1 < n1) {
|
||||
pSkyline1 = (TSDBKEY *)taosArrayGet(aSkyline1, i1);
|
||||
item.ts = pSkyline1->ts;
|
||||
item.version = pSkyline1->version;
|
||||
if (taosArrayPush(aSkyline, &item) == NULL) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
goto _exit;
|
||||
}
|
||||
i1++;
|
||||
}
|
||||
|
||||
while (i2 < n2) {
|
||||
pSkyline2 = (TSDBKEY *)taosArrayGet(aSkyline2, i2);
|
||||
item.ts = pSkyline2->ts;
|
||||
item.version = pSkyline2->version;
|
||||
if (taosArrayPush(aSkyline, &item) == NULL) {
|
||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||
goto _exit;
|
||||
}
|
||||
i2++;
|
||||
}
|
||||
|
||||
_exit:
|
||||
return code;
|
||||
}
|
||||
*/
|
||||
|
||||
// delete skyline ======================================================
|
||||
static void tsdbMergeSkyline(SArray *pSkyline1, SArray *pSkyline2, SArray *pSkyline) {
|
||||
int32_t i1 = 0;
|
||||
|
@ -983,8 +909,6 @@ static void tsdbMergeSkyline(SArray *pSkyline1, SArray *pSkyline2, SArray *pSkyl
|
|||
int64_t version1 = 0;
|
||||
int64_t version2 = 0;
|
||||
|
||||
ASSERT(n1 > 0 && n2 > 0);
|
||||
|
||||
taosArrayClear(pSkyline);
|
||||
TSDBKEY **pItem = TARRAY_GET_ELEM(pSkyline, 0);
|
||||
|
||||
|
@ -1217,7 +1141,9 @@ _exit:
|
|||
int32_t tBlockDataInit(SBlockData *pBlockData, TABLEID *pId, STSchema *pTSchema, int16_t *aCid, int32_t nCid) {
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(pId->suid || pId->uid);
|
||||
if (!pId->suid && !pId->uid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
pBlockData->suid = pId->suid;
|
||||
pBlockData->uid = pId->uid;
|
||||
|
@ -1277,8 +1203,6 @@ void tBlockDataReset(SBlockData *pBlockData) {
|
|||
}
|
||||
|
||||
void tBlockDataClear(SBlockData *pBlockData) {
|
||||
ASSERT(pBlockData->suid || pBlockData->uid);
|
||||
|
||||
pBlockData->nRow = 0;
|
||||
for (int32_t iColData = 0; iColData < pBlockData->nColData; iColData++) {
|
||||
tColDataClear(tBlockDataGetColDataByIdx(pBlockData, iColData));
|
||||
|
@ -1286,7 +1210,9 @@ void tBlockDataClear(SBlockData *pBlockData) {
|
|||
}
|
||||
|
||||
int32_t tBlockDataAddColData(SBlockData *pBlockData, int16_t cid, int8_t type, int8_t cflag, SColData **ppColData) {
|
||||
ASSERT(pBlockData->nColData == 0 || pBlockData->aColData[pBlockData->nColData - 1].cid < cid);
|
||||
if (pBlockData->nColData != 0 && pBlockData->aColData[pBlockData->nColData - 1].cid >= cid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
SColData *newColData = taosMemoryRealloc(pBlockData->aColData, sizeof(SColData) * (pBlockData->nColData + 1));
|
||||
if (newColData == NULL) {
|
||||
|
@ -1350,7 +1276,9 @@ int32_t tBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTS
|
|||
|
||||
// uid
|
||||
if (pBlockData->uid == 0) {
|
||||
ASSERT(uid);
|
||||
if (!uid) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
code = tRealloc((uint8_t **)&pBlockData->aUid, sizeof(int64_t) * (pBlockData->nRow + 1));
|
||||
if (code) goto _exit;
|
||||
pBlockData->aUid[pBlockData->nRow] = uid;
|
||||
|
@ -1384,7 +1312,9 @@ int32_t tBlockDataUpdateRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTS
|
|||
// version
|
||||
int64_t lversion = pBlockData->aVersion[pBlockData->nRow - 1];
|
||||
int64_t rversion = TSDBROW_VERSION(pRow);
|
||||
ASSERT(lversion != rversion);
|
||||
if (lversion == rversion) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (rversion > lversion) {
|
||||
pBlockData->aVersion[pBlockData->nRow - 1] = rversion;
|
||||
}
|
||||
|
@ -1398,7 +1328,8 @@ int32_t tBlockDataUpdateRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTS
|
|||
code = tBlockDataUpsertBlockRow(pBlockData, pRow->pBlockData, pRow->iRow, (rversion > lversion) ? 1 : -1);
|
||||
if (code) goto _exit;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
code = TSDB_CODE_INVALID_PARA;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
_exit:
|
||||
|
@ -1745,8 +1676,6 @@ int32_t tBlockDataDecompressColData(const SDiskDataHdr *hdr, const SBlockCol *bl
|
|||
code = tBlockDataAddColData(blockData, blockCol->cid, blockCol->type, blockCol->cflag, &colData);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
|
||||
// ASSERT(blockCol->flag != HAS_NONE);
|
||||
|
||||
SColDataCompressInfo info = {
|
||||
.cmprAlg = blockCol->alg,
|
||||
.columnFlag = blockCol->cflag,
|
||||
|
|
|
@ -276,7 +276,9 @@ int32_t tBrinBlockClear(SBrinBlock *brinBlock) {
|
|||
}
|
||||
|
||||
int32_t tBrinBlockPut(SBrinBlock *brinBlock, const SBrinRecord *record) {
|
||||
ASSERT(record->firstKey.key.numOfPKs == record->lastKey.key.numOfPKs);
|
||||
if (record->firstKey.key.numOfPKs != record->lastKey.key.numOfPKs) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
if (brinBlock->numOfRecords == 0) { // the first row
|
||||
brinBlock->numOfPKs = record->firstKey.key.numOfPKs;
|
||||
|
|
|
@ -103,17 +103,18 @@ int vnodeCloseBufPool(SVnode *pVnode) {
|
|||
}
|
||||
|
||||
void vnodeBufPoolReset(SVBufPool *pPool) {
|
||||
ASSERT(pPool->nQuery == 0);
|
||||
if (pPool->nQuery != 0) {
|
||||
vError("vgId:%d, buffer pool %p of id %d has %d queries, reset it may cause problem", TD_VID(pPool->pVnode), pPool,
|
||||
pPool->id, pPool->nQuery);
|
||||
}
|
||||
|
||||
for (SVBufPoolNode *pNode = pPool->pTail; pNode->prev; pNode = pPool->pTail) {
|
||||
ASSERT(pNode->pnext == &pPool->pTail);
|
||||
pNode->prev->pnext = &pPool->pTail;
|
||||
pPool->pTail = pNode->prev;
|
||||
pPool->size = pPool->size - sizeof(*pNode) - pNode->size;
|
||||
taosMemoryFree(pNode);
|
||||
}
|
||||
|
||||
ASSERT(pPool->size == pPool->ptr - pPool->node.data);
|
||||
|
||||
pPool->size = 0;
|
||||
pPool->ptr = pPool->node.data;
|
||||
}
|
||||
|
@ -123,7 +124,11 @@ void *vnodeBufPoolMallocAligned(SVBufPool *pPool, int size) {
|
|||
void *p = NULL;
|
||||
uint8_t *ptr = NULL;
|
||||
int paddingLen = 0;
|
||||
ASSERT(pPool != NULL);
|
||||
|
||||
if (pPool == NULL) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (pPool->lock) taosThreadSpinLock(pPool->lock);
|
||||
|
||||
|
@ -162,7 +167,11 @@ void *vnodeBufPoolMallocAligned(SVBufPool *pPool, int size) {
|
|||
void *vnodeBufPoolMalloc(SVBufPool *pPool, int size) {
|
||||
SVBufPoolNode *pNode;
|
||||
void *p = NULL;
|
||||
ASSERT(pPool != NULL);
|
||||
|
||||
if (pPool == NULL) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (pPool->lock) taosThreadSpinLock(pPool->lock);
|
||||
if (pPool->node.size >= pPool->ptr - pPool->node.data + size) {
|
||||
|
@ -207,7 +216,9 @@ void vnodeBufPoolFree(SVBufPool *pPool, void *p) {
|
|||
|
||||
void vnodeBufPoolRef(SVBufPool *pPool) {
|
||||
int32_t nRef = atomic_fetch_add_32(&pPool->nRef, 1);
|
||||
ASSERT(nRef > 0);
|
||||
if (nRef <= 0) {
|
||||
vError("vgId:%d, buffer pool %p of id %d is referenced by %d", TD_VID(pPool->pVnode), pPool, pPool->id, nRef);
|
||||
}
|
||||
}
|
||||
|
||||
void vnodeBufPoolAddToFreeList(SVBufPool *pPool) {
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
*/
|
||||
|
||||
#include "cos.h"
|
||||
#include "monitor.h"
|
||||
#include "vnd.h"
|
||||
|
||||
static volatile int32_t VINIT = 0;
|
||||
|
@ -26,6 +27,8 @@ int vnodeInit(int nthreads, StopDnodeFp stopDnodeFp) {
|
|||
TAOS_CHECK_RETURN(vnodeAsyncOpen(nthreads));
|
||||
TAOS_CHECK_RETURN(walInit(stopDnodeFp));
|
||||
|
||||
monInitVnode();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -494,24 +494,6 @@ SVnode *vnodeOpen(const char *path, int32_t diskPrimary, STfs *pTfs, SMsgCb msgC
|
|||
snprintf(pVnode->monitor.strDnodeId, TSDB_NODE_ID_LEN, "%" PRId32, pVnode->config.syncCfg.nodeInfo[0].nodeId);
|
||||
snprintf(pVnode->monitor.strVgId, TSDB_VGROUP_ID_LEN, "%" PRId32, pVnode->config.vgId);
|
||||
|
||||
if (tsEnableMonitor && pVnode->monitor.insertCounter == NULL) {
|
||||
taos_counter_t *counter = NULL;
|
||||
int32_t label_count = 7;
|
||||
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
|
||||
VNODE_METRIC_TAG_NAME_DNODE_ID, VNODE_METRIC_TAG_NAME_DNODE_EP,
|
||||
VNODE_METRIC_TAG_NAME_VGROUP_ID, VNODE_METRIC_TAG_NAME_USERNAME,
|
||||
VNODE_METRIC_TAG_NAME_RESULT};
|
||||
counter = taos_counter_new(VNODE_METRIC_SQL_COUNT, "counter for insert sql", label_count, sample_labels);
|
||||
vInfo("vgId:%d, new metric:%p", TD_VID(pVnode), counter);
|
||||
if (taos_collector_registry_register_metric(counter) == 1) {
|
||||
(void)taos_counter_destroy(counter);
|
||||
counter = taos_collector_registry_get_metric(VNODE_METRIC_SQL_COUNT);
|
||||
vInfo("vgId:%d, get metric from registry:%p", TD_VID(pVnode), counter);
|
||||
}
|
||||
pVnode->monitor.insertCounter = counter;
|
||||
vInfo("vgId:%d, succeed to set metric:%p", TD_VID(pVnode), counter);
|
||||
}
|
||||
|
||||
return pVnode;
|
||||
|
||||
_err:
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#define VNODE_GET_LOAD_RESET_VALS(pVar, oVal, vType, tags) \
|
||||
do { \
|
||||
int##vType##_t newVal = atomic_sub_fetch_##vType(&(pVar), (oVal)); \
|
||||
ASSERT(newVal >= 0); \
|
||||
if (newVal < 0) { \
|
||||
vWarn("vgId:%d, %s, abnormal val:%" PRIi64 ", old val:%" PRIi64, TD_VID(pVnode), tags, newVal, (oVal)); \
|
||||
} \
|
||||
|
@ -37,7 +36,10 @@ int32_t fillTableColCmpr(SMetaReader *reader, SSchemaExt *pExt, int32_t numOfCol
|
|||
int8_t tblType = reader->me.type;
|
||||
if (useCompress(tblType)) {
|
||||
SColCmprWrapper *p = &(reader->me.colCmpr);
|
||||
ASSERT(numOfCol == p->nCols);
|
||||
if (numOfCol != p->nCols) {
|
||||
vError("fillTableColCmpr table type:%d, col num:%d, col cmpr num:%d mismatch", tblType, numOfCol, p->nCols);
|
||||
return TSDB_CODE_APP_ERROR;
|
||||
}
|
||||
for (int i = 0; i < p->nCols; i++) {
|
||||
SColCmpr *pCmpr = &p->pColCmpr[i];
|
||||
pExt[i].colId = pCmpr->id;
|
||||
|
@ -104,7 +106,8 @@ int32_t vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
|||
} else if (mer1.me.type == TSDB_NORMAL_TABLE) {
|
||||
schema = mer1.me.ntbEntry.schemaRow;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
vError("vnodeGetTableMeta get invalid table type:%d", mer1.me.type);
|
||||
return TSDB_CODE_APP_ERROR;
|
||||
}
|
||||
|
||||
metaRsp.numOfTags = schemaTag.nCols;
|
||||
|
@ -262,7 +265,8 @@ int32_t vnodeGetTableCfg(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
vError("vnodeGetTableCfg get invalid table type:%d", mer1.me.type);
|
||||
return TSDB_CODE_APP_ERROR;
|
||||
}
|
||||
|
||||
cfgRsp.numOfTags = schemaTag.nCols;
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include "audit.h"
|
||||
#include "cos.h"
|
||||
#include "monitor.h"
|
||||
#include "tencode.h"
|
||||
#include "tglobal.h"
|
||||
#include "tmsg.h"
|
||||
|
@ -23,6 +24,8 @@
|
|||
#include "vnode.h"
|
||||
#include "vnodeInt.h"
|
||||
|
||||
extern taos_counter_t *tsInsertCounter;
|
||||
|
||||
static int32_t vnodeProcessCreateStbReq(SVnode *pVnode, int64_t ver, void *pReq, int32_t len, SRpcMsg *pRsp);
|
||||
static int32_t vnodeProcessAlterStbReq(SVnode *pVnode, int64_t ver, void *pReq, int32_t len, SRpcMsg *pRsp);
|
||||
static int32_t vnodeProcessDropStbReq(SVnode *pVnode, int64_t ver, void *pReq, int32_t len, SRpcMsg *pRsp);
|
||||
|
@ -934,20 +937,23 @@ _exit:
|
|||
}
|
||||
|
||||
static int32_t vnodeProcessDropTtlTbReq(SVnode *pVnode, int64_t ver, void *pReq, int32_t len, SRpcMsg *pRsp) {
|
||||
int ret = 0;
|
||||
SVDropTtlTableReq ttlReq = {0};
|
||||
if (tDeserializeSVDropTtlTableReq(pReq, len, &ttlReq) != 0) {
|
||||
terrno = TSDB_CODE_INVALID_MSG;
|
||||
ret = TSDB_CODE_INVALID_MSG;
|
||||
goto end;
|
||||
}
|
||||
|
||||
ASSERT(ttlReq.nUids == taosArrayGetSize(ttlReq.pTbUids));
|
||||
if (ttlReq.nUids != taosArrayGetSize(ttlReq.pTbUids)) {
|
||||
ret = TSDB_CODE_INVALID_MSG;
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (ttlReq.nUids != 0) {
|
||||
vInfo("vgId:%d, drop ttl table req will be processed, time:%d, ntbUids:%d", pVnode->config.vgId,
|
||||
ttlReq.timestampSec, ttlReq.nUids);
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
if (ttlReq.nUids > 0) {
|
||||
metaDropTables(pVnode->pMeta, ttlReq.pTbUids);
|
||||
(void)tqUpdateTbUidList(pVnode->pTq, ttlReq.pTbUids, false);
|
||||
|
@ -1787,8 +1793,7 @@ static int32_t vnodeProcessSubmitReq(SVnode *pVnode, int64_t ver, void *pReq, in
|
|||
}
|
||||
|
||||
if (info.suid) {
|
||||
code = metaGetInfo(pVnode->pMeta, info.suid, &info, NULL);
|
||||
ASSERT(code == 0);
|
||||
(void)metaGetInfo(pVnode->pMeta, info.suid, &info, NULL);
|
||||
}
|
||||
|
||||
if (pSubmitTbData->sver != info.skmVer) {
|
||||
|
@ -1901,7 +1906,8 @@ _exit:
|
|||
(void)atomic_add_fetch_64(&pVnode->statis.nInsertSuccess, pSubmitRsp->affectedRows);
|
||||
(void)atomic_add_fetch_64(&pVnode->statis.nBatchInsert, 1);
|
||||
|
||||
if (tsEnableMonitor && pSubmitRsp->affectedRows > 0 && strlen(pOriginalMsg->info.conn.user) > 0) {
|
||||
if (tsEnableMonitor && tsMonitorFqdn[0] != 0 && tsMonitorPort != 0 && pSubmitRsp->affectedRows > 0 &&
|
||||
strlen(pOriginalMsg->info.conn.user) > 0 && tsInsertCounter != NULL) {
|
||||
const char *sample_labels[] = {VNODE_METRIC_TAG_VALUE_INSERT_AFFECTED_ROWS,
|
||||
pVnode->monitor.strClusterId,
|
||||
pVnode->monitor.strDnodeId,
|
||||
|
@ -1909,7 +1915,7 @@ _exit:
|
|||
pVnode->monitor.strVgId,
|
||||
pOriginalMsg->info.conn.user,
|
||||
"Success"};
|
||||
(void)taos_counter_add(pVnode->monitor.insertCounter, pSubmitRsp->affectedRows, sample_labels);
|
||||
(void)taos_counter_add(tsInsertCounter, pSubmitRsp->affectedRows, sample_labels);
|
||||
}
|
||||
|
||||
if (code == 0) {
|
||||
|
|
|
@ -852,34 +852,58 @@ typedef struct SCtgCacheItemInfo {
|
|||
#define CTG_LOCK(type, _lock) \
|
||||
do { \
|
||||
if (CTG_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value before read lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before read lock"); \
|
||||
break; \
|
||||
} \
|
||||
CTG_LOCK_DEBUG("CTG RLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRLockLatch(_lock); \
|
||||
CTG_LOCK_DEBUG("CTG RLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) > 0, "invalid lock value after read lock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value after read lock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value before write lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before write lock"); \
|
||||
break; \
|
||||
} \
|
||||
CTG_LOCK_DEBUG("CTG WLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWLockLatch(_lock); \
|
||||
CTG_LOCK_DEBUG("CTG WLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) == TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value after write lock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value after write lock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CTG_UNLOCK(type, _lock) \
|
||||
do { \
|
||||
if (CTG_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32((_lock)) > 0, "invalid lock value before read unlock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value before read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
CTG_LOCK_DEBUG("CTG RULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRUnLockLatch(_lock); \
|
||||
CTG_LOCK_DEBUG("CTG RULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after read unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32((_lock)) == TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value before write unlock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value before write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
CTG_LOCK_DEBUG("CTG WULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWUnLockLatch(_lock); \
|
||||
CTG_LOCK_DEBUG("CTG WULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after write unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -774,8 +774,6 @@ int32_t ctgGetTsma(SCatalog* pCtg, SRequestConnInfo* pConn, const SName* pTsmaNa
|
|||
|
||||
CTG_ERR_JRET(code);
|
||||
|
||||
ASSERT(tsmaRsp.pTsmas && tsmaRsp.pTsmas->size == 1);
|
||||
|
||||
*pTsma = taosArrayGetP(tsmaRsp.pTsmas, 0);
|
||||
taosArrayDestroy(tsmaRsp.pTsmas);
|
||||
tsmaRsp.pTsmas = NULL;
|
||||
|
|
|
@ -2448,8 +2448,11 @@ int32_t ctgHandleGetTSMARsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf*
|
|||
|
||||
STableTSMAInfoRsp* pOut = pMsgCtx->out;
|
||||
pRes->code = 0;
|
||||
if (pOut->pTsmas->size > 0) {
|
||||
ASSERT(pOut->pTsmas->size == 1);
|
||||
if (1 != pOut->pTsmas->size) {
|
||||
ctgError("invalid tsma num:%d", (int32_t)pOut->pTsmas->size);
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
pRes->pRes = pOut;
|
||||
pMsgCtx->out = NULL;
|
||||
TSWAP(pTask->res, pCtx->pResList);
|
||||
|
@ -2466,12 +2469,12 @@ int32_t ctgHandleGetTSMARsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf*
|
|||
TSWAP(pMsgCtx->lastOut, pMsgCtx->out);
|
||||
CTG_RET(ctgGetTbMetaFromMnodeImpl(pCtg, pConn, pTsma->targetDbFName, pTsma->targetTb, NULL, tReq));
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
ctgError("invalid reqType:%d while getting tsma rsp", reqType);
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
_return:
|
||||
|
@ -2635,14 +2638,14 @@ int32_t ctgHandleGetTbTSMARsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf
|
|||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
ctgError("invalid fetchType:%d while getting tb tsma rsp", pFetch->fetchType);
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case TDMT_VND_TABLE_META: {
|
||||
// handle source tb meta
|
||||
ASSERT(pFetch->fetchType == FETCH_TSMA_SOURCE_TB_META);
|
||||
STableMetaOutput* pOut = (STableMetaOutput*)pMsgCtx->out;
|
||||
pFetch->fetchType = FETCH_TB_TSMA;
|
||||
pFetch->tsmaSourceTbName = *pTbName;
|
||||
|
@ -2663,7 +2666,8 @@ int32_t ctgHandleGetTbTSMARsp(SCtgTaskReq* tReq, int32_t reqType, const SDataBuf
|
|||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
ctgError("invalid reqType:%d while getting tsma rsp", reqType);
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
_return:
|
||||
|
@ -3628,7 +3632,8 @@ int32_t ctgLaunchGetTbTSMATask(SCtgTask* pTask) {
|
|||
break;
|
||||
}
|
||||
default:
|
||||
ASSERT(0);
|
||||
ctgError("invalid fetchType:%d in getting tb tsma task", pFetch->fetchType);
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -3644,14 +3649,12 @@ int32_t ctgLaunchGetTSMATask(SCtgTask* pTask) {
|
|||
SCtgJob* pJob = pTask->pJob;
|
||||
|
||||
// currently, only support fetching one tsma
|
||||
ASSERT(pCtx->pNames->size == 1);
|
||||
STablesReq* pReq = taosArrayGet(pCtx->pNames, 0);
|
||||
if (NULL == pReq) {
|
||||
ctgError("fail to get the 0th STablesReq, totalNum:%d", (int32_t)taosArrayGetSize(pCtx->pNames));
|
||||
CTG_ERR_RET(TSDB_CODE_CTG_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
ASSERT(pReq->pTables->size == 1);
|
||||
SName* pTsmaName = taosArrayGet(pReq->pTables, 0);
|
||||
if (NULL == pReq) {
|
||||
ctgError("fail to get the 0th SName, totalNum:%d", (int32_t)taosArrayGetSize(pReq->pTables));
|
||||
|
@ -3686,7 +3689,6 @@ int32_t ctgLaunchGetTSMATask(SCtgTask* pTask) {
|
|||
}
|
||||
|
||||
STableTSMAInfoRsp* pRsp = (STableTSMAInfoRsp*)pRes->pRes;
|
||||
ASSERT(pRsp->pTsmas->size == 1);
|
||||
|
||||
const STSMACache* pTsma = taosArrayGetP(pRsp->pTsmas, 0);
|
||||
if (NULL == pTsma) {
|
||||
|
|
|
@ -42,7 +42,8 @@ int32_t ctgHandleBatchRsp(SCtgJob* pJob, SCtgTaskCallbackParam* cbParam, SDataBu
|
|||
msgNum = taosArrayGetSize(batchRsp.pRsps);
|
||||
}
|
||||
|
||||
if (ASSERTS(taskNum == msgNum || 0 == msgNum, "taskNum %d mis-match msgNum %d", taskNum, msgNum)) {
|
||||
if (taskNum != msgNum && 0 != msgNum) {
|
||||
ctgError("taskNum %d mis-match msgNum %d", taskNum, msgNum);
|
||||
msgNum = 0;
|
||||
}
|
||||
|
||||
|
@ -77,7 +78,9 @@ int32_t ctgHandleBatchRsp(SCtgJob* pJob, SCtgTaskCallbackParam* cbParam, SDataBu
|
|||
if (msgNum > 0) {
|
||||
pRsp = taosArrayGet(batchRsp.pRsps, i);
|
||||
|
||||
if (ASSERTS(pRsp->msgIdx == *msgIdx, "rsp msgIdx %d mis-match msgIdx %d", pRsp->msgIdx, *msgIdx)) {
|
||||
if (pRsp->msgIdx != *msgIdx) {
|
||||
ctgError("rsp msgIdx %d mis-match msgIdx %d", pRsp->msgIdx, *msgIdx);
|
||||
|
||||
pRsp = &rsp;
|
||||
pRsp->msgIdx = *msgIdx;
|
||||
pRsp->reqType = -1;
|
||||
|
|
|
@ -2631,7 +2631,7 @@ bool hasOutOfDateTSMACache(SArray* pTsmas) {
|
|||
for (int32_t i = 0; i < pTsmas->size; ++i) {
|
||||
STSMACache* pTsmaInfo = taosArrayGetP(pTsmas, i);
|
||||
if (NULL == pTsmaInfo) {
|
||||
ASSERT(0);
|
||||
continue;
|
||||
}
|
||||
if (isCtgTSMACacheOutOfDate(pTsmaInfo)) {
|
||||
return true;
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
#define T_LONG_JMP(_obj, _c) \
|
||||
do { \
|
||||
ASSERT(1); \
|
||||
qError("error happens at %s, line:%d, code:%s", __func__, __LINE__, tstrerror((_c))); \
|
||||
longjmp((_obj), (_c)); \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -87,7 +87,10 @@ static int32_t toDataCacheEntry(SDataDeleterHandle* pHandle, const SInputData* p
|
|||
if (pRes->affectedRows) {
|
||||
pRes->skey = *(int64_t*)pColSKey->pData;
|
||||
pRes->ekey = *(int64_t*)pColEKey->pData;
|
||||
ASSERT(pRes->skey <= pRes->ekey);
|
||||
if (pRes->skey > pRes->ekey) {
|
||||
qError("data delter skey:%" PRId64 " is bigger than ekey:%" PRId64, pRes->skey, pRes->ekey);
|
||||
QRY_ERR_RET(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||
}
|
||||
} else {
|
||||
pRes->skey = pHandle->pDeleter->deleteTimeRange.skey;
|
||||
pRes->ekey = pHandle->pDeleter->deleteTimeRange.ekey;
|
||||
|
@ -205,7 +208,10 @@ static void getDataLength(SDataSinkHandle* pHandle, int64_t* pLen, int64_t* pRaw
|
|||
static int32_t getDataBlock(SDataSinkHandle* pHandle, SOutputData* pOutput) {
|
||||
SDataDeleterHandle* pDeleter = (SDataDeleterHandle*)pHandle;
|
||||
if (NULL == pDeleter->nextOutput.pData) {
|
||||
ASSERT(pDeleter->queryEnd);
|
||||
if (!pDeleter->queryEnd) {
|
||||
qError("empty res while query not end in data deleter");
|
||||
return TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR;
|
||||
}
|
||||
pOutput->useconds = pDeleter->useconds;
|
||||
pOutput->precision = pDeleter->pSchema->precision;
|
||||
pOutput->bufStatus = DS_BUF_EMPTY;
|
||||
|
|
|
@ -242,7 +242,11 @@ static void getDataLength(SDataSinkHandle* pHandle, int64_t* pLen, int64_t* pRow
|
|||
static int32_t getDataBlock(SDataSinkHandle* pHandle, SOutputData* pOutput) {
|
||||
SDataDispatchHandle* pDispatcher = (SDataDispatchHandle*)pHandle;
|
||||
if (NULL == pDispatcher->nextOutput.pData) {
|
||||
ASSERT(pDispatcher->queryEnd);
|
||||
if (!pDispatcher->queryEnd) {
|
||||
qError("empty res while query not end in data dispatcher");
|
||||
return TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
pOutput->useconds = pDispatcher->useconds;
|
||||
pOutput->precision = pDispatcher->pSchema->precision;
|
||||
pOutput->bufStatus = DS_BUF_EMPTY;
|
||||
|
|
|
@ -234,7 +234,11 @@ int32_t buildSubmitReqFromBlock(SDataInserterHandle* pInserter, SSubmitReq2** pp
|
|||
case TSDB_DATA_TYPE_NCHAR:
|
||||
case TSDB_DATA_TYPE_VARBINARY:
|
||||
case TSDB_DATA_TYPE_VARCHAR: { // TSDB_DATA_TYPE_BINARY
|
||||
ASSERT(pColInfoData->info.type == pCol->type);
|
||||
if (pColInfoData->info.type != pCol->type) {
|
||||
qError("column:%d type:%d in block dismatch with schema col:%d type:%d", colIdx, pColInfoData->info.type, k, pCol->type);
|
||||
terrno = TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR;
|
||||
goto _end;
|
||||
}
|
||||
if (colDataIsNull_s(pColInfoData, j)) {
|
||||
SColVal cv = COL_VAL_NULL(pCol->colId, pCol->type);
|
||||
if (NULL == taosArrayPush(pVals, &cv)) {
|
||||
|
|
|
@ -823,12 +823,14 @@ static void postProcessStbJoinTableHash(SOperatorInfo* pOperator) {
|
|||
pStbJoin->execInfo.leftCacheNum = tSimpleHashGetSize(pStbJoin->ctx.prev.leftCache);
|
||||
qDebug("more than 1 ref build table num %" PRId64, (int64_t)tSimpleHashGetSize(pStbJoin->ctx.prev.leftCache));
|
||||
|
||||
/*
|
||||
// debug only
|
||||
iter = 0;
|
||||
uint32_t* num = NULL;
|
||||
while (NULL != (num = tSimpleHashIterate(pStbJoin->ctx.prev.leftCache, num, &iter))) {
|
||||
A S S E R T(*num > 1);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
static void buildStbJoinTableList(SOperatorInfo* pOperator) {
|
||||
|
|
|
@ -521,6 +521,7 @@ void doDestroyExchangeOperatorInfo(void* param) {
|
|||
int32_t loadRemoteDataCallback(void* param, SDataBuf* pMsg, int32_t code) {
|
||||
SFetchRspHandleWrapper* pWrapper = (SFetchRspHandleWrapper*)param;
|
||||
|
||||
taosMemoryFreeClear(pMsg->pEpSet);
|
||||
SExchangeInfo* pExchangeInfo = taosAcquireRef(exchangeObjRefPool, pWrapper->exchangeId);
|
||||
if (pExchangeInfo == NULL) {
|
||||
qWarn("failed to acquire exchange operator, since it may have been released, %p", pExchangeInfo);
|
||||
|
|
|
@ -38,8 +38,6 @@ bool hJoinBlkReachThreshold(SHJoinOperatorInfo* pInfo, int64_t blkRows) {
|
|||
}
|
||||
|
||||
int32_t hJoinHandleMidRemains(SHJoinOperatorInfo* pJoin, SHJoinCtx* pCtx) {
|
||||
ASSERT(0 < pJoin->midBlk->info.rows);
|
||||
|
||||
TSWAP(pJoin->midBlk, pJoin->finBlk);
|
||||
|
||||
pCtx->midRemains = false;
|
||||
|
@ -1153,7 +1151,6 @@ int32_t hJoinInitResBlocks(SHJoinOperatorInfo* pJoin, SHashJoinPhysiNode* pJoinN
|
|||
if (NULL == pJoin->finBlk) {
|
||||
QRY_ERR_RET(terrno);
|
||||
}
|
||||
ASSERT(pJoinNode->node.pOutputDataBlockDesc->totalRowSize > 0);
|
||||
|
||||
int32_t code = blockDataEnsureCapacity(pJoin->finBlk, hJoinGetFinBlkCapacity(pJoin, pJoinNode));
|
||||
if (TSDB_CODE_SUCCESS != code) {
|
||||
|
|
|
@ -321,7 +321,7 @@ static int32_t mOuterJoinMergeSeqCart(SMJoinMergeCtx* pCtx) {
|
|||
|
||||
int32_t buildEndIdx = buildGrp->endIdx;
|
||||
buildGrp->endIdx = buildGrp->readIdx + rowsLeft - 1;
|
||||
ASSERT(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
//A S S E R T(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
MJ_ERR_RET(mJoinMergeGrpCart(pCtx->pJoin, pCtx->midBlk, true, probeGrp, buildGrp));
|
||||
buildGrp->readIdx += rowsLeft;
|
||||
buildGrp->endIdx = buildEndIdx;
|
||||
|
@ -1383,9 +1383,9 @@ static int32_t mSemiJoinHashGrpCartFilter(SMJoinMergeCtx* pCtx, SMJoinGrpRows* p
|
|||
continue;
|
||||
}
|
||||
|
||||
ASSERT(1 == pCtx->midBlk->info.rows);
|
||||
//A S S E R T(1 == pCtx->midBlk->info.rows);
|
||||
MJ_ERR_RET(mJoinCopyMergeMidBlk(pCtx, &pCtx->midBlk, &pCtx->finBlk));
|
||||
ASSERT(false == pCtx->midRemains);
|
||||
//A S S E R T(false == pCtx->midRemains);
|
||||
|
||||
break;
|
||||
} while (true);
|
||||
|
@ -1449,10 +1449,10 @@ static int32_t mSemiJoinHashFullCart(SMJoinMergeCtx* pCtx) {
|
|||
}
|
||||
|
||||
build->pHashCurGrp = *(SArray**)pGrp;
|
||||
ASSERT(1 == taosArrayGetSize(build->pHashCurGrp));
|
||||
//A S S E R T(1 == taosArrayGetSize(build->pHashCurGrp));
|
||||
build->grpRowIdx = 0;
|
||||
MJ_ERR_RET(mJoinHashGrpCart(pCtx->finBlk, probeGrp, true, probe, build, NULL));
|
||||
ASSERT(build->grpRowIdx < 0);
|
||||
//A S S E R T(build->grpRowIdx < 0);
|
||||
}
|
||||
|
||||
pCtx->grpRemains = probeGrp->readIdx <= probeGrp->endIdx;
|
||||
|
@ -1497,7 +1497,7 @@ static int32_t mSemiJoinMergeSeqCart(SMJoinMergeCtx* pCtx) {
|
|||
|
||||
int32_t buildEndIdx = buildGrp->endIdx;
|
||||
buildGrp->endIdx = buildGrp->readIdx + rowsLeft - 1;
|
||||
ASSERT(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
//A S S E R T(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
MJ_ERR_RET(mJoinMergeGrpCart(pCtx->pJoin, pCtx->midBlk, true, probeGrp, buildGrp));
|
||||
buildGrp->readIdx += rowsLeft;
|
||||
buildGrp->endIdx = buildEndIdx;
|
||||
|
@ -1513,9 +1513,9 @@ static int32_t mSemiJoinMergeSeqCart(SMJoinMergeCtx* pCtx) {
|
|||
continue;
|
||||
}
|
||||
} else {
|
||||
ASSERT(1 == pCtx->midBlk->info.rows);
|
||||
//A S S E R T(1 == pCtx->midBlk->info.rows);
|
||||
MJ_ERR_RET(mJoinCopyMergeMidBlk(pCtx, &pCtx->midBlk, &pCtx->finBlk));
|
||||
ASSERT(false == pCtx->midRemains);
|
||||
//A S S E R T(false == pCtx->midRemains);
|
||||
|
||||
if (build->grpIdx == buildGrpNum) {
|
||||
continue;
|
||||
|
@ -1555,8 +1555,8 @@ static int32_t mSemiJoinMergeFullCart(SMJoinMergeCtx* pCtx) {
|
|||
int32_t probeRows = GRP_REMAIN_ROWS(probeGrp);
|
||||
int32_t probeEndIdx = probeGrp->endIdx;
|
||||
|
||||
ASSERT(1 == taosArrayGetSize(build->eqGrps));
|
||||
ASSERT(buildGrp->beginIdx == buildGrp->endIdx);
|
||||
//A S S E R T(1 == taosArrayGetSize(build->eqGrps));
|
||||
//A S S E R T(buildGrp->beginIdx == buildGrp->endIdx);
|
||||
|
||||
if (probeRows <= rowsLeft) {
|
||||
MJ_ERR_RET(mJoinMergeGrpCart(pCtx->pJoin, pCtx->finBlk, true, probeGrp, buildGrp));
|
||||
|
@ -1826,7 +1826,7 @@ static int32_t mAntiJoinMergeSeqCart(SMJoinMergeCtx* pCtx) {
|
|||
|
||||
int32_t buildEndIdx = buildGrp->endIdx;
|
||||
buildGrp->endIdx = buildGrp->readIdx + rowsLeft - 1;
|
||||
ASSERT(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
//A S S E R T(buildGrp->endIdx >= buildGrp->readIdx);
|
||||
MJ_ERR_RET(mJoinMergeGrpCart(pCtx->pJoin, pCtx->midBlk, true, probeGrp, buildGrp));
|
||||
buildGrp->readIdx += rowsLeft;
|
||||
buildGrp->endIdx = buildEndIdx;
|
||||
|
@ -2381,7 +2381,7 @@ int32_t mAsofForwardTrimCacheBlk(SMJoinWindowCtx* pCtx) {
|
|||
if (pGrp->blk == pCtx->cache.outBlk && pCtx->pJoin->build->blkRowIdx > 0) {
|
||||
MJ_ERR_RET(blockDataTrimFirstRows(pGrp->blk, pCtx->pJoin->build->blkRowIdx));
|
||||
pCtx->pJoin->build->blkRowIdx = 0;
|
||||
ASSERT(pCtx->pJoin->build->blk == pGrp->blk);
|
||||
//A S S E R T(pCtx->pJoin->build->blk == pGrp->blk);
|
||||
MJOIN_SAVE_TB_BLK(&pCtx->cache, pCtx->pJoin->build);
|
||||
}
|
||||
|
||||
|
@ -2419,7 +2419,7 @@ int32_t mAsofForwardChkFillGrpCache(SMJoinWindowCtx* pCtx) {
|
|||
MJ_ERR_RET(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||
}
|
||||
|
||||
ASSERT(pGrp->blk == pCache->outBlk);
|
||||
//A S S E R T(pGrp->blk == pCache->outBlk);
|
||||
//pGrp->endIdx = pGrp->blk->info.rows - pGrp->beginIdx;
|
||||
}
|
||||
|
||||
|
@ -2427,8 +2427,8 @@ int32_t mAsofForwardChkFillGrpCache(SMJoinWindowCtx* pCtx) {
|
|||
}
|
||||
|
||||
|
||||
ASSERT(taosArrayGetSize(pCache->grps) == 1);
|
||||
ASSERT(pGrp->blk->info.rows - pGrp->beginIdx == pCtx->cache.rowNum);
|
||||
//A S S E R T(taosArrayGetSize(pCache->grps) == 1);
|
||||
//A S S E R T(pGrp->blk->info.rows - pGrp->beginIdx == pCtx->cache.rowNum);
|
||||
}
|
||||
|
||||
do {
|
||||
|
@ -2473,7 +2473,7 @@ int32_t mAsofForwardUpdateBuildGrpEndIdx(SMJoinWindowCtx* pCtx) {
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
ASSERT(pCtx->jLimit > (pGrp->blk->info.rows - pGrp->beginIdx));
|
||||
//A S S E R T(pCtx->jLimit > (pGrp->blk->info.rows - pGrp->beginIdx));
|
||||
pGrp->endIdx = pGrp->blk->info.rows - 1;
|
||||
|
||||
int64_t remainRows = pCtx->jLimit - (pGrp->endIdx - pGrp->beginIdx + 1);
|
||||
|
@ -2550,8 +2550,8 @@ int32_t mAsofForwardSkipAllEqRows(SMJoinWindowCtx* pCtx, int64_t timestamp) {
|
|||
MJOIN_RESTORE_TB_BLK(cache, pTable);
|
||||
} while (!MJOIN_BUILD_TB_ROWS_DONE(pTable));
|
||||
|
||||
ASSERT(pCtx->cache.rowNum == 0);
|
||||
ASSERT(taosArrayGetSize(pCtx->cache.grps) == 0);
|
||||
//A S S E R T(pCtx->cache.rowNum == 0);
|
||||
//A S S E R T(taosArrayGetSize(pCtx->cache.grps) == 0);
|
||||
|
||||
if (pTable->dsFetchDone) {
|
||||
return TSDB_CODE_SUCCESS;
|
||||
|
@ -2648,7 +2648,7 @@ static int32_t mAsofForwardRetrieve(SOperatorInfo* pOperator, SMJoinOperatorInfo
|
|||
if ((probeGot || MJOIN_DS_NEED_INIT(pOperator, pJoin->build)) && pCtx->cache.rowNum < pCtx->jLimit) {
|
||||
pJoin->build->newBlk = false;
|
||||
MJOIN_SAVE_TB_BLK(&pCtx->cache, pCtx->pJoin->build);
|
||||
ASSERT(taosArrayGetSize(pCtx->cache.grps) <= 1);
|
||||
//A S S E R T(taosArrayGetSize(pCtx->cache.grps) <= 1);
|
||||
buildGot = mJoinRetrieveBlk(pJoin, &pJoin->build->blkRowIdx, &pJoin->build->blk, pJoin->build);
|
||||
}
|
||||
|
||||
|
@ -3375,7 +3375,7 @@ int32_t mWinJoinMoveAscWinEnd(SMJoinWindowCtx* pCtx) {
|
|||
continue;
|
||||
}
|
||||
|
||||
ASSERT(pGrp->endIdx > startIdx);
|
||||
//A S S E R T(pGrp->endIdx > startIdx);
|
||||
|
||||
pGrp->endIdx--;
|
||||
break;
|
||||
|
@ -3419,7 +3419,7 @@ int32_t mWinJoinMoveDescWinEnd(SMJoinWindowCtx* pCtx) {
|
|||
continue;
|
||||
}
|
||||
|
||||
ASSERT(pGrp->endIdx > startIdx);
|
||||
//A S S E R T(pGrp->endIdx > startIdx);
|
||||
|
||||
pGrp->endIdx--;
|
||||
break;
|
||||
|
@ -3676,7 +3676,7 @@ int32_t mJoinInitMergeCtx(SMJoinOperatorInfo* pJoin, SSortMergeJoinPhysiNode* pJ
|
|||
MJ_ERR_RET(terrno);
|
||||
}
|
||||
|
||||
ASSERT(pJoinNode->node.pOutputDataBlockDesc->totalRowSize > 0);
|
||||
//A S S E R T(pJoinNode->node.pOutputDataBlockDesc->totalRowSize > 0);
|
||||
|
||||
MJ_ERR_RET(blockDataEnsureCapacity(pCtx->finBlk, mJoinGetFinBlkCapacity(pJoin, pJoinNode)));
|
||||
|
||||
|
|
|
@ -490,8 +490,6 @@ int32_t mJoinCopyMergeMidBlk(SMJoinMergeCtx* pCtx, SSDataBlock** ppMid, SSDataBl
|
|||
|
||||
|
||||
int32_t mJoinHandleMidRemains(SMJoinMergeCtx* pCtx) {
|
||||
ASSERT(0 < pCtx->midBlk->info.rows);
|
||||
|
||||
TSWAP(pCtx->midBlk, pCtx->finBlk);
|
||||
|
||||
pCtx->midRemains = false;
|
||||
|
@ -567,7 +565,6 @@ int32_t mJoinMergeGrpCart(SMJoinOperatorInfo* pJoin, SSDataBlock* pRes, bool app
|
|||
int32_t currRows = append ? pRes->info.rows : 0;
|
||||
int32_t firstRows = GRP_REMAIN_ROWS(pFirst);
|
||||
int32_t secondRows = GRP_REMAIN_ROWS(pSecond);
|
||||
ASSERT(secondRows > 0);
|
||||
|
||||
for (int32_t c = 0; c < probe->finNum; ++c) {
|
||||
SMJoinColMap* pFirstCol = probe->finCols + c;
|
||||
|
@ -581,9 +578,15 @@ int32_t mJoinMergeGrpCart(SMJoinOperatorInfo* pJoin, SSDataBlock* pRes, bool app
|
|||
if (colDataIsNull_s(pInCol, pFirst->readIdx + r)) {
|
||||
colDataSetNItemsNull(pOutCol, currRows + r * secondRows, secondRows);
|
||||
} else {
|
||||
ASSERT(pRes->info.capacity >= (pRes->info.rows + firstRows * secondRows));
|
||||
if (pRes->info.capacity < (pRes->info.rows + firstRows * secondRows)) {
|
||||
qError("capacity:%d not enough, rows:%" PRId64 ", firstRows:%d, secondRows:%d", pRes->info.capacity, pRes->info.rows, firstRows, secondRows);
|
||||
MJ_ERR_RET(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||
}
|
||||
uint32_t startOffset = (IS_VAR_DATA_TYPE(pOutCol->info.type)) ? pOutCol->varmeta.length : ((currRows + r * secondRows) * pOutCol->info.bytes);
|
||||
ASSERT((startOffset + 1 * pOutCol->info.bytes) <= pRes->info.capacity * pOutCol->info.bytes);
|
||||
if ((startOffset + 1 * pOutCol->info.bytes) > pRes->info.capacity * pOutCol->info.bytes) {
|
||||
qError("col buff not enough, startOffset:%d, bytes:%d, capacity:%d", startOffset, pOutCol->info.bytes, pRes->info.capacity);
|
||||
MJ_ERR_RET(TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||
}
|
||||
MJ_ERR_RET(colDataSetNItems(pOutCol, currRows + r * secondRows, colDataGetData(pInCol, pFirst->readIdx + r), secondRows, true));
|
||||
}
|
||||
}
|
||||
|
@ -1097,7 +1100,6 @@ SSDataBlock* mJoinGrpRetrieveImpl(SMJoinOperatorInfo* pJoin, SMJoinTableCtx* pTa
|
|||
}
|
||||
|
||||
SMJoinTableCtx* pProbe = pJoin->probe;
|
||||
ASSERT(pProbe->lastInGid);
|
||||
|
||||
while (true) {
|
||||
if (pTable->remainInBlk) {
|
||||
|
|
|
@ -681,6 +681,7 @@ int32_t doApplyIndefinitFunction(SOperatorInfo* pOperator, SSDataBlock** pResBlo
|
|||
}
|
||||
|
||||
int32_t initCtxOutputBuffer(SqlFunctionCtx* pCtx, int32_t size) {
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
for (int32_t j = 0; j < size; ++j) {
|
||||
struct SResultRowEntryInfo* pResInfo = GET_RES_INFO(&pCtx[j]);
|
||||
if (isRowEntryInitialized(pResInfo) || fmIsPseudoColumnFunc(pCtx[j].functionId) || pCtx[j].functionId == -1 ||
|
||||
|
@ -688,7 +689,10 @@ int32_t initCtxOutputBuffer(SqlFunctionCtx* pCtx, int32_t size) {
|
|||
continue;
|
||||
}
|
||||
|
||||
(void)pCtx[j].fpSet.init(&pCtx[j], pCtx[j].resultInfo);
|
||||
code = pCtx[j].fpSet.init(&pCtx[j], pCtx[j].resultInfo);
|
||||
if (code) {
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1033,8 +1037,8 @@ int32_t projectApplyFunctions(SExprInfo* pExpr, SSDataBlock* pResult, SSDataBloc
|
|||
// do nothing
|
||||
} else if (fmIsIndefiniteRowsFunc(pfCtx->functionId)) {
|
||||
SResultRowEntryInfo* pResInfo = GET_RES_INFO(pfCtx);
|
||||
(void) pfCtx->fpSet.init(pfCtx, pResInfo);
|
||||
|
||||
code = pfCtx->fpSet.init(pfCtx, pResInfo);
|
||||
TSDB_CHECK_CODE(code, lino, _exit);
|
||||
pfCtx->pOutput = taosArrayGet(pResult->pDataBlock, outputSlotId);
|
||||
if (pfCtx->pOutput == NULL) {
|
||||
code = terrno;
|
||||
|
|
|
@ -2592,6 +2592,7 @@ static int32_t doBlockDataPrimaryKeyFilter(SSDataBlock* pBlock, STqOffsetVal* of
|
|||
TSDB_CODE_QRY_EXECUTOR_INTERNAL_ERROR);
|
||||
|
||||
__compar_fn_t func = getComparFunc(pColPk->info.type, 0);
|
||||
QUERY_CHECK_NULL(func, code, lino, _end, terrno);
|
||||
for (int32_t i = 0; i < pBlock->info.rows; ++i) {
|
||||
int64_t* ts = (int64_t*)colDataGetData(pColTs, i);
|
||||
void* data = colDataGetData(pColPk, i);
|
||||
|
|
|
@ -343,27 +343,45 @@ int optSysDoCompare(__compar_fn_t func, int8_t comparType, void* a, void* b) {
|
|||
|
||||
static int optSysFilterFuncImpl__LowerThan(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_LOWER_THAN, a, b);
|
||||
}
|
||||
static int optSysFilterFuncImpl__LowerEqual(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_LOWER_EQUAL, a, b);
|
||||
}
|
||||
static int optSysFilterFuncImpl__GreaterThan(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_GREATER_THAN, a, b);
|
||||
}
|
||||
static int optSysFilterFuncImpl__GreaterEqual(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_GREATER_EQUAL, a, b);
|
||||
}
|
||||
static int optSysFilterFuncImpl__Equal(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_EQUAL, a, b);
|
||||
}
|
||||
|
||||
static int optSysFilterFuncImpl__NoEqual(void* a, void* b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return optSysDoCompare(func, OP_TYPE_NOT_EQUAL, a, b);
|
||||
}
|
||||
|
||||
|
@ -1418,7 +1436,7 @@ static SSDataBlock* sysTableBuildUserTablesByUids(SOperatorInfo* pOperator) {
|
|||
int64_t suid = mr.me.ctbEntry.suid;
|
||||
code = pAPI->metaReaderFn.getTableEntryByUid(&mr1, suid);
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
qError("failed to get super table meta, cname:%s, suid:0x%" PRIx64 ", code:%s, %s", pInfo->pCur->mr.me.name,
|
||||
qError("failed to get super table meta, cname:%s, suid:0x%" PRIx64 ", code:%s, %s", mr.me.name,
|
||||
suid, tstrerror(terrno), GET_TASKID(pTaskInfo));
|
||||
pAPI->metaReaderFn.clearReader(&mr1);
|
||||
pAPI->metaReaderFn.clearReader(&mr);
|
||||
|
|
|
@ -115,7 +115,7 @@ int32_t tfileWriterOpen(char* path, uint64_t suid, int64_t version, const char*
|
|||
void tfileWriterClose(TFileWriter* tw);
|
||||
int32_t tfileWriterCreate(IFileCtx* ctx, TFileHeader* header, TFileWriter** pWriter);
|
||||
void tfileWriterDestroy(TFileWriter* tw);
|
||||
int tfileWriterPut(TFileWriter* tw, void* data, bool order);
|
||||
int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order);
|
||||
int tfileWriterFinish(TFileWriter* tw);
|
||||
|
||||
//
|
||||
|
|
|
@ -123,6 +123,7 @@ static int32_t cacheSearchCompareFunc(void* cache, SIndexTerm* term, SIdxTRslt*
|
|||
if (cache == NULL) {
|
||||
return 0;
|
||||
}
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
MemTable* mem = cache;
|
||||
IndexCache* pCache = mem->pCache;
|
||||
|
||||
|
@ -146,7 +147,12 @@ static int32_t cacheSearchCompareFunc(void* cache, SIndexTerm* term, SIdxTRslt*
|
|||
break;
|
||||
}
|
||||
CacheTerm* c = (CacheTerm*)SL_GET_NODE_DATA(node);
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
TExeCond cond = cmpFn(c->colVal, pCt->colVal, pCt->colType);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
if (cond == MATCH) {
|
||||
if (c->operaType == ADD_VALUE) {
|
||||
INDEX_MERGE_ADD_DEL(tr->del, tr->add, c->uid)
|
||||
|
@ -161,9 +167,11 @@ static int32_t cacheSearchCompareFunc(void* cache, SIndexTerm* term, SIdxTRslt*
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_return:
|
||||
taosMemoryFree(pCt);
|
||||
(void)tSkipListDestroyIter(iter);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
return code;
|
||||
}
|
||||
static int32_t cacheSearchLessThan(void* cache, SIndexTerm* term, SIdxTRslt* tr, STermValueType* s) {
|
||||
return cacheSearchCompareFunc(cache, term, tr, s, LT);
|
||||
|
@ -265,6 +273,7 @@ static int32_t cacheSearchCompareFunc_JSON(void* cache, SIndexTerm* term, SIdxTR
|
|||
}
|
||||
_cache_range_compare cmpFn = idxGetCompare(type);
|
||||
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
MemTable* mem = cache;
|
||||
IndexCache* pCache = mem->pCache;
|
||||
|
||||
|
@ -308,9 +317,18 @@ static int32_t cacheSearchCompareFunc_JSON(void* cache, SIndexTerm* term, SIdxTR
|
|||
continue;
|
||||
} else {
|
||||
char* p = taosMemoryCalloc(1, strlen(c->colVal) + 1);
|
||||
if (NULL == p) {
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
memcpy(p, c->colVal, strlen(c->colVal));
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
cond = cmpFn(p + skip, term->colVal, dType);
|
||||
taosMemoryFree(p);
|
||||
if (terrno != TSDB_CODE_SUCCESS) {
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cond == MATCH) {
|
||||
|
@ -327,11 +345,12 @@ static int32_t cacheSearchCompareFunc_JSON(void* cache, SIndexTerm* term, SIdxTR
|
|||
}
|
||||
}
|
||||
|
||||
_return:
|
||||
taosMemoryFree(pCt);
|
||||
taosMemoryFree(exBuf);
|
||||
(void)tSkipListDestroyIter(iter);
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
return code;
|
||||
}
|
||||
static int32_t cacheSearchRange(void* cache, SIndexTerm* term, SIdxTRslt* tr, STermValueType* s) {
|
||||
// impl later
|
||||
|
|
|
@ -84,27 +84,45 @@ __compar_fn_t idxGetCompar(int8_t type) {
|
|||
}
|
||||
static FORCE_INLINE TExeCond tCompareLessThan(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_LESS_THAN, a, b, type);
|
||||
}
|
||||
static FORCE_INLINE TExeCond tCompareLessEqual(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_LESS_EQUAL, a, b, type);
|
||||
}
|
||||
static FORCE_INLINE TExeCond tCompareGreaterThan(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_GREATER_THAN, a, b, type);
|
||||
}
|
||||
static FORCE_INLINE TExeCond tCompareGreaterEqual(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_GREATER_EQUAL, a, b, type);
|
||||
}
|
||||
|
||||
static FORCE_INLINE TExeCond tCompareContains(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_TERM, a, b, type);
|
||||
}
|
||||
static FORCE_INLINE TExeCond tCompareEqual(void* a, void* b, int8_t type) {
|
||||
__compar_fn_t func = idxGetCompar(type);
|
||||
if (func == NULL) {
|
||||
return BREAK;
|
||||
}
|
||||
return tCompare(func, QUERY_TERM, a, b, type);
|
||||
}
|
||||
TExeCond tCompare(__compar_fn_t func, int8_t cmptype, void* a, void* b, int8_t dtype) {
|
||||
|
|
|
@ -432,22 +432,37 @@ typedef int (*FilterFunc)(void *a, void *b, int16_t dtype);
|
|||
|
||||
static FORCE_INLINE int sifGreaterThan(void *a, void *b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return tDoCompare(func, QUERY_GREATER_THAN, a, b);
|
||||
}
|
||||
static FORCE_INLINE int sifGreaterEqual(void *a, void *b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return tDoCompare(func, QUERY_GREATER_EQUAL, a, b);
|
||||
}
|
||||
static FORCE_INLINE int sifLessEqual(void *a, void *b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return tDoCompare(func, QUERY_LESS_EQUAL, a, b);
|
||||
}
|
||||
static FORCE_INLINE int sifLessThan(void *a, void *b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
return (int)tDoCompare(func, QUERY_LESS_THAN, a, b);
|
||||
}
|
||||
static FORCE_INLINE int sifEqual(void *a, void *b, int16_t dtype) {
|
||||
__compar_fn_t func = getComparFunc(dtype, 0);
|
||||
if (func == NULL) {
|
||||
return -1;
|
||||
}
|
||||
//__compar_fn_t func = idxGetCompar(dtype);
|
||||
return (int)tDoCompare(func, QUERY_TERM, a, b);
|
||||
}
|
||||
|
|
|
@ -315,7 +315,7 @@ static int32_t tfSearchRegex(void* reader, SIndexTerm* tem, SIdxTRslt* tr) {
|
|||
}
|
||||
|
||||
static int32_t tfSearchCompareFunc(void* reader, SIndexTerm* tem, SIdxTRslt* tr, RangeType type) {
|
||||
int ret = 0;
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
char* p = tem->colVal;
|
||||
int skip = 0;
|
||||
_cache_range_compare cmpFn = idxGetCompare(type);
|
||||
|
@ -335,7 +335,13 @@ static int32_t tfSearchCompareFunc(void* reader, SIndexTerm* tem, SIdxTRslt* tr,
|
|||
FstSlice* s = &rt->data;
|
||||
char* ch = (char*)fstSliceData(s, NULL);
|
||||
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
TExeCond cond = cmpFn(ch, p, tem->colType);
|
||||
if (TSDB_CODE_SUCCESS != terrno) {
|
||||
swsResultDestroy(rt);
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
if (MATCH == cond) {
|
||||
(void)tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total);
|
||||
} else if (CONTINUE == cond) {
|
||||
|
@ -345,10 +351,11 @@ static int32_t tfSearchCompareFunc(void* reader, SIndexTerm* tem, SIdxTRslt* tr,
|
|||
}
|
||||
swsResultDestroy(rt);
|
||||
}
|
||||
_return:
|
||||
stmStDestroy(st);
|
||||
stmBuilderDestroy(sb);
|
||||
taosArrayDestroy(offsets);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
return code;
|
||||
}
|
||||
static int32_t tfSearchLessThan(void* reader, SIndexTerm* tem, SIdxTRslt* tr) {
|
||||
return tfSearchCompareFunc(reader, tem, tr, LT);
|
||||
|
@ -427,7 +434,7 @@ static int32_t tfSearchRange_JSON(void* reader, SIndexTerm* tem, SIdxTRslt* tr)
|
|||
}
|
||||
|
||||
static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTRslt* tr, RangeType ctype) {
|
||||
int ret = 0;
|
||||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
int skip = 0;
|
||||
|
||||
char* p = NULL;
|
||||
|
@ -469,9 +476,20 @@ static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTRslt
|
|||
continue;
|
||||
}
|
||||
char* tBuf = taosMemoryCalloc(1, sz + 1);
|
||||
if (NULL == tBuf) {
|
||||
swsResultDestroy(rt);
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
memcpy(tBuf, ch, sz);
|
||||
terrno = TSDB_CODE_SUCCESS;
|
||||
cond = cmpFn(tBuf + skip, tem->colVal, IDX_TYPE_GET_TYPE(tem->colType));
|
||||
taosMemoryFree(tBuf);
|
||||
if (TSDB_CODE_SUCCESS != terrno) {
|
||||
swsResultDestroy(rt);
|
||||
code = terrno;
|
||||
goto _return;
|
||||
}
|
||||
}
|
||||
if (MATCH == cond) {
|
||||
(void)tfileReaderLoadTableIds((TFileReader*)reader, rt->out.out, tr->total);
|
||||
|
@ -482,12 +500,14 @@ static int32_t tfSearchCompareFunc_JSON(void* reader, SIndexTerm* tem, SIdxTRslt
|
|||
}
|
||||
swsResultDestroy(rt);
|
||||
}
|
||||
|
||||
_return:
|
||||
stmStDestroy(st);
|
||||
stmBuilderDestroy(sb);
|
||||
taosArrayDestroy(offsets);
|
||||
taosMemoryFree(p);
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
return code;
|
||||
}
|
||||
int tfileReaderSearch(TFileReader* reader, SIndexTermQuery* query, SIdxTRslt* tr) {
|
||||
int ret = 0;
|
||||
|
@ -558,7 +578,7 @@ int32_t tfileWriterCreate(IFileCtx* ctx, TFileHeader* header, TFileWriter** pWri
|
|||
return code;
|
||||
}
|
||||
|
||||
int tfileWriterPut(TFileWriter* tw, void* data, bool order) {
|
||||
int32_t tfileWriterPut(TFileWriter* tw, void* data, bool order) {
|
||||
// sort by coltype and write to tindex
|
||||
if (order == false) {
|
||||
__compar_fn_t fn;
|
||||
|
@ -571,6 +591,9 @@ int tfileWriterPut(TFileWriter* tw, void* data, bool order) {
|
|||
} else {
|
||||
fn = getComparFunc(colType, 0);
|
||||
}
|
||||
if (fn == NULL) {
|
||||
return terrno;
|
||||
}
|
||||
(void)taosArraySortPWithExt((SArray*)(data), tfileValueCompare, &fn);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,11 +21,25 @@
|
|||
#include "thttp.h"
|
||||
#include "ttime.h"
|
||||
|
||||
#define VNODE_METRIC_SQL_COUNT "taosd_sql_req:count"
|
||||
|
||||
#define VNODE_METRIC_TAG_NAME_SQL_TYPE "sql_type"
|
||||
#define VNODE_METRIC_TAG_NAME_CLUSTER_ID "cluster_id"
|
||||
#define VNODE_METRIC_TAG_NAME_DNODE_ID "dnode_id"
|
||||
#define VNODE_METRIC_TAG_NAME_DNODE_EP "dnode_ep"
|
||||
#define VNODE_METRIC_TAG_NAME_VGROUP_ID "vgroup_id"
|
||||
#define VNODE_METRIC_TAG_NAME_USERNAME "username"
|
||||
#define VNODE_METRIC_TAG_NAME_RESULT "result"
|
||||
|
||||
// #define VNODE_METRIC_TAG_VALUE_INSERT "insert"
|
||||
// #define VNODE_METRIC_TAG_VALUE_DELETE "delete"
|
||||
|
||||
SMonitor tsMonitor = {0};
|
||||
char *tsMonUri = "/report";
|
||||
char *tsMonFwUri = "/general-metric";
|
||||
char *tsMonSlowLogUri = "/slow-sql-detail-batch";
|
||||
char *tsMonFwBasicUri = "/taosd-cluster-basic";
|
||||
taos_counter_t *tsInsertCounter = NULL;
|
||||
|
||||
void monRecordLog(int64_t ts, ELogLevel level, const char *content) {
|
||||
(void)taosThreadMutexLock(&tsMonitor.lock);
|
||||
|
@ -117,6 +131,28 @@ int32_t monInit(const SMonCfg *pCfg) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void monInitVnode() {
|
||||
if (tsEnableMonitor && tsMonitorFqdn[0] != 0 && tsMonitorPort != 0 && tsInsertCounter == NULL) {
|
||||
taos_counter_t *counter = NULL;
|
||||
int32_t label_count = 7;
|
||||
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
|
||||
VNODE_METRIC_TAG_NAME_DNODE_ID, VNODE_METRIC_TAG_NAME_DNODE_EP,
|
||||
VNODE_METRIC_TAG_NAME_VGROUP_ID, VNODE_METRIC_TAG_NAME_USERNAME,
|
||||
VNODE_METRIC_TAG_NAME_RESULT};
|
||||
counter = taos_counter_new(VNODE_METRIC_SQL_COUNT, "counter for insert sql", label_count, sample_labels);
|
||||
uDebug("new metric:%p", counter);
|
||||
if (taos_collector_registry_register_metric(counter) == 1) {
|
||||
(void)taos_counter_destroy(counter);
|
||||
uError("failed to register metric:%p", counter);
|
||||
} else {
|
||||
tsInsertCounter = counter;
|
||||
uInfo("succeed to set inserted row metric:%p", tsInsertCounter);
|
||||
}
|
||||
} else {
|
||||
uError("failed to set insert counter, already set");
|
||||
}
|
||||
}
|
||||
|
||||
void monCleanup() {
|
||||
tsLogFp = NULL;
|
||||
taosArrayDestroy(tsMonitor.logs);
|
||||
|
|
|
@ -1905,10 +1905,11 @@ SNode* setTableOption(SAstCreateContext* pCxt, SNode* pOptions, ETableOptionType
|
|||
case TABLE_OPTION_TTL: {
|
||||
int64_t ttl = taosStr2Int64(((SToken*)pVal)->z, NULL, 10);
|
||||
if (ttl > INT32_MAX) {
|
||||
ttl = INT32_MAX;
|
||||
}
|
||||
pCxt->errCode = TSDB_CODE_TSC_VALUE_OUT_OF_RANGE;
|
||||
} else {
|
||||
// ttl can not be smaller than 0, because there is a limitation in sql.y (TTL NK_INTEGER)
|
||||
((STableOptions*)pOptions)->ttl = ttl;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case TABLE_OPTION_SMA:
|
||||
|
|
|
@ -745,7 +745,7 @@ int32_t insMergeTableDataCxt(SHashObj* pTableHash, SArray** pVgDataBlocks, bool
|
|||
|
||||
taosArraySort(pTableCxt->pData->aCol, insColDataComp);
|
||||
|
||||
tColDataSortMerge(pTableCxt->pData->aCol);
|
||||
code = tColDataSortMerge(pTableCxt->pData->aCol);
|
||||
} else {
|
||||
// skip the table has no data to insert
|
||||
// eg: import a csv without valid data
|
||||
|
|
|
@ -341,34 +341,58 @@ typedef struct SQWorkerMgmt {
|
|||
#define QW_LOCK(type, _lock) \
|
||||
do { \
|
||||
if (QW_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value before read lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before read lock"); \
|
||||
break; \
|
||||
} \
|
||||
QW_LOCK_DEBUG("QW RLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRLockLatch(_lock); \
|
||||
QW_LOCK_DEBUG("QW RLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) > 0, "invalid lock value after read lock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value after read lock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value before write lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before write lock"); \
|
||||
break; \
|
||||
} \
|
||||
QW_LOCK_DEBUG("QW WLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWLockLatch(_lock); \
|
||||
QW_LOCK_DEBUG("QW WLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) == TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value after write lock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value after write lock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define QW_UNLOCK(type, _lock) \
|
||||
do { \
|
||||
if (QW_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32((_lock)) > 0, "invalid lock value before read unlock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value before read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
QW_LOCK_DEBUG("QW RULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRUnLockLatch(_lock); \
|
||||
QW_LOCK_DEBUG("QW RULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after read unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32((_lock)) == TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value before write unlock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value before write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
QW_LOCK_DEBUG("QW WULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWUnLockLatch(_lock); \
|
||||
QW_LOCK_DEBUG("QW WULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after write unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -521,6 +521,10 @@ int32_t filterInitRangeCtx(int32_t type, int32_t options, SFilterRangeCtx **ctx)
|
|||
(*ctx)->type = type;
|
||||
(*ctx)->options = options;
|
||||
(*ctx)->pCompareFunc = getComparFunc(type, 0);
|
||||
if ((*ctx)->pCompareFunc == NULL) {
|
||||
taosMemoryFree(*ctx);
|
||||
return terrno;
|
||||
}
|
||||
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
@ -556,6 +560,9 @@ int32_t filterReuseRangeCtx(SFilterRangeCtx *ctx, int32_t type, int32_t options)
|
|||
ctx->options = options;
|
||||
ctx->pCompareFunc = getComparFunc(type, 0);
|
||||
|
||||
if (ctx->pCompareFunc == NULL) {
|
||||
return terrno;
|
||||
}
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -1454,6 +1461,9 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan
|
|||
|
||||
if ((!FILTER_GET_FLAG(ra->sflag, RANGE_FLG_NULL)) && (!FILTER_GET_FLAG(ra->eflag, RANGE_FLG_NULL))) {
|
||||
__compar_fn_t func = getComparFunc(type, 0);
|
||||
if (func == NULL) {
|
||||
FLT_ERR_RET(terrno);
|
||||
}
|
||||
if (func(&ra->s, &ra->e) == 0) {
|
||||
void *data = taosMemoryMalloc(sizeof(int64_t));
|
||||
if (data == NULL) {
|
||||
|
@ -1565,6 +1575,9 @@ int32_t filterAddGroupUnitFromCtx(SFilterInfo *dst, SFilterInfo *src, SFilterRan
|
|||
|
||||
if ((!FILTER_GET_FLAG(r->ra.sflag, RANGE_FLG_NULL)) && (!FILTER_GET_FLAG(r->ra.eflag, RANGE_FLG_NULL))) {
|
||||
__compar_fn_t func = getComparFunc(type, 0);
|
||||
if (func == NULL) {
|
||||
FLT_ERR_RET(terrno);
|
||||
}
|
||||
if (func(&r->ra.s, &r->ra.e) == 0) {
|
||||
void *data = taosMemoryMalloc(sizeof(int64_t));
|
||||
if (data == NULL) {
|
||||
|
@ -2461,7 +2474,12 @@ int32_t filterMergeGroupUnits(SFilterInfo *info, SFilterGroupCtx **gRes, int32_t
|
|||
}
|
||||
|
||||
if (colIdxi > 1) {
|
||||
taosSort(colIdx, colIdxi, sizeof(uint32_t), getComparFunc(TSDB_DATA_TYPE_USMALLINT, 0));
|
||||
__compar_fn_t cmpFn = getComparFunc(TSDB_DATA_TYPE_USMALLINT, 0);
|
||||
if (cmpFn == NULL) {
|
||||
filterFreeGroupCtx(gRes[gResIdx]);
|
||||
FLT_ERR_JRET(terrno);
|
||||
}
|
||||
taosSort(colIdx, colIdxi, sizeof(uint32_t), cmpFn);
|
||||
}
|
||||
|
||||
for (uint32_t l = 0; l < colIdxi; ++l) {
|
||||
|
|
|
@ -860,31 +860,27 @@ int32_t concatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
|||
int32_t numOfRows = 0;
|
||||
bool hasNchar = (GET_PARAM_TYPE(pOutput) == TSDB_DATA_TYPE_NCHAR) ? true : false;
|
||||
for (int32_t i = 0; i < inputNum; ++i) {
|
||||
if (pInput[i].numOfRows > numOfRows) {
|
||||
numOfRows = pInput[i].numOfRows;
|
||||
}
|
||||
numOfRows = TMAX(pInput[i].numOfRows, numOfRows);
|
||||
}
|
||||
int32_t outputLen = VARSTR_HEADER_SIZE;
|
||||
for (int32_t i = 0; i < inputNum; ++i) {
|
||||
if (IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) {
|
||||
colDataSetNNULL(pOutputData, 0, numOfRows);
|
||||
pOutput->numOfRows = numOfRows;
|
||||
goto _return;
|
||||
}
|
||||
pInputData[i] = pInput[i].columnData;
|
||||
int32_t factor = 1;
|
||||
if (hasNchar && (GET_PARAM_TYPE(&pInput[i]) == TSDB_DATA_TYPE_VARCHAR)) {
|
||||
factor = TSDB_NCHAR_SIZE;
|
||||
}
|
||||
|
||||
int32_t numOfNulls = getNumOfNullEntries(pInputData[i], pInput[i].numOfRows);
|
||||
if (pInput[i].numOfRows == 1) {
|
||||
inputLen += (pInputData[i]->varmeta.length - VARSTR_HEADER_SIZE) * factor * (numOfRows - numOfNulls);
|
||||
} else {
|
||||
inputLen += (pInputData[i]->varmeta.length - (numOfRows - numOfNulls) * VARSTR_HEADER_SIZE) * factor;
|
||||
}
|
||||
outputLen += pInputData[i]->info.bytes * factor;
|
||||
}
|
||||
|
||||
int32_t outputLen = inputLen + numOfRows * VARSTR_HEADER_SIZE;
|
||||
outputBuf = taosMemoryCalloc(outputLen, 1);
|
||||
if (NULL == outputBuf) {
|
||||
SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
char *output = outputBuf;
|
||||
|
||||
for (int32_t k = 0; k < numOfRows; ++k) {
|
||||
bool hasNull = false;
|
||||
|
@ -901,6 +897,7 @@ int32_t concatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
|||
}
|
||||
|
||||
VarDataLenT dataLen = 0;
|
||||
char *output = outputBuf;
|
||||
for (int32_t i = 0; i < inputNum; ++i) {
|
||||
int32_t rowIdx = (pInput[i].numOfRows == 1) ? 0 : k;
|
||||
input[i] = colDataGetData(pInputData[i], rowIdx);
|
||||
|
@ -908,8 +905,7 @@ int32_t concatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
|||
SCL_ERR_JRET(concatCopyHelper(input[i], output, hasNchar, GET_PARAM_TYPE(&pInput[i]), &dataLen));
|
||||
}
|
||||
varDataSetLen(output, dataLen);
|
||||
SCL_ERR_JRET(colDataSetVal(pOutputData, k, output, false));
|
||||
output += varDataTLen(output);
|
||||
SCL_ERR_JRET(colDataSetVal(pOutputData, k, outputBuf, false));
|
||||
}
|
||||
|
||||
pOutput->numOfRows = numOfRows;
|
||||
|
@ -926,51 +922,44 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
|||
int32_t code = TSDB_CODE_SUCCESS;
|
||||
SColumnInfoData **pInputData = taosMemoryCalloc(inputNum, sizeof(SColumnInfoData *));
|
||||
SColumnInfoData *pOutputData = pOutput->columnData;
|
||||
char **input = taosMemoryCalloc(inputNum, POINTER_BYTES);
|
||||
char *outputBuf = NULL;
|
||||
|
||||
if (NULL == pInputData) {
|
||||
SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
if (NULL == input) {
|
||||
SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
|
||||
int32_t inputLen = 0;
|
||||
int32_t numOfRows = 0;
|
||||
bool hasNchar = (GET_PARAM_TYPE(pOutput) == TSDB_DATA_TYPE_NCHAR) ? true : false;
|
||||
for (int32_t i = 1; i < inputNum; ++i) {
|
||||
if (pInput[i].numOfRows > numOfRows) {
|
||||
numOfRows = pInput[i].numOfRows;
|
||||
}
|
||||
}
|
||||
for (int32_t i = 0; i < inputNum; ++i) {
|
||||
numOfRows = TMAX(pInput[i].numOfRows, numOfRows);
|
||||
}
|
||||
int32_t outputLen = VARSTR_HEADER_SIZE;
|
||||
for (int32_t i = 0; i < inputNum; ++i) {
|
||||
if (IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) {
|
||||
colDataSetNNULL(pOutputData, 0, numOfRows);
|
||||
pOutput->numOfRows = numOfRows;
|
||||
goto _return;
|
||||
}
|
||||
pInputData[i] = pInput[i].columnData;
|
||||
int32_t factor = 1;
|
||||
if (hasNchar && (GET_PARAM_TYPE(&pInput[i]) == TSDB_DATA_TYPE_VARCHAR)) {
|
||||
factor = TSDB_NCHAR_SIZE;
|
||||
}
|
||||
|
||||
int32_t numOfNulls = getNumOfNullEntries(pInputData[i], pInput[i].numOfRows);
|
||||
if (i == 0) {
|
||||
// calculate required separator space
|
||||
inputLen +=
|
||||
(pInputData[0]->varmeta.length - VARSTR_HEADER_SIZE) * (numOfRows - numOfNulls) * (inputNum - 2) * factor;
|
||||
} else if (pInput[i].numOfRows == 1) {
|
||||
inputLen += (pInputData[i]->varmeta.length - VARSTR_HEADER_SIZE) * (numOfRows - numOfNulls) * factor;
|
||||
outputLen += pInputData[i]->info.bytes * factor * (inputNum - 2);
|
||||
} else {
|
||||
inputLen += (pInputData[i]->varmeta.length - (numOfRows - numOfNulls) * VARSTR_HEADER_SIZE) * factor;
|
||||
outputLen += pInputData[i]->info.bytes * factor;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t outputLen = inputLen + numOfRows * VARSTR_HEADER_SIZE;
|
||||
outputBuf = taosMemoryCalloc(outputLen, 1);
|
||||
if (NULL == outputBuf) {
|
||||
SCL_ERR_JRET(TSDB_CODE_OUT_OF_MEMORY);
|
||||
}
|
||||
|
||||
char *output = outputBuf;
|
||||
|
||||
for (int32_t k = 0; k < numOfRows; ++k) {
|
||||
if (colDataIsNull_s(pInputData[0], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[0]))) {
|
||||
colDataSetNULL(pOutputData, k);
|
||||
|
@ -979,6 +968,7 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
|||
|
||||
VarDataLenT dataLen = 0;
|
||||
bool hasNull = false;
|
||||
char *output = outputBuf;
|
||||
for (int32_t i = 1; i < inputNum; ++i) {
|
||||
if (colDataIsNull_s(pInputData[i], k) || IS_NULL_TYPE(GET_PARAM_TYPE(&pInput[i]))) {
|
||||
hasNull = true;
|
||||
|
@ -986,9 +976,8 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
|||
}
|
||||
|
||||
int32_t rowIdx = (pInput[i].numOfRows == 1) ? 0 : k;
|
||||
input[i] = colDataGetData(pInputData[i], rowIdx);
|
||||
|
||||
SCL_ERR_JRET(concatCopyHelper(input[i], output, hasNchar, GET_PARAM_TYPE(&pInput[i]), &dataLen));
|
||||
SCL_ERR_JRET(concatCopyHelper(colDataGetData(pInputData[i], rowIdx), output, hasNchar, GET_PARAM_TYPE(&pInput[i]), &dataLen));
|
||||
|
||||
if (i < inputNum - 1) {
|
||||
// insert the separator
|
||||
|
@ -1003,14 +992,12 @@ int32_t concatWsFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *p
|
|||
} else {
|
||||
varDataSetLen(output, dataLen);
|
||||
SCL_ERR_JRET(colDataSetVal(pOutputData, k, output, false));
|
||||
output += varDataTLen(output);
|
||||
}
|
||||
}
|
||||
|
||||
pOutput->numOfRows = numOfRows;
|
||||
|
||||
_return:
|
||||
taosMemoryFree(input);
|
||||
taosMemoryFree(outputBuf);
|
||||
taosMemoryFree(pInputData);
|
||||
|
||||
|
|
|
@ -501,34 +501,58 @@ extern SSchedulerMgmt schMgmt;
|
|||
#define SCH_LOCK(type, _lock) \
|
||||
do { \
|
||||
if (SCH_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32(_lock) >= 0, "invalid lock value before read lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before read lock"); \
|
||||
break; \
|
||||
} \
|
||||
SCH_LOCK_DEBUG("SCH RLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRLockLatch(_lock); \
|
||||
SCH_LOCK_DEBUG("SCH RLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32(_lock) > 0, "invalid lock value after read lock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value after read lock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32(_lock) >= 0, "invalid lock value before write lock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value before write lock"); \
|
||||
break; \
|
||||
} \
|
||||
SCH_LOCK_DEBUG("SCH WLOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWLockLatch(_lock); \
|
||||
SCH_LOCK_DEBUG("SCH WLOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32(_lock) == TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value after write lock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value after write lock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define SCH_UNLOCK(type, _lock) \
|
||||
do { \
|
||||
if (SCH_READ == (type)) { \
|
||||
ASSERTS(atomic_load_32((_lock)) > 0, "invalid lock value before read unlock"); \
|
||||
if (atomic_load_32((_lock)) <= 0) { \
|
||||
qError("invalid lock value before read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
SCH_LOCK_DEBUG("SCH RULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosRUnLockLatch(_lock); \
|
||||
SCH_LOCK_DEBUG("SCH RULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after read unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after read unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} else { \
|
||||
ASSERTS(atomic_load_32((_lock)) & TD_RWLATCH_WRITE_FLAG_COPY, "invalid lock value before write unlock"); \
|
||||
if (atomic_load_32((_lock)) != TD_RWLATCH_WRITE_FLAG_COPY) { \
|
||||
qError("invalid lock value before write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
SCH_LOCK_DEBUG("SCH WULOCK%p:%d, %s:%d B", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
taosWUnLockLatch(_lock); \
|
||||
SCH_LOCK_DEBUG("SCH WULOCK%p:%d, %s:%d E", (_lock), atomic_load_32(_lock), __FILE__, __LINE__); \
|
||||
ASSERTS(atomic_load_32((_lock)) >= 0, "invalid lock value after write unlock"); \
|
||||
if (atomic_load_32((_lock)) < 0) { \
|
||||
qError("invalid lock value after write unlock"); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
|
|
@ -97,8 +97,6 @@ void streamTaskSendCheckMsg(SStreamTask* pTask) {
|
|||
.stage = pTask->pMeta->stage,
|
||||
};
|
||||
|
||||
ASSERT(pTask->status.downstreamReady == 0);
|
||||
|
||||
// serialize streamProcessScanHistoryFinishRsp
|
||||
if (pTask->outputInfo.type == TASK_OUTPUT__FIXED_DISPATCH) {
|
||||
streamTaskStartMonitorCheckRsp(pTask);
|
||||
|
@ -187,8 +185,6 @@ void streamTaskProcessCheckMsg(SStreamMeta* pMeta, SStreamTaskCheckReq* pReq, SS
|
|||
}
|
||||
|
||||
int32_t streamTaskProcessCheckRsp(SStreamTask* pTask, const SStreamTaskCheckRsp* pRsp) {
|
||||
ASSERT(pTask->id.taskId == pRsp->upstreamTaskId);
|
||||
|
||||
int64_t now = taosGetTimestampMs();
|
||||
const char* id = pTask->id.idStr;
|
||||
STaskCheckInfo* pInfo = &pTask->taskCheckInfo;
|
||||
|
@ -200,6 +196,11 @@ int32_t streamTaskProcessCheckRsp(SStreamTask* pTask, const SStreamTaskCheckRsp*
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
if (pTask->id.taskId != pRsp->upstreamTaskId) {
|
||||
stError("s-task:%s invalid check downstream rsp, upstream task:0x%x discard", id, pRsp->upstreamTaskId);
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
|
||||
if (pRsp->status == TASK_DOWNSTREAM_READY) {
|
||||
int32_t code = streamTaskUpdateCheckInfo(pInfo, pRsp->downstreamTaskId, pRsp->status, now, pRsp->reqId, &left, id);
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
|
@ -235,7 +236,6 @@ int32_t streamTaskProcessCheckRsp(SStreamTask* pTask, const SStreamTaskCheckRsp*
|
|||
|
||||
streamMetaAddFailedTaskSelf(pTask, now);
|
||||
} else { // TASK_DOWNSTREAM_NOT_READY, rsp-check monitor will retry in 300 ms
|
||||
ASSERT(left > 0);
|
||||
stDebug("s-task:%s (vgId:%d) recv check rsp from task:0x%x (vgId:%d) status:%d, total:%d not ready:%d", id,
|
||||
pRsp->upstreamNodeId, pRsp->downstreamTaskId, pRsp->downstreamNodeId, pRsp->status, total, left);
|
||||
}
|
||||
|
@ -315,8 +315,6 @@ void streamTaskStopMonitorCheckRsp(STaskCheckInfo* pInfo, const char* id) {
|
|||
}
|
||||
|
||||
void streamTaskCleanupCheckInfo(STaskCheckInfo* pInfo) {
|
||||
ASSERT(pInfo->inCheckProcess == 0);
|
||||
|
||||
taosArrayDestroy(pInfo->pList);
|
||||
pInfo->pList = NULL;
|
||||
|
||||
|
@ -338,7 +336,10 @@ void processDownstreamReadyRsp(SStreamTask* pTask) {
|
|||
(void) streamMetaAddTaskLaunchResult(pTask->pMeta, pTask->id.streamId, pTask->id.taskId, checkTs, readyTs, true);
|
||||
|
||||
if (pTask->status.taskStatus == TASK_STATUS__HALT) {
|
||||
ASSERT(HAS_RELATED_FILLHISTORY_TASK(pTask) && (pTask->info.fillHistory == 0));
|
||||
if (!HAS_RELATED_FILLHISTORY_TASK(pTask) || (pTask->info.fillHistory != 0)) {
|
||||
stError("s-task:%s status:halt fillhistory:%d not handle the ready rsp", pTask->id.idStr,
|
||||
pTask->info.fillHistory);
|
||||
}
|
||||
|
||||
// halt it self for count window stream task until the related fill history task completed.
|
||||
stDebug("s-task:%s level:%d initial status is %s from mnode, set it to be halt", pTask->id.idStr,
|
||||
|
@ -396,7 +397,6 @@ void streamTaskInitTaskCheckInfo(STaskCheckInfo* pInfo, STaskOutputInfo* pOutput
|
|||
pInfo->notReadyTasks = 1;
|
||||
} else if (pOutputInfo->type == TASK_OUTPUT__SHUFFLE_DISPATCH) {
|
||||
pInfo->notReadyTasks = taosArrayGetSize(pOutputInfo->shuffleDispatcher.dbInfo.pVgroupInfos);
|
||||
ASSERT(pInfo->notReadyTasks == pOutputInfo->shuffleDispatcher.dbInfo.vgNum);
|
||||
}
|
||||
|
||||
pInfo->startTs = startTs;
|
||||
|
@ -461,7 +461,6 @@ int32_t streamTaskStartCheckDownstream(STaskCheckInfo* pInfo, const char* id) {
|
|||
if (pInfo->inCheckProcess == 0) {
|
||||
pInfo->inCheckProcess = 1;
|
||||
} else {
|
||||
ASSERT(pInfo->startTs > 0);
|
||||
stError("s-task:%s already in check procedure, checkTs:%" PRId64 ", start monitor check rsp failed", id,
|
||||
pInfo->startTs);
|
||||
pInfo->stopCheckProcess = 0; // disable auto stop of check process
|
||||
|
@ -564,8 +563,6 @@ void doSendCheckMsg(SStreamTask* pTask, SDownstreamStatusInfo* p) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -585,7 +582,6 @@ void getCheckRspStatus(STaskCheckInfo* pInfo, int64_t el, int32_t* numOfReady, i
|
|||
(*numOfFault) += 1;
|
||||
} else { // TASK_DOWNSTREAM_NOT_READY
|
||||
if (p->rspTs == 0) { // not response yet
|
||||
ASSERT(p->status == -1);
|
||||
if (el >= CHECK_NOT_RSP_DURATION) { // not receive info for 10 sec.
|
||||
(void) taosArrayPush(pTimeoutList, &p->taskId);
|
||||
} else { // el < CHECK_NOT_RSP_DURATION
|
||||
|
@ -610,9 +606,7 @@ void handleTimeoutDownstreamTasks(SStreamTask* pTask, SArray* pTimeoutList) {
|
|||
int32_t vgId = pTask->pMeta->vgId;
|
||||
int32_t numOfTimeout = taosArrayGetSize(pTimeoutList);
|
||||
|
||||
ASSERT(pTask->status.downstreamReady == 0);
|
||||
pInfo->timeoutStartTs = taosGetTimestampMs();
|
||||
|
||||
for (int32_t i = 0; i < numOfTimeout; ++i) {
|
||||
int32_t* px = taosArrayGet(pTimeoutList, i);
|
||||
if (px == NULL) {
|
||||
|
@ -623,7 +617,13 @@ void handleTimeoutDownstreamTasks(SStreamTask* pTask, SArray* pTimeoutList) {
|
|||
SDownstreamStatusInfo* p = NULL;
|
||||
findCheckRspStatus(pInfo, taskId, &p);
|
||||
if (p != NULL) {
|
||||
ASSERT(p->status == -1 && p->rspTs == 0);
|
||||
|
||||
if (p->status != -1 || p->rspTs != 0) {
|
||||
stError("s-task:%s invalid rsp record entry, index:%d, status:%d, rspTs:%"PRId64, pTask->id.idStr, i, p->status,
|
||||
p->rspTs);
|
||||
continue;
|
||||
}
|
||||
|
||||
doSendCheckMsg(pTask, p);
|
||||
}
|
||||
}
|
||||
|
@ -662,8 +662,6 @@ void handleNotReadyDownstreamTask(SStreamTask* pTask, SArray* pNotReadyList) {
|
|||
int32_t vgId = pTask->pMeta->vgId;
|
||||
int32_t numOfNotReady = taosArrayGetSize(pNotReadyList);
|
||||
|
||||
ASSERT(pTask->status.downstreamReady == 0);
|
||||
|
||||
// reset the info, and send the check msg to failure downstream again
|
||||
for (int32_t i = 0; i < numOfNotReady; ++i) {
|
||||
int32_t* pTaskId = taosArrayGet(pNotReadyList, i);
|
||||
|
@ -696,12 +694,10 @@ int32_t addDownstreamFailedStatusResultAsync(SMsgCb* pMsgCb, int32_t vgId, int64
|
|||
void rspMonitorFn(void* param, void* tmrId) {
|
||||
SStreamTask* pTask = param;
|
||||
SStreamMeta* pMeta = pTask->pMeta;
|
||||
SStreamTaskState pStat = streamTaskGetStatus(pTask);
|
||||
STaskCheckInfo* pInfo = &pTask->taskCheckInfo;
|
||||
int32_t vgId = pTask->pMeta->vgId;
|
||||
int64_t now = taosGetTimestampMs();
|
||||
int64_t timeoutDuration = now - pInfo->timeoutStartTs;
|
||||
ETaskStatus state = pStat.state;
|
||||
const char* id = pTask->id.idStr;
|
||||
int32_t numOfReady = 0;
|
||||
int32_t numOfFault = 0;
|
||||
|
@ -712,9 +708,13 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
|
||||
stDebug("s-task:%s start to do check-downstream-rsp check in tmr", id);
|
||||
|
||||
if (state == TASK_STATUS__STOP) {
|
||||
streamMutexLock(&pTask->lock);
|
||||
SStreamTaskState state = streamTaskGetStatus(pTask);
|
||||
streamMutexUnlock(&pTask->lock);
|
||||
|
||||
if (state.state == TASK_STATUS__STOP) {
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
stDebug("s-task:%s status:%s vgId:%d quit from monitor check-rsp tmr, ref:%d", id, pStat.name, vgId, ref);
|
||||
stDebug("s-task:%s status:%s vgId:%d quit from monitor check-rsp tmr, ref:%d", id, state.name, vgId, ref);
|
||||
|
||||
streamTaskCompleteCheckRsp(pInfo, true, id);
|
||||
|
||||
|
@ -728,9 +728,9 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (state == TASK_STATUS__DROPPING || state == TASK_STATUS__READY) {
|
||||
if (state.state == TASK_STATUS__DROPPING || state.state == TASK_STATUS__READY) {
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
stDebug("s-task:%s status:%s vgId:%d quit from monitor check-rsp tmr, ref:%d", id, pStat.name, vgId, ref);
|
||||
stDebug("s-task:%s status:%s vgId:%d quit from monitor check-rsp tmr, ref:%d", id, state.name, vgId, ref);
|
||||
|
||||
streamTaskCompleteCheckRsp(pInfo, true, id);
|
||||
streamMetaReleaseTask(pMeta, pTask);
|
||||
|
@ -740,7 +740,7 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
streamMutexLock(&pInfo->checkInfoLock);
|
||||
if (pInfo->notReadyTasks == 0) {
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
stDebug("s-task:%s status:%s vgId:%d all downstream ready, quit from monitor rsp tmr, ref:%d", id, pStat.name,
|
||||
stDebug("s-task:%s status:%s vgId:%d all downstream ready, quit from monitor rsp tmr, ref:%d", id, state.name,
|
||||
vgId, ref);
|
||||
|
||||
streamTaskCompleteCheckRsp(pInfo, false, id);
|
||||
|
@ -752,21 +752,34 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
SArray* pNotReadyList = taosArrayInit(4, sizeof(int64_t));
|
||||
SArray* pTimeoutList = taosArrayInit(4, sizeof(int64_t));
|
||||
|
||||
if (pStat.state == TASK_STATUS__UNINIT) {
|
||||
if (state.state == TASK_STATUS__UNINIT) {
|
||||
getCheckRspStatus(pInfo, timeoutDuration, &numOfReady, &numOfFault, &numOfNotRsp, pTimeoutList, pNotReadyList, id);
|
||||
|
||||
numOfNotReady = (int32_t)taosArrayGetSize(pNotReadyList);
|
||||
numOfTimeout = (int32_t)taosArrayGetSize(pTimeoutList);
|
||||
|
||||
// fault tasks detected, not try anymore
|
||||
ASSERT((numOfReady + numOfFault + numOfNotReady + numOfTimeout + numOfNotRsp) == total);
|
||||
bool jumpOut = false;
|
||||
if ((numOfReady + numOfFault + numOfNotReady + numOfTimeout + numOfNotRsp) != total) {
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
|
||||
stError(
|
||||
"s-task:%s vgId:%d internal error in handling the check downstream procedure, rsp number is inconsistent, "
|
||||
"stop rspMonitor tmr, total:%d, notRsp:%d, notReady:%d, fault:%d, timeout:%d, ready:%d ref:%d",
|
||||
id, vgId, total, numOfNotRsp, numOfNotReady, numOfFault, numOfTimeout, numOfReady, ref);
|
||||
jumpOut = true;
|
||||
}
|
||||
|
||||
if (numOfFault > 0) {
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
stDebug(
|
||||
"s-task:%s status:%s vgId:%d all rsp. quit from monitor rsp tmr, since vnode-transfer/leader-change/restart "
|
||||
"detected, total:%d, notRsp:%d, notReady:%d, fault:%d, timeout:%d, ready:%d ref:%d",
|
||||
id, pStat.name, vgId, total, numOfNotRsp, numOfNotReady, numOfFault, numOfTimeout, numOfReady, ref);
|
||||
id, state.name, vgId, total, numOfNotRsp, numOfNotReady, numOfFault, numOfTimeout, numOfReady, ref);
|
||||
jumpOut = true;
|
||||
}
|
||||
|
||||
if (jumpOut) {
|
||||
streamTaskCompleteCheckRsp(pInfo, false, id);
|
||||
streamMutexUnlock(&pInfo->checkInfoLock);
|
||||
streamMetaReleaseTask(pMeta, pTask);
|
||||
|
@ -776,7 +789,7 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
return;
|
||||
}
|
||||
} else { // unexpected status
|
||||
stError("s-task:%s unexpected task status:%s during waiting for check rsp", id, pStat.name);
|
||||
stError("s-task:%s unexpected task status:%s during waiting for check rsp", id, state.name);
|
||||
}
|
||||
|
||||
// checking of downstream tasks has been stopped by other threads
|
||||
|
@ -785,7 +798,7 @@ void rspMonitorFn(void* param, void* tmrId) {
|
|||
stDebug(
|
||||
"s-task:%s status:%s vgId:%d stopped by other threads to check downstream process, total:%d, notRsp:%d, "
|
||||
"notReady:%d, fault:%d, timeout:%d, ready:%d ref:%d",
|
||||
id, pStat.name, vgId, total, numOfNotRsp, numOfNotReady, numOfFault, numOfTimeout, numOfReady, ref);
|
||||
id, state.name, vgId, total, numOfNotRsp, numOfNotReady, numOfFault, numOfTimeout, numOfReady, ref);
|
||||
|
||||
streamTaskCompleteCheckRsp(pInfo, false, id);
|
||||
streamMutexUnlock(&pInfo->checkInfoLock);
|
||||
|
|
|
@ -40,7 +40,10 @@ int32_t createChkptTriggerBlock(SStreamTask* pTask, int32_t checkpointType, int6
|
|||
pChkpoint->type = checkpointType;
|
||||
if (checkpointType == STREAM_INPUT__CHECKPOINT_TRIGGER && (pTask->info.taskLevel != TASK_LEVEL__SOURCE)) {
|
||||
pChkpoint->srcTaskId = srcTaskId;
|
||||
ASSERT(srcTaskId != 0);
|
||||
if (srcTaskId <= 0) {
|
||||
stDebug("s-task:%s invalid src task id:%d for creating checkpoint trigger block", pTask->id.idStr, srcTaskId);
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
}
|
||||
|
||||
SSDataBlock* pBlock = taosMemoryCalloc(1, sizeof(SSDataBlock));
|
||||
|
@ -189,10 +192,13 @@ int32_t streamTaskSendCheckpointTriggerMsg(SStreamTask* pTask, int32_t dstTaskId
|
|||
int32_t continueDispatchCheckpointTriggerBlock(SStreamDataBlock* pBlock, SStreamTask* pTask) {
|
||||
pBlock->srcTaskId = pTask->id.taskId;
|
||||
pBlock->srcVgId = pTask->pMeta->vgId;
|
||||
if (pTask->chkInfo.pActiveInfo->dispatchTrigger == true) {
|
||||
stError("s-task:%s already dispatch checkpoint-trigger, not dispatch again", pTask->id.idStr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t code = taosWriteQitem(pTask->outputq.queue->pQueue, pBlock);
|
||||
if (code == 0) {
|
||||
ASSERT(pTask->chkInfo.pActiveInfo->dispatchTrigger == false);
|
||||
code = streamDispatchStreamBlock(pTask);
|
||||
} else {
|
||||
stError("s-task:%s failed to put checkpoint into outputQ, code:%s", pTask->id.idStr, tstrerror(code));
|
||||
|
@ -593,9 +599,16 @@ int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, bool restored, SV
|
|||
}
|
||||
}
|
||||
|
||||
ASSERT(pInfo->checkpointId <= pReq->checkpointId && pInfo->checkpointVer <= pReq->checkpointVer &&
|
||||
bool valid = (pInfo->checkpointId <= pReq->checkpointId && pInfo->checkpointVer <= pReq->checkpointVer &&
|
||||
pInfo->processedVer <= pReq->checkpointVer);
|
||||
|
||||
if (!valid) {
|
||||
stFatal("invalid checkpoint id check, current checkpointId:%" PRId64 " checkpointVer:%" PRId64
|
||||
" processedVer:%" PRId64 " req checkpointId:%" PRId64 " checkpointVer:%" PRId64,
|
||||
pInfo->checkpointId, pInfo->checkpointVer, pInfo->processedVer, pReq->checkpointId, pReq->checkpointVer);
|
||||
return TSDB_CODE_STREAM_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
// update only it is in checkpoint status, or during restore procedure.
|
||||
if (pStatus.state == TASK_STATUS__CK || (!restored)) {
|
||||
pInfo->checkpointId = pReq->checkpointId;
|
||||
|
@ -1102,7 +1115,10 @@ void streamTaskInitTriggerDispatchInfo(SStreamTask* pTask) {
|
|||
streamMutexLock(&pInfo->lock);
|
||||
|
||||
// outputQ should be empty here
|
||||
ASSERT(streamQueueGetNumOfUnAccessedItems(pTask->outputq.queue) == 0);
|
||||
if (streamQueueGetNumOfUnAccessedItems(pTask->outputq.queue) > 0) {
|
||||
stFatal("s-task:%s items are still in outputQ, failed to init trigger dispatch info", pTask->id.idStr);
|
||||
return;
|
||||
}
|
||||
|
||||
pInfo->dispatchTrigger = true;
|
||||
if (pTask->outputInfo.type == TASK_OUTPUT__FIXED_DISPATCH) {
|
||||
|
@ -1375,9 +1391,7 @@ int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask) {
|
|||
pTask->pBackend = NULL;
|
||||
}
|
||||
|
||||
ASSERT(pTask->pBackend == NULL);
|
||||
pTask->status.requireConsensusChkptId = true;
|
||||
|
||||
stDebug("s-task:%s set the require consensus-checkpointId flag", id);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,6 @@ int32_t createStreamBlockFromDispatchMsg(const SStreamDispatchReq* pReq, int32_t
|
|||
return code;
|
||||
}
|
||||
|
||||
ASSERT((pReq->blockNum == taosArrayGetSize(pReq->data)) && (pReq->blockNum == taosArrayGetSize(pReq->dataLen)));
|
||||
for (int32_t i = 0; i < blockNum; i++) {
|
||||
SRetrieveTableRsp* pRetrieve = (SRetrieveTableRsp*)taosArrayGetP(pReq->data, i);
|
||||
SSDataBlock* pDataBlock = taosArrayGet(pArray, i);
|
||||
|
@ -52,7 +51,6 @@ int32_t createStreamBlockFromDispatchMsg(const SStreamDispatchReq* pReq, int32_t
|
|||
}
|
||||
|
||||
int32_t len = tsDecompressString(pInput, compLen, 1, p, fullLen, ONE_STAGE_COMP, NULL, 0);
|
||||
ASSERT(len == fullLen);
|
||||
pInput = p;
|
||||
}
|
||||
|
||||
|
|
|
@ -254,7 +254,11 @@ static SStreamDispatchReq* createDispatchDataReq(SStreamTask* pTask, const SStre
|
|||
int32_t type = pTask->outputInfo.type;
|
||||
int32_t num = streamTaskGetNumOfDownstream(pTask);
|
||||
|
||||
ASSERT(type == TASK_OUTPUT__SHUFFLE_DISPATCH || type == TASK_OUTPUT__FIXED_DISPATCH);
|
||||
if(type != TASK_OUTPUT__SHUFFLE_DISPATCH && type != TASK_OUTPUT__FIXED_DISPATCH) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
stError("s-task:%s invalid dispatch type:%d not dispatch data", pTask->id.idStr, type);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SStreamDispatchReq* pReqs = taosMemoryCalloc(num, sizeof(SStreamDispatchReq));
|
||||
if (pReqs == NULL) {
|
||||
|
@ -279,7 +283,7 @@ static SStreamDispatchReq* createDispatchDataReq(SStreamTask* pTask, const SStre
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
} else { // shuffle dispatch
|
||||
int32_t numOfBlocks = taosArrayGetSize(pData->blocks);
|
||||
int32_t downstreamTaskId = pTask->outputInfo.fixedDispatcher.taskId;
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include "streamMsg.h"
|
||||
#include "os.h"
|
||||
#include "tstream.h"
|
||||
#include "streamInt.h"
|
||||
|
||||
int32_t tEncodeStreamEpInfo(SEncoder* pEncoder, const SStreamUpstreamEpInfo* pInfo) {
|
||||
if (tEncodeI32(pEncoder, pInfo->taskId) < 0) return -1;
|
||||
|
@ -229,8 +230,12 @@ int32_t tEncodeStreamDispatchReq(SEncoder* pEncoder, const SStreamDispatchReq* p
|
|||
if (tEncodeI32(pEncoder, pReq->upstreamRelTaskId) < 0) return -1;
|
||||
if (tEncodeI32(pEncoder, pReq->blockNum) < 0) return -1;
|
||||
if (tEncodeI64(pEncoder, pReq->totalLen) < 0) return -1;
|
||||
ASSERT(taosArrayGetSize(pReq->data) == pReq->blockNum);
|
||||
ASSERT(taosArrayGetSize(pReq->dataLen) == pReq->blockNum);
|
||||
|
||||
if (taosArrayGetSize(pReq->data) != pReq->blockNum || taosArrayGetSize(pReq->dataLen) != pReq->blockNum) {
|
||||
stError("invalid dispatch req msg");
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < pReq->blockNum; i++) {
|
||||
int32_t* pLen = taosArrayGet(pReq->dataLen, i);
|
||||
void* data = taosArrayGetP(pReq->data, i);
|
||||
|
@ -261,7 +266,6 @@ int32_t tDecodeStreamDispatchReq(SDecoder* pDecoder, SStreamDispatchReq* pReq) {
|
|||
if (tDecodeI32(pDecoder, &pReq->blockNum) < 0) return -1;
|
||||
if (tDecodeI64(pDecoder, &pReq->totalLen) < 0) return -1;
|
||||
|
||||
ASSERT(pReq->blockNum > 0);
|
||||
pReq->data = taosArrayInit(pReq->blockNum, sizeof(void*));
|
||||
pReq->dataLen = taosArrayInit(pReq->blockNum, sizeof(int32_t));
|
||||
for (int32_t i = 0; i < pReq->blockNum; i++) {
|
||||
|
@ -270,7 +274,10 @@ int32_t tDecodeStreamDispatchReq(SDecoder* pDecoder, SStreamDispatchReq* pReq) {
|
|||
void* data;
|
||||
if (tDecodeI32(pDecoder, &len1) < 0) return -1;
|
||||
if (tDecodeBinaryAlloc(pDecoder, &data, &len2) < 0) return -1;
|
||||
ASSERT(len1 == len2);
|
||||
|
||||
if (len1 != len2) {
|
||||
return TSDB_CODE_INVALID_MSG;
|
||||
}
|
||||
|
||||
void* p = taosArrayPush(pReq->dataLen, &len1);
|
||||
if (p == NULL) {
|
||||
|
|
|
@ -452,7 +452,9 @@ static void fillTokenBucket(STokenBucket* pBucket, const char* id) {
|
|||
int64_t now = taosGetTimestampMs();
|
||||
|
||||
int64_t deltaToken = now - pBucket->tokenFillTimestamp;
|
||||
ASSERT(pBucket->numOfToken >= 0);
|
||||
if (pBucket->numOfToken < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t incNum = (deltaToken / 1000.0) * pBucket->numRate;
|
||||
if (incNum > 0) {
|
||||
|
|
|
@ -22,9 +22,8 @@ static void streamTaskSchedHelper(void* param, void* tmrId);
|
|||
int32_t streamSetupScheduleTrigger(SStreamTask* pTask) {
|
||||
if (pTask->info.delaySchedParam != 0 && pTask->info.fillHistory == 0) {
|
||||
int32_t ref = atomic_add_fetch_32(&pTask->refCnt, 1);
|
||||
ASSERT(ref == 2 && pTask->schedInfo.pDelayTimer == NULL);
|
||||
|
||||
stDebug("s-task:%s setup scheduler trigger, delay:%" PRId64 " ms", pTask->id.idStr, pTask->info.delaySchedParam);
|
||||
stDebug("s-task:%s setup scheduler trigger, ref:%d delay:%" PRId64 " ms", pTask->id.idStr, ref,
|
||||
pTask->info.delaySchedParam);
|
||||
|
||||
pTask->schedInfo.pDelayTimer =
|
||||
taosTmrStart(streamTaskSchedHelper, (int32_t)pTask->info.delaySchedParam, pTask, streamTimer);
|
||||
|
|
|
@ -441,7 +441,9 @@ int32_t streamSnapHandleInit(SStreamSnapHandle* pHandle, char* path, void* pMeta
|
|||
|
||||
SBackendSnapFile2 snapFile = {0};
|
||||
code = streamBackendSnapInitFile(path, pSnap, &snapFile);
|
||||
ASSERT(code == 0);
|
||||
if (code) {
|
||||
goto _err;
|
||||
}
|
||||
|
||||
void* p = taosArrayPush(pDbSnapSet, &snapFile);
|
||||
if (p == NULL) {
|
||||
|
@ -767,7 +769,10 @@ int32_t streamSnapWrite(SStreamSnapWriter* pWriter, uint8_t* pData, uint32_t nDa
|
|||
if (!taosIsDir(path)) {
|
||||
code = taosMulMkDir(path);
|
||||
stInfo("%s mkdir %s", STREAM_STATE_TRANSFER, path);
|
||||
ASSERT(code == 0);
|
||||
if (code) {
|
||||
stError("s-task:0x%x failed to mkdir:%s", (int32_t) snapInfo.taskId, path);
|
||||
return code;
|
||||
}
|
||||
}
|
||||
|
||||
pDbSnapFile->path = path;
|
||||
|
|
|
@ -53,10 +53,9 @@ static int32_t streamTaskSetReady(SStreamTask* pTask) {
|
|||
pTask->id.idStr, pTask->info.taskLevel, numOfUps, p.name);
|
||||
}
|
||||
|
||||
ASSERT(pTask->status.downstreamReady == 0);
|
||||
pTask->status.downstreamReady = 1;
|
||||
|
||||
pTask->execInfo.readyTs = taosGetTimestampMs();
|
||||
|
||||
int64_t el = (pTask->execInfo.readyTs - pTask->execInfo.checkTs);
|
||||
stDebug("s-task:%s all %d downstream ready, init completed, elapsed time:%" PRId64 "ms, task status:%s",
|
||||
pTask->id.idStr, numOfDowns, el, p.name);
|
||||
|
@ -212,8 +211,6 @@ int32_t streamLaunchFillHistoryTask(SStreamTask* pTask) {
|
|||
int64_t now = taosGetTimestampMs();
|
||||
int32_t code = 0;
|
||||
|
||||
ASSERT(hTaskId != 0);
|
||||
|
||||
// check stream task status in the first place.
|
||||
SStreamTaskState pStatus = streamTaskGetStatus(pTask);
|
||||
if (pStatus.state != TASK_STATUS__READY && pStatus.state != TASK_STATUS__HALT &&
|
||||
|
|
|
@ -50,8 +50,7 @@ int32_t streamMetaStartAllTasks(SStreamMeta* pMeta) {
|
|||
SArray* pTaskList = NULL;
|
||||
code = prepareBeforeStartTasks(pMeta, &pTaskList, now);
|
||||
if (code != TSDB_CODE_SUCCESS) {
|
||||
ASSERT(pTaskList == NULL);
|
||||
return TSDB_CODE_SUCCESS;
|
||||
return TSDB_CODE_SUCCESS; // ignore the error and return directly
|
||||
}
|
||||
|
||||
// broadcast the check downstream tasks msg only for tasks with related fill-history tasks.
|
||||
|
@ -364,7 +363,10 @@ int32_t streamMetaStartOneTask(SStreamMeta* pMeta, int64_t streamId, int32_t tas
|
|||
return TSDB_CODE_STREAM_TASK_IVLD_STATUS;
|
||||
}
|
||||
|
||||
ASSERT(pTask->status.downstreamReady == 0);
|
||||
if(pTask->status.downstreamReady != 0) {
|
||||
stFatal("s-task:0x%x downstream should be not ready, but it ready here, internal error happens", taskId);
|
||||
return TSDB_CODE_STREAM_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
// avoid initialization and destroy running concurrently.
|
||||
streamMutexLock(&pTask->lock);
|
||||
|
|
|
@ -168,9 +168,7 @@ static STaskStateTrans* streamTaskFindTransform(ETaskStatus state, const EStream
|
|||
}
|
||||
|
||||
if (isInvalidStateTransfer(state, event)) {
|
||||
return NULL;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
stError("invalid state transfer %d, handle event:%s", state, GET_EVT_NAME(event));
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -182,8 +180,6 @@ static int32_t doHandleWaitingEvent(SStreamTaskSM* pSM, const char* pEventName,
|
|||
stDebug("s-task:%s handle event:%s completed, elapsed time:%" PRId64 "ms state:%s -> %s", pTask->id.idStr,
|
||||
pEventName, el, pSM->prev.state.name, pSM->current.name);
|
||||
|
||||
ASSERT(taosArrayGetSize(pSM->pWaitingEventList) == 1);
|
||||
|
||||
SFutureHandleEventInfo* pEvtInfo = taosArrayGet(pSM->pWaitingEventList, 0);
|
||||
if (pEvtInfo == NULL) {
|
||||
return terrno;
|
||||
|
@ -501,8 +497,11 @@ int32_t streamTaskOnHandleEventSuccess(SStreamTaskSM* pSM, EStreamTaskEvent even
|
|||
STaskStateTrans* pTrans = pSM->pActiveTrans;
|
||||
if (pTrans == NULL) {
|
||||
ETaskStatus s = pSM->current.state;
|
||||
ASSERT(s == TASK_STATUS__DROPPING || s == TASK_STATUS__PAUSE || s == TASK_STATUS__STOP ||
|
||||
s == TASK_STATUS__UNINIT || s == TASK_STATUS__READY);
|
||||
|
||||
if (s != TASK_STATUS__DROPPING && s != TASK_STATUS__PAUSE && s != TASK_STATUS__STOP &&
|
||||
s != TASK_STATUS__UNINIT && s != TASK_STATUS__READY) {
|
||||
stError("s-task:%s invalid task status:%s on handling event:%s success", id, pSM->current.name, GET_EVT_NAME(pSM->prev.evt));
|
||||
}
|
||||
|
||||
// the pSM->prev.evt may be 0, so print string is not appropriate.
|
||||
stDebug("s-task:%s event:%s handled failed, current status:%s, trigger event:%s", id, GET_EVT_NAME(event),
|
||||
|
|
|
@ -57,6 +57,9 @@ int32_t streamCleanBeforeQuitTmr(SStreamTmrInfo* pInfo, SStreamTask* pTask) {
|
|||
atomic_store_8(&pInfo->isActive, 0);
|
||||
|
||||
int32_t ref = atomic_sub_fetch_32(&pTask->status.timerActive, 1);
|
||||
ASSERT(ref >= 0);
|
||||
if (ref < 0) {
|
||||
stFatal("invalid task timer ref value:%d, %s", ref, pTask->id.idStr);
|
||||
}
|
||||
|
||||
return ref;
|
||||
}
|
|
@ -42,10 +42,6 @@ struct SBTree {
|
|||
#define TDB_BTREE_PAGE_IS_ROOT(PAGE) (TDB_BTREE_PAGE_GET_FLAGS(PAGE) & TDB_BTREE_ROOT)
|
||||
#define TDB_BTREE_PAGE_IS_LEAF(PAGE) (TDB_BTREE_PAGE_GET_FLAGS(PAGE) & TDB_BTREE_LEAF)
|
||||
#define TDB_BTREE_PAGE_IS_OVFL(PAGE) (TDB_BTREE_PAGE_GET_FLAGS(PAGE) & TDB_BTREE_OVFL)
|
||||
#define TDB_BTREE_ASSERT_FLAG(flags) \
|
||||
ASSERT(TDB_FLAG_IS(flags, TDB_BTREE_ROOT) || TDB_FLAG_IS(flags, TDB_BTREE_LEAF) || \
|
||||
TDB_FLAG_IS(flags, TDB_BTREE_ROOT | TDB_BTREE_LEAF) || TDB_FLAG_IS(flags, 0) || \
|
||||
TDB_FLAG_IS(flags, TDB_BTREE_OVFL))
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct {
|
||||
|
@ -161,7 +157,7 @@ int tdbBtreeOpen(int keyLen, int valLen, SPager *pPager, char const *tbname, SPg
|
|||
if (pgno == 0) {
|
||||
tdbError("tdb/btree-open: pgno cannot be zero.");
|
||||
tdbOsFree(pBt);
|
||||
ASSERT(0);
|
||||
return TSDB_CODE_INTERNAL_ERROR;
|
||||
}
|
||||
pBt->root = pgno;
|
||||
/*
|
||||
|
@ -418,10 +414,6 @@ static int tdbDefaultKeyCmprFn(const void *pKey1, int keyLen1, const void *pKey2
|
|||
int mlen;
|
||||
int cret;
|
||||
|
||||
if (ASSERT(keyLen1 > 0 && keyLen2 > 0 && pKey1 != NULL && pKey2 != NULL)) {
|
||||
// -1 is less than
|
||||
}
|
||||
|
||||
mlen = keyLen1 < keyLen2 ? keyLen1 : keyLen2;
|
||||
cret = memcmp(pKey1, pKey2, mlen);
|
||||
if (cret == 0) {
|
||||
|
@ -447,14 +439,12 @@ int tdbBtreeInitPage(SPage *pPage, void *arg, int init) {
|
|||
// init page
|
||||
flags = TDB_BTREE_PAGE_GET_FLAGS(pPage);
|
||||
leaf = TDB_BTREE_PAGE_IS_LEAF(pPage);
|
||||
TDB_BTREE_ASSERT_FLAG(flags);
|
||||
|
||||
tdbPageInit(pPage, leaf ? sizeof(SLeafHdr) : sizeof(SIntHdr), tdbBtreeCellSize);
|
||||
} else {
|
||||
// zero page
|
||||
flags = ((SBtreeInitPageArg *)arg)->flags;
|
||||
leaf = flags & TDB_BTREE_LEAF;
|
||||
TDB_BTREE_ASSERT_FLAG(flags);
|
||||
|
||||
tdbPageZero(pPage, leaf ? sizeof(SLeafHdr) : sizeof(SIntHdr), tdbBtreeCellSize);
|
||||
|
||||
|
@ -571,14 +561,14 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
nOlds = 3;
|
||||
}
|
||||
for (int i = 0; i < nOlds; i++) {
|
||||
if (ASSERT(sIdx + i <= nCells)) {
|
||||
if (!(sIdx + i <= nCells)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
SPgno pgno;
|
||||
if (sIdx + i == nCells) {
|
||||
if (ASSERT(!TDB_BTREE_PAGE_IS_LEAF(pParent))) {
|
||||
return TSDB_CODE_FAILED;
|
||||
if (TDB_BTREE_PAGE_IS_LEAF(pParent)) {
|
||||
return TSDB_CODE_INTERNAL_ERROR;
|
||||
}
|
||||
pgno = ((SIntHdr *)(pParent->pData))->pgno;
|
||||
} else {
|
||||
|
@ -685,8 +675,6 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
// page is full, use a new page
|
||||
nNews++;
|
||||
|
||||
ASSERT(infoNews[nNews].size + cellBytes <= TDB_PAGE_USABLE_SIZE(pPage));
|
||||
|
||||
if (childNotLeaf) {
|
||||
// for non-child page, this cell is used as the right-most child,
|
||||
// the divider cell to parent as well
|
||||
|
@ -732,7 +720,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
szRCell = tdbBtreeCellSize(pPage, pCell, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
if (ASSERT(infoNews[iNew - 1].cnt > 0)) {
|
||||
if (!(infoNews[iNew - 1].cnt > 0)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
|
@ -822,10 +810,10 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
pCell = tdbPageGetCell(pPage, oIdx);
|
||||
szCell = tdbBtreeCellSize(pPage, pCell, 0, NULL, NULL);
|
||||
|
||||
if (ASSERT(nNewCells <= infoNews[iNew].cnt)) {
|
||||
if (!(nNewCells <= infoNews[iNew].cnt)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
if (ASSERT(iNew < nNews)) {
|
||||
if (!(iNew < nNews)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
|
@ -866,10 +854,10 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if (ASSERT(childNotLeaf)) {
|
||||
if (!(childNotLeaf)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
if (ASSERT(iNew < nNews - 1)) {
|
||||
if (!(iNew < nNews - 1)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
|
@ -877,7 +865,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
((SIntHdr *)pNews[iNew]->pData)->pgno = ((SPgno *)pCell)[0];
|
||||
|
||||
// insert to parent as divider cell
|
||||
if (ASSERT(iNew < nNews - 1)) {
|
||||
if (!(iNew < nNews - 1)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
((SPgno *)pCell)[0] = TDB_PAGE_PGNO(pNews[iNew]);
|
||||
|
@ -894,7 +882,7 @@ static int tdbBtreeBalanceNonRoot(SBTree *pBt, SPage *pParent, int idx, TXN *pTx
|
|||
}
|
||||
|
||||
if (childNotLeaf) {
|
||||
if (ASSERT(TDB_PAGE_TOTAL_CELLS(pNews[nNews - 1]) == infoNews[nNews - 1].cnt)) {
|
||||
if (!(TDB_PAGE_TOTAL_CELLS(pNews[nNews - 1]) == infoNews[nNews - 1].cnt)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
((SIntHdr *)(pNews[nNews - 1]->pData))->pgno = rPgno;
|
||||
|
@ -1091,7 +1079,7 @@ static int tdbBtreeEncodePayload(SPage *pPage, SCell *pCell, int nHeader, const
|
|||
nLeft -= kLen;
|
||||
// pack partial val to local if any space left
|
||||
if (nLocal > nHeader + kLen + sizeof(SPgno)) {
|
||||
if (ASSERT(pVal != NULL && vLen != 0)) {
|
||||
if (!(pVal != NULL && vLen != 0)) {
|
||||
tdbFree(pBuf);
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
@ -1259,14 +1247,14 @@ static int tdbBtreeEncodeCell(SPage *pPage, const void *pKey, int kLen, const vo
|
|||
int nPayload;
|
||||
int ret;
|
||||
|
||||
if (ASSERT(pPage->kLen == TDB_VARIANT_LEN || pPage->kLen == kLen)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
if (!(pPage->kLen == TDB_VARIANT_LEN || pPage->kLen == kLen)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (ASSERT(pPage->vLen == TDB_VARIANT_LEN || pPage->vLen == vLen)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
if (!(pPage->vLen == TDB_VARIANT_LEN || pPage->vLen == vLen)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
if (ASSERT(pKey != NULL && kLen > 0)) {
|
||||
return TSDB_CODE_FAILED;
|
||||
if (!(pKey != NULL && kLen > 0)) {
|
||||
return TSDB_CODE_INVALID_PARA;
|
||||
}
|
||||
|
||||
nPayload = 0;
|
||||
|
@ -1645,7 +1633,6 @@ static int tdbBtreeCellSize(const SPage *pPage, SCell *pCell, int dropOfp, TXN *
|
|||
SArray *ofps = pPage->pPager->ofps;
|
||||
if (ofps) {
|
||||
if (taosArrayPush(ofps, &ofp) == NULL) {
|
||||
ASSERT(0);
|
||||
return terrno;
|
||||
}
|
||||
}
|
||||
|
@ -2438,7 +2425,10 @@ int tdbBtcMoveTo(SBTC *pBtc, const void *pKey, int kLen, int *pCRst) {
|
|||
lidx = 0;
|
||||
ridx = nCells - 1;
|
||||
|
||||
ASSERT(nCells > 0);
|
||||
if (nCells <= 0) {
|
||||
tdbError("tdb/btc-move-to: empty page.");
|
||||
return TSDB_CODE_FAILED;
|
||||
}
|
||||
|
||||
// compare first cell
|
||||
pBtc->idx = lidx;
|
||||
|
|
|
@ -522,7 +522,9 @@ static int tdbPageDefragment(SPage *pPage) {
|
|||
SCell *pCell = TDB_PAGE_CELL_AT(pPage, aCellIdx[iCell].iCell);
|
||||
int32_t szCell = pPage->xCellSize(pPage, pCell, 0, NULL, NULL);
|
||||
|
||||
ASSERT(pNextCell - szCell >= pCell);
|
||||
if (pNextCell - szCell < pCell) {
|
||||
return TSDB_CODE_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
pNextCell -= szCell;
|
||||
if (pNextCell > pCell) {
|
||||
|
@ -535,7 +537,11 @@ static int tdbPageDefragment(SPage *pPage) {
|
|||
TDB_PAGE_FCELL_SET(pPage, 0);
|
||||
tdbOsFree(aCellIdx);
|
||||
|
||||
ASSERT(pPage->pFreeEnd - pPage->pFreeStart == nFree);
|
||||
if (pPage->pFreeEnd - pPage->pFreeStart != nFree) {
|
||||
tdbError("tdb/page-defragment: nFree: %d, pFreeStart: %p, pFreeEnd: %p.", nFree, pPage->pFreeStart,
|
||||
pPage->pFreeEnd);
|
||||
return TSDB_CODE_INTERNAL_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -16,19 +16,7 @@
|
|||
#include "crypt.h"
|
||||
#include "tdbInt.h"
|
||||
#include "tglobal.h"
|
||||
/*
|
||||
#pragma pack(push, 1)
|
||||
typedef struct {
|
||||
u8 hdrString[16];
|
||||
u16 pageSize;
|
||||
SPgno freePage;
|
||||
u32 nFreePages;
|
||||
u8 reserved[102];
|
||||
} SFileHdr;
|
||||
#pragma pack(pop)
|
||||
|
||||
TDB_STATIC_ASSERT(sizeof(SFileHdr) == 128, "Size of file header is not correct");
|
||||
*/
|
||||
struct hashset_st {
|
||||
size_t nbits;
|
||||
size_t mask;
|
||||
|
@ -450,7 +438,6 @@ static char *tdbEncryptPage(SPager *pPager, char *pPageData, int32_t pageSize, c
|
|||
|
||||
if (encryptAlgorithm == DND_CA_SM4) {
|
||||
// tdbInfo("CBC_Encrypt key:%d %s %s", encryptAlgorithm, encryptKey, __FUNCTION__);
|
||||
// ASSERT(strlen(encryptKey) > 0);
|
||||
|
||||
// tdbInfo("CBC tdb offset:%" PRId64 ", flag:%d before Encrypt", offset, pPage->pData[0]);
|
||||
|
||||
|
@ -915,7 +902,6 @@ static int tdbPagerInitPage(SPager *pPager, SPage *pPage, int (*initPage)(SPage
|
|||
|
||||
if (encryptAlgorithm == DND_CA_SM4) {
|
||||
// tdbInfo("CBC_Decrypt key:%d %s %s", encryptAlgorithm, encryptKey, __FUNCTION__);
|
||||
// ASSERT(strlen(encryptKey) > 0);
|
||||
|
||||
// uint8_t flags = pPage->pData[0];
|
||||
// tdbInfo("CBC tdb offset:%" PRId64 ", flag:%d before Decrypt", ((i64)pPage->pageSize) * (pgno - 1), flags);
|
||||
|
|
|
@ -40,7 +40,6 @@ int tdbTxnCloseImpl(TXN *pTxn) {
|
|||
|
||||
if (pTxn->jfd) {
|
||||
TAOS_UNUSED(tdbOsClose(pTxn->jfd));
|
||||
ASSERT(pTxn->jfd == NULL);
|
||||
}
|
||||
|
||||
tdbOsFree(pTxn);
|
||||
|
|
|
@ -319,7 +319,6 @@ static inline int tdbTryLockPage(tdb_spinlock_t *pLock) {
|
|||
} else if (ret == EBUSY) {
|
||||
return P_LOCK_BUSY;
|
||||
} else {
|
||||
ASSERT(0);
|
||||
return P_LOCK_FAIL;
|
||||
}
|
||||
}
|
||||
|
@ -354,7 +353,10 @@ static inline SCell *tdbPageGetCell(SPage *pPage, int idx) {
|
|||
int iOvfl;
|
||||
int lidx;
|
||||
|
||||
ASSERT(idx >= 0 && idx < TDB_PAGE_TOTAL_CELLS(pPage));
|
||||
if (idx < 0 || idx >= TDB_PAGE_TOTAL_CELLS(pPage)) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
iOvfl = 0;
|
||||
for (; iOvfl < pPage->nOverflow; iOvfl++) {
|
||||
|
@ -367,7 +369,6 @@ static inline SCell *tdbPageGetCell(SPage *pPage, int idx) {
|
|||
}
|
||||
|
||||
lidx = idx - iOvfl;
|
||||
ASSERT(lidx >= 0 && lidx < pPage->pPageMethods->getCellNum(pPage));
|
||||
pCell = pPage->pData + pPage->pPageMethods->getCellOffset(pPage, lidx);
|
||||
|
||||
return pCell;
|
||||
|
|
|
@ -22,12 +22,6 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if __STDC_VERSION__ >= 201112LL
|
||||
#define TDB_STATIC_ASSERT(op, info) static_assert(op, info)
|
||||
#else
|
||||
#define TDB_STATIC_ASSERT(op, info)
|
||||
#endif
|
||||
|
||||
#define TDB_ROUND8(x) (((x) + 7) & ~7)
|
||||
|
||||
int tdbGnrtFileID(tdb_fd_t fd, uint8_t *fileid, bool unique);
|
||||
|
|
|
@ -554,7 +554,7 @@ static int32_t tfsCheckAndFormatCfg(STfs *pTfs, SDiskCfg *pCfg) {
|
|||
}
|
||||
|
||||
STfsDisk *pDisk = NULL;
|
||||
if ((code = tfsGetDiskByName(pTfs, dirName, NULL)) != 0) {
|
||||
if ((code = tfsGetDiskByName(pTfs, dirName, &pDisk)) != 0) {
|
||||
fError("failed to mount %s to FS since %s", pCfg->dir, tstrerror(code));
|
||||
TAOS_RETURN(code);
|
||||
}
|
||||
|
|
|
@ -454,7 +454,6 @@ int64_t taosPWriteFile(TdFilePtr pFile, const void *buf, int64_t count, int64_t
|
|||
#if FILE_WITH_LOCK
|
||||
taosThreadRwlockWrlock(&(pFile->rwlock));
|
||||
#endif
|
||||
ASSERT(pFile->hFile != NULL); // Please check if you have closed the file.
|
||||
if (pFile->hFile == NULL) {
|
||||
#if FILE_WITH_LOCK
|
||||
taosThreadRwlockUnlock(&(pFile->rwlock));
|
||||
|
@ -867,7 +866,6 @@ int64_t taosLSeekFile(TdFilePtr pFile, int64_t offset, int32_t whence) {
|
|||
#endif
|
||||
|
||||
int32_t code = 0;
|
||||
ASSERT(pFile->fd >= 0); // Please check if you have closed the file.
|
||||
|
||||
#ifdef WINDOWS
|
||||
int64_t ret = _lseeki64(pFile->fd, offset, whence);
|
||||
|
@ -1479,7 +1477,6 @@ int32_t taosEOFFile(TdFilePtr pFile) {
|
|||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return -1;
|
||||
}
|
||||
ASSERT(pFile->fp != NULL);
|
||||
if (pFile->fp == NULL) {
|
||||
terrno = TSDB_CODE_INVALID_PARA;
|
||||
return -1;
|
||||
|
|
|
@ -326,10 +326,8 @@ void *taosMemoryRealloc(void *ptr, int64_t size) {
|
|||
if (ptr == NULL) return taosMemoryMalloc(size);
|
||||
|
||||
TdMemoryInfoPtr pTdMemoryInfo = (TdMemoryInfoPtr)((char *)ptr - sizeof(TdMemoryInfo));
|
||||
ASSERT(pTdMemoryInfo->symbol == TD_MEMORY_SYMBOL);
|
||||
if (tpTdMemoryInfo->symbol != TD_MEMORY_SYMBOL) {
|
||||
+return NULL;
|
||||
+
|
||||
return NULL;
|
||||
}
|
||||
|
||||
TdMemoryInfo tdMemoryInfo;
|
||||
|
@ -366,7 +364,6 @@ char *taosStrdup(const char *ptr) {
|
|||
if (ptr == NULL) return NULL;
|
||||
|
||||
TdMemoryInfoPtr pTdMemoryInfo = (TdMemoryInfoPtr)((char *)ptr - sizeof(TdMemoryInfo));
|
||||
ASSERT(pTdMemoryInfo->symbol == TD_MEMORY_SYMBOL);
|
||||
if (pTdMemoryInfo->symbol != TD_MEMORY_SYMBOL) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -413,7 +410,6 @@ int64_t taosMemorySize(void *ptr) {
|
|||
|
||||
#ifdef USE_TD_MEMORY
|
||||
TdMemoryInfoPtr pTdMemoryInfo = (TdMemoryInfoPtr)((char *)ptr - sizeof(TdMemoryInfo));
|
||||
ASSERT(pTdMemoryInfo->symbol == TD_MEMORY_SYMBOL);
|
||||
if (pTdMemoryInfo->symbol != TD_MEMORY_SYMBOL) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -441,7 +437,7 @@ void taosMemoryTrim(int32_t size) {
|
|||
|
||||
void *taosMemoryMallocAlign(uint32_t alignment, int64_t size) {
|
||||
#ifdef USE_TD_MEMORY
|
||||
ASSERT(0);
|
||||
return NULL;
|
||||
#else
|
||||
#if defined(LINUX)
|
||||
#ifdef BUILD_WITH_RAND_ERR
|
||||
|
|
|
@ -312,8 +312,7 @@ int32_t taosGetSockOpt(TdSocketPtr pSocket, int32_t level, int32_t optname, void
|
|||
return -1;
|
||||
}
|
||||
#ifdef WINDOWS
|
||||
ASSERT(0);
|
||||
return 0;
|
||||
return -1;
|
||||
#else
|
||||
return getsockopt(pSocket->fd, level, optname, optval, (int *)optlen);
|
||||
#endif
|
||||
|
@ -681,8 +680,7 @@ int32_t taosKeepTcpAlive(TdSocketPtr pSocket) {
|
|||
int taosGetLocalIp(const char *eth, char *ip) {
|
||||
#if defined(WINDOWS)
|
||||
// DO NOTHAING
|
||||
ASSERT(0);
|
||||
return 0;
|
||||
return -1;
|
||||
#else
|
||||
int fd;
|
||||
struct ifreq ifr;
|
||||
|
@ -708,8 +706,7 @@ int taosGetLocalIp(const char *eth, char *ip) {
|
|||
int taosValidIp(uint32_t ip) {
|
||||
#if defined(WINDOWS)
|
||||
// DO NOTHAING
|
||||
ASSERT(0);
|
||||
return 0;
|
||||
return -1;
|
||||
#else
|
||||
int ret = -1;
|
||||
int fd;
|
||||
|
@ -1111,7 +1108,7 @@ int32_t taosIgnSIGPIPE() {
|
|||
|
||||
int32_t taosSetMaskSIGPIPE() {
|
||||
#ifdef WINDOWS
|
||||
// ASSERT(0);
|
||||
return -1;
|
||||
#else
|
||||
sigset_t signal_mask;
|
||||
(void)sigemptyset(&signal_mask);
|
||||
|
|
|
@ -425,10 +425,6 @@ int64_t taosStr2Int64(const char *str, char **pEnd, int32_t radix) {
|
|||
int64_t tmp = strtoll(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
@ -437,10 +433,6 @@ uint64_t taosStr2UInt64(const char *str, char **pEnd, int32_t radix) {
|
|||
uint64_t tmp = strtoull(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
@ -449,10 +441,6 @@ int32_t taosStr2Int32(const char *str, char **pEnd, int32_t radix) {
|
|||
int32_t tmp = strtol(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
@ -461,10 +449,6 @@ uint32_t taosStr2UInt32(const char *str, char **pEnd, int32_t radix) {
|
|||
uint32_t tmp = strtol(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
@ -473,12 +457,6 @@ int16_t taosStr2Int16(const char *str, char **pEnd, int32_t radix) {
|
|||
int32_t tmp = strtol(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp >= SHRT_MIN);
|
||||
ASSERT(tmp <= SHRT_MAX);
|
||||
#endif
|
||||
return (int16_t)tmp;
|
||||
}
|
||||
|
@ -487,23 +465,12 @@ uint16_t taosStr2UInt16(const char *str, char **pEnd, int32_t radix) {
|
|||
uint32_t tmp = strtoul(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp <= USHRT_MAX);
|
||||
#endif
|
||||
return (uint16_t)tmp;
|
||||
}
|
||||
|
||||
int8_t taosStr2Int8(const char *str, char **pEnd, int32_t radix) {
|
||||
int32_t tmp = strtol(str, pEnd, radix);
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp >= SCHAR_MIN);
|
||||
ASSERT(tmp <= SCHAR_MAX);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
@ -511,33 +478,17 @@ uint8_t taosStr2UInt8(const char *str, char **pEnd, int32_t radix) {
|
|||
uint32_t tmp = strtoul(str, pEnd, radix);
|
||||
#if defined(DARWIN) || defined(_ALPINE)
|
||||
if (errno == EINVAL) errno = 0;
|
||||
#endif
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp <= UCHAR_MAX);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
||||
double taosStr2Double(const char *str, char **pEnd) {
|
||||
double tmp = strtod(str, pEnd);
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp != HUGE_VAL);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
||||
float taosStr2Float(const char *str, char **pEnd) {
|
||||
float tmp = strtof(str, pEnd);
|
||||
#ifdef TD_CHECK_STR_TO_INT_ERROR
|
||||
ASSERT(errno != ERANGE);
|
||||
ASSERT(errno != EINVAL);
|
||||
ASSERT(tmp != HUGE_VALF);
|
||||
ASSERT(tmp != NAN);
|
||||
#endif
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
|
|
@ -287,7 +287,7 @@ void taosGetSystemInfo() {
|
|||
|
||||
int32_t taosGetEmail(char *email, int32_t maxLen) {
|
||||
#ifdef WINDOWS
|
||||
// ASSERT(0);
|
||||
return 0;
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
#ifdef CUS_PROMPT
|
||||
const char *filepath = "/usr/local/"CUS_PROMPT"/email";
|
||||
|
@ -1040,7 +1040,6 @@ int32_t taosGetSystemUUID(char *uid, int32_t uidlen) {
|
|||
|
||||
char *taosGetCmdlineByPID(int pid) {
|
||||
#ifdef WINDOWS
|
||||
ASSERT(0);
|
||||
return "";
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
static char cmdline[1024];
|
||||
|
|
|
@ -91,7 +91,6 @@ typedef struct FILE TdCmd;
|
|||
#ifdef BUILD_NO_CALL
|
||||
void* taosLoadDll(const char* filename) {
|
||||
#if defined(WINDOWS)
|
||||
ASSERT(0);
|
||||
return NULL;
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
return NULL;
|
||||
|
@ -110,7 +109,6 @@ void* taosLoadDll(const char* filename) {
|
|||
|
||||
void* taosLoadSym(void* handle, char* name) {
|
||||
#if defined(WINDOWS)
|
||||
ASSERT(0);
|
||||
return NULL;
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
return NULL;
|
||||
|
@ -131,7 +129,6 @@ void* taosLoadSym(void* handle, char* name) {
|
|||
|
||||
void taosCloseDll(void* handle) {
|
||||
#if defined(WINDOWS)
|
||||
ASSERT(0);
|
||||
return;
|
||||
#elif defined(_TD_DARWIN_64)
|
||||
return;
|
||||
|
|
|
@ -784,8 +784,7 @@ int32_t taosThreadSpinDestroy(TdThreadSpinlock *lock) {
|
|||
|
||||
int32_t taosThreadSpinInit(TdThreadSpinlock *lock, int32_t pshared) {
|
||||
#ifdef TD_USE_SPINLOCK_AS_MUTEX
|
||||
ASSERT(pshared == 0);
|
||||
if (pshared != 0) return -1;
|
||||
if (pshared != 0) return TSDB_CODE_INVALID_PARA;
|
||||
return pthread_mutex_init((pthread_mutex_t *)lock, NULL);
|
||||
#else
|
||||
int32_t code = pthread_spin_init((pthread_spinlock_t *)lock, pshared);
|
||||
|
|
|
@ -267,7 +267,7 @@ int32_t compareJsonVal(const void *pLeft, const void *pRight) {
|
|||
} else if (leftType == TSDB_DATA_TYPE_NULL) {
|
||||
return 0;
|
||||
} else {
|
||||
ASSERTS(0, "data type unexpected");
|
||||
uError("data type unexpected leftType:%d rightType:%d", leftType, rightType);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -1497,7 +1497,9 @@ int32_t taosArrayCompareString(const void *a, const void *b) {
|
|||
int32_t comparestrPatternMatch(const void *pLeft, const void *pRight) {
|
||||
SPatternCompareInfo pInfo = PATTERN_COMPARE_INFO_INITIALIZER;
|
||||
|
||||
ASSERT(varDataTLen(pRight) <= TSDB_MAX_FIELD_LEN);
|
||||
if (varDataTLen(pRight) > TSDB_MAX_FIELD_LEN) {
|
||||
return 1;
|
||||
}
|
||||
size_t pLen = varDataLen(pRight);
|
||||
size_t sz = varDataLen(pLeft);
|
||||
|
||||
|
@ -1546,7 +1548,9 @@ __compar_fn_t getComparFunc(int32_t type, int32_t optr) {
|
|||
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||
return setChkInBytes8;
|
||||
default:
|
||||
ASSERTS(0, "data type unexpected");
|
||||
uError("getComparFunc data type unexpected type:%d, optr:%d", type, optr);
|
||||
terrno = TSDB_CODE_FUNC_FUNTION_PARA_TYPE;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1570,7 +1574,9 @@ __compar_fn_t getComparFunc(int32_t type, int32_t optr) {
|
|||
case TSDB_DATA_TYPE_TIMESTAMP:
|
||||
return setChkNotInBytes8;
|
||||
default:
|
||||
ASSERTS(0, "data type unexpected");
|
||||
uError("getComparFunc data type unexpected type:%d, optr:%d", type, optr);
|
||||
terrno = TSDB_CODE_FUNC_FUNTION_PARA_TYPE;
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -111,6 +111,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_IP_NOT_IN_WHITE_LIST, "Not allowed to connec
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_FAILED_TO_CONNECT_S3, "Failed to connect to s3 server")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_MSG_PREPROCESSED, "Message has been processed in preprocess")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_OUT_OF_BUFFER, "Out of buffer")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_INTERNAL_ERROR, "Internal error")
|
||||
|
||||
//client
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_TSC_INVALID_OPERATION, "Invalid operation")
|
||||
|
@ -808,6 +809,8 @@ TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_TASK_NOT_EXIST, "Stream task not exi
|
|||
TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_EXEC_CANCELLED, "Stream task exec cancelled")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_INVALID_STATETRANS, "Invalid task state to handle event")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_TASK_IVLD_STATUS, "Invalid task status to proceed")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_INTERNAL_ERROR, "Stream internal error")
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_STREAM_NOT_LEADER, "Stream task not on leader vnode")
|
||||
|
||||
// TDLite
|
||||
TAOS_DEFINE_ERROR(TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS, "Invalid TDLite open flags")
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue