Merge branch '3.0' into fix/syntax
This commit is contained in:
commit
92c4417acd
|
@ -45,7 +45,7 @@ static int DemoWithReqId() {
|
||||||
TAOS_RES *result = taos_query_with_reqid(taos, sql, reqid);
|
TAOS_RES *result = taos_query_with_reqid(taos, sql, reqid);
|
||||||
code = taos_errno(result);
|
code = taos_errno(result);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
fprintf(stderr, "Failed to execute sql with qid: %ld, ErrCode: 0x%x, ErrMessage: %s\n.", reqid, code,
|
fprintf(stderr, "Failed to execute sql withQID: %ld, ErrCode: 0x%x, ErrMessage: %s\n.", reqid, code,
|
||||||
taos_errstr(result));
|
taos_errstr(result));
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
taos_cleanup();
|
taos_cleanup();
|
||||||
|
|
|
@ -193,7 +193,7 @@ int32_t tColDataDecompress(void *input, SColDataCompressInfo *info, SColData *co
|
||||||
|
|
||||||
// for stmt bind
|
// for stmt bind
|
||||||
int32_t tColDataAddValueByBind(SColData *pColData, TAOS_MULTI_BIND *pBind, int32_t buffMaxLen);
|
int32_t tColDataAddValueByBind(SColData *pColData, TAOS_MULTI_BIND *pBind, int32_t buffMaxLen);
|
||||||
int32_t tColDataSortMerge(SArray *colDataArr);
|
int32_t tColDataSortMerge(SArray **arr);
|
||||||
|
|
||||||
// for raw block
|
// for raw block
|
||||||
int32_t tColDataAddValueByDataBlock(SColData *pColData, int8_t type, int32_t bytes, int32_t nRows, char *lengthOrbitmap,
|
int32_t tColDataAddValueByDataBlock(SColData *pColData, int8_t type, int32_t bytes, int32_t nRows, char *lengthOrbitmap,
|
||||||
|
|
|
@ -272,24 +272,35 @@ typedef struct SCheckpointInfo {
|
||||||
int64_t processedVer;
|
int64_t processedVer;
|
||||||
int64_t nextProcessVer; // current offset in WAL, not serialize it
|
int64_t nextProcessVer; // current offset in WAL, not serialize it
|
||||||
int64_t msgVer;
|
int64_t msgVer;
|
||||||
int32_t consensusTransId; // consensus checkpoint id
|
|
||||||
SActiveCheckpointInfo* pActiveInfo;
|
SActiveCheckpointInfo* pActiveInfo;
|
||||||
} SCheckpointInfo;
|
} SCheckpointInfo;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TASK_CONSEN_CHKPT_REQ = 0x1,
|
||||||
|
TASK_CONSEN_CHKPT_SEND = 0x2,
|
||||||
|
TASK_CONSEN_CHKPT_RECV = 0x3,
|
||||||
|
} EConsenChkptStatus;
|
||||||
|
|
||||||
|
typedef struct SConsenChkptInfo {
|
||||||
|
// bool alreadySendChkptId;
|
||||||
|
EConsenChkptStatus status;
|
||||||
|
int64_t statusTs;
|
||||||
|
int32_t consenChkptTransId;
|
||||||
|
} SConsenChkptInfo;
|
||||||
|
|
||||||
typedef struct SStreamStatus {
|
typedef struct SStreamStatus {
|
||||||
SStreamTaskSM* pSM;
|
SStreamTaskSM* pSM;
|
||||||
int8_t taskStatus;
|
int8_t taskStatus;
|
||||||
int8_t downstreamReady; // downstream tasks are all ready now, if this flag is set
|
int8_t downstreamReady; // downstream tasks are all ready now, if this flag is set
|
||||||
int8_t schedStatus;
|
int8_t schedStatus;
|
||||||
int8_t statusBackup;
|
int8_t statusBackup;
|
||||||
int32_t schedIdleTime; // idle time before invoke again
|
int32_t schedIdleTime; // idle time before invoke again
|
||||||
int32_t timerActive; // timer is active
|
int32_t timerActive; // timer is active
|
||||||
int64_t lastExecTs; // last exec time stamp
|
int64_t lastExecTs; // last exec time stamp
|
||||||
int32_t inScanHistorySentinel;
|
int32_t inScanHistorySentinel;
|
||||||
bool appendTranstateBlock; // has append the transfer state data block already
|
bool appendTranstateBlock; // has append the transfer state data block already
|
||||||
bool removeBackendFiles; // remove backend files on disk when free stream tasks
|
bool removeBackendFiles; // remove backend files on disk when free stream tasks
|
||||||
bool sendConsensusChkptId;
|
SConsenChkptInfo consenChkptInfo;
|
||||||
bool requireConsensusChkptId;
|
|
||||||
} SStreamStatus;
|
} SStreamStatus;
|
||||||
|
|
||||||
typedef struct SDataRange {
|
typedef struct SDataRange {
|
||||||
|
@ -774,6 +785,7 @@ int32_t streamMetaStopAllTasks(SStreamMeta* pMeta);
|
||||||
int32_t streamMetaStartOneTask(SStreamMeta* pMeta, int64_t streamId, int32_t taskId);
|
int32_t streamMetaStartOneTask(SStreamMeta* pMeta, int64_t streamId, int32_t taskId);
|
||||||
bool streamMetaAllTasksReady(const SStreamMeta* pMeta);
|
bool streamMetaAllTasksReady(const SStreamMeta* pMeta);
|
||||||
int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask);
|
int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask);
|
||||||
|
int32_t streamTaskSetReqConsensusChkptId(SStreamTask* pTask, int64_t ts);
|
||||||
|
|
||||||
// timer
|
// timer
|
||||||
int32_t streamTimerGetInstance(tmr_h* pTmr);
|
int32_t streamTimerGetInstance(tmr_h* pTmr);
|
||||||
|
|
|
@ -22,8 +22,12 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WINDOWS) && !defined(__USE_PTHREAD)
|
#ifdef WINDOWS
|
||||||
|
#include <tlhelp32.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WINDOWS) && !defined(__USE_PTHREAD)
|
||||||
#define __USE_WIN_THREAD
|
#define __USE_WIN_THREAD
|
||||||
// https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
|
// https://learn.microsoft.com/en-us/windows/win32/winprog/using-the-windows-headers
|
||||||
// #ifndef _WIN32_WINNT
|
// #ifndef _WIN32_WINNT
|
||||||
|
@ -275,6 +279,10 @@ int32_t taosThreadSpinUnlock(TdThreadSpinlock *lock);
|
||||||
void taosThreadTestCancel(void);
|
void taosThreadTestCancel(void);
|
||||||
void taosThreadClear(TdThread *thread);
|
void taosThreadClear(TdThread *thread);
|
||||||
|
|
||||||
|
#ifdef WINDOWS
|
||||||
|
bool taosThreadIsMain();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -969,7 +969,8 @@ int32_t taosGetErrSize();
|
||||||
#define TSDB_CODE_STREAM_INVALID_STATETRANS TAOS_DEF_ERROR_CODE(0, 0x4103)
|
#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_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_NOT_LEADER TAOS_DEF_ERROR_CODE(0, 0x4105)
|
||||||
#define TSDB_CODE_STREAM_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x4106)
|
#define TSDB_CODE_STREAM_CONFLICT_EVENT TAOS_DEF_ERROR_CODE(0, 0x4106)
|
||||||
|
#define TSDB_CODE_STREAM_INTERNAL_ERROR TAOS_DEF_ERROR_CODE(0, 0x4107)
|
||||||
|
|
||||||
// TDLite
|
// TDLite
|
||||||
#define TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS TAOS_DEF_ERROR_CODE(0, 0x5100)
|
#define TSDB_CODE_TDLITE_IVLD_OPEN_FLAGS TAOS_DEF_ERROR_CODE(0, 0x5100)
|
||||||
|
|
|
@ -84,11 +84,11 @@ typedef struct SConfigItem {
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int64_t imin;
|
int64_t imin;
|
||||||
double fmin;
|
float fmin;
|
||||||
};
|
};
|
||||||
union {
|
union {
|
||||||
int64_t imax;
|
int64_t imax;
|
||||||
double fmax;
|
float fmax;
|
||||||
};
|
};
|
||||||
SArray *array; // SDiskCfg/SLogVar
|
SArray *array; // SDiskCfg/SLogVar
|
||||||
} SConfigItem;
|
} SConfigItem;
|
||||||
|
|
|
@ -32,14 +32,15 @@ typedef struct SGeosContext {
|
||||||
GEOSWKBReader *WKBReader;
|
GEOSWKBReader *WKBReader;
|
||||||
GEOSWKBWriter *WKBWriter;
|
GEOSWKBWriter *WKBWriter;
|
||||||
|
|
||||||
pcre2_code *WKTRegex;
|
pcre2_code *WKTRegex;
|
||||||
pcre2_match_data *WKTMatchData;
|
pcre2_match_data *WKTMatchData;
|
||||||
|
|
||||||
char errMsg[512];
|
char errMsg[512];
|
||||||
} SGeosContext;
|
} SGeosContext;
|
||||||
|
|
||||||
SGeosContext* getThreadLocalGeosCtx();
|
SGeosContext *acquireThreadLocalGeosCtx();
|
||||||
void destroyThreadLocalGeosCtx();
|
int32_t getThreadLocalGeosCtx(SGeosContext **ppCtx);
|
||||||
|
const char *getGeosErrMsg(int32_t code);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ void taosIpPort2String(uint32_t ip, uint16_t port, char *str);
|
||||||
|
|
||||||
void *tmemmem(const char *haystack, int hlen, const char *needle, int nlen);
|
void *tmemmem(const char *haystack, int hlen, const char *needle, int nlen);
|
||||||
|
|
||||||
int32_t parseCfgReal(const char *str, double *out);
|
int32_t parseCfgReal(const char *str, float *out);
|
||||||
|
|
||||||
static FORCE_INLINE void taosEncryptPass(uint8_t *inBuf, size_t inLen, char *target) {
|
static FORCE_INLINE void taosEncryptPass(uint8_t *inBuf, size_t inLen, char *target) {
|
||||||
T_MD5_CTX context;
|
T_MD5_CTX context;
|
||||||
|
|
|
@ -94,7 +94,7 @@ static int32_t registerRequest(SRequestObj *pRequest, STscObj *pTscObj) {
|
||||||
int32_t total = atomic_add_fetch_64((int64_t *)&pSummary->totalRequests, 1);
|
int32_t total = atomic_add_fetch_64((int64_t *)&pSummary->totalRequests, 1);
|
||||||
int32_t currentInst = atomic_add_fetch_64((int64_t *)&pSummary->currentRequests, 1);
|
int32_t currentInst = atomic_add_fetch_64((int64_t *)&pSummary->currentRequests, 1);
|
||||||
tscDebug("0x%" PRIx64 " new Request from connObj:0x%" PRIx64
|
tscDebug("0x%" PRIx64 " new Request from connObj:0x%" PRIx64
|
||||||
", current:%d, app current:%d, total:%d, qid:0x%" PRIx64,
|
", current:%d, app current:%d, total:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, pRequest->pTscObj->id, num, currentInst, total, pRequest->requestId);
|
pRequest->self, pRequest->pTscObj->id, num, currentInst, total, pRequest->requestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ static void deregisterRequest(SRequestObj *pRequest) {
|
||||||
int32_t reqType = SLOW_LOG_TYPE_OTHERS;
|
int32_t reqType = SLOW_LOG_TYPE_OTHERS;
|
||||||
|
|
||||||
int64_t duration = taosGetTimestampUs() - pRequest->metric.start;
|
int64_t duration = taosGetTimestampUs() - pRequest->metric.start;
|
||||||
tscDebug("0x%" PRIx64 " free Request from connObj: 0x%" PRIx64 ", qid:0x%" PRIx64
|
tscDebug("0x%" PRIx64 " free Request from connObj: 0x%" PRIx64 ",QID:0x%" PRIx64
|
||||||
" elapsed:%.2f ms, "
|
" elapsed:%.2f ms, "
|
||||||
"current:%d, app current:%d",
|
"current:%d, app current:%d",
|
||||||
pRequest->self, pTscObj->id, pRequest->requestId, duration / 1000.0, num, currentInst);
|
pRequest->self, pTscObj->id, pRequest->requestId, duration / 1000.0, num, currentInst);
|
||||||
|
@ -294,7 +294,7 @@ static void deregisterRequest(SRequestObj *pRequest) {
|
||||||
checkSlowLogExceptDb(pRequest, pTscObj->pAppInfo->monitorParas.tsSlowLogExceptDb)) {
|
checkSlowLogExceptDb(pRequest, pTscObj->pAppInfo->monitorParas.tsSlowLogExceptDb)) {
|
||||||
(void)atomic_add_fetch_64((int64_t *)&pActivity->numOfSlowQueries, 1);
|
(void)atomic_add_fetch_64((int64_t *)&pActivity->numOfSlowQueries, 1);
|
||||||
if (pTscObj->pAppInfo->monitorParas.tsSlowLogScope & reqType) {
|
if (pTscObj->pAppInfo->monitorParas.tsSlowLogScope & reqType) {
|
||||||
taosPrintSlowLog("PID:%d, Conn:%u, qid:0x%" PRIx64 ", Start:%" PRId64 " us, Duration:%" PRId64 "us, SQL:%s",
|
taosPrintSlowLog("PID:%d, Conn:%u,QID:0x%" PRIx64 ", Start:%" PRId64 " us, Duration:%" PRId64 "us, SQL:%s",
|
||||||
taosGetPId(), pTscObj->connId, pRequest->requestId, pRequest->metric.start, duration,
|
taosGetPId(), pTscObj->connId, pRequest->requestId, pRequest->metric.start, duration,
|
||||||
pRequest->sqlstr);
|
pRequest->sqlstr);
|
||||||
if (pTscObj->pAppInfo->monitorParas.tsEnableMonitor) {
|
if (pTscObj->pAppInfo->monitorParas.tsEnableMonitor) {
|
||||||
|
@ -971,10 +971,6 @@ void taos_init_imp(void) {
|
||||||
|
|
||||||
tscDebug("starting to initialize TAOS driver");
|
tscDebug("starting to initialize TAOS driver");
|
||||||
|
|
||||||
#ifndef WINDOWS
|
|
||||||
taosSetCoreDump(true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ENV_ERR_RET(initTaskQueue(), "failed to init task queue");
|
ENV_ERR_RET(initTaskQueue(), "failed to init task queue");
|
||||||
ENV_ERR_RET(fmFuncMgtInit(), "failed to init funcMgt");
|
ENV_ERR_RET(fmFuncMgtInit(), "failed to init funcMgt");
|
||||||
ENV_ERR_RET(nodesInitAllocatorSet(), "failed to init allocator set");
|
ENV_ERR_RET(nodesInitAllocatorSet(), "failed to init allocator set");
|
||||||
|
|
|
@ -232,7 +232,7 @@ int32_t buildRequest(uint64_t connId, const char* sql, int sqlLen, void* param,
|
||||||
int32_t err = taosHashPut(pTscObj->pRequests, &(*pRequest)->self, sizeof((*pRequest)->self), &(*pRequest)->self,
|
int32_t err = taosHashPut(pTscObj->pRequests, &(*pRequest)->self, sizeof((*pRequest)->self), &(*pRequest)->self,
|
||||||
sizeof((*pRequest)->self));
|
sizeof((*pRequest)->self));
|
||||||
if (err) {
|
if (err) {
|
||||||
tscError("%" PRId64 " failed to add to request container, qid:0x%" PRIx64 ", conn:%" PRId64 ", %s",
|
tscError("%" PRId64 " failed to add to request container,QID:0x%" PRIx64 ", conn:%" PRId64 ", %s",
|
||||||
(*pRequest)->self, (*pRequest)->requestId, pTscObj->id, sql);
|
(*pRequest)->self, (*pRequest)->requestId, pTscObj->id, sql);
|
||||||
destroyRequest(*pRequest);
|
destroyRequest(*pRequest);
|
||||||
*pRequest = NULL;
|
*pRequest = NULL;
|
||||||
|
@ -243,15 +243,15 @@ int32_t buildRequest(uint64_t connId, const char* sql, int sqlLen, void* param,
|
||||||
if (tsQueryUseNodeAllocator && !qIsInsertValuesSql((*pRequest)->sqlstr, (*pRequest)->sqlLen)) {
|
if (tsQueryUseNodeAllocator && !qIsInsertValuesSql((*pRequest)->sqlstr, (*pRequest)->sqlLen)) {
|
||||||
if (TSDB_CODE_SUCCESS !=
|
if (TSDB_CODE_SUCCESS !=
|
||||||
nodesCreateAllocator((*pRequest)->requestId, tsQueryNodeChunkSize, &((*pRequest)->allocatorRefId))) {
|
nodesCreateAllocator((*pRequest)->requestId, tsQueryNodeChunkSize, &((*pRequest)->allocatorRefId))) {
|
||||||
tscError("%" PRId64 " failed to create node allocator, qid:0x%" PRIx64 ", conn:%" PRId64 ", %s",
|
tscError("%" PRId64 " failed to create node allocator,QID:0x%" PRIx64 ", conn:%" PRId64 ", %s", (*pRequest)->self,
|
||||||
(*pRequest)->self, (*pRequest)->requestId, pTscObj->id, sql);
|
(*pRequest)->requestId, pTscObj->id, sql);
|
||||||
destroyRequest(*pRequest);
|
destroyRequest(*pRequest);
|
||||||
*pRequest = NULL;
|
*pRequest = NULL;
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tscDebugL("0x%" PRIx64 " SQL: %s, qid:0x%" PRIx64, (*pRequest)->self, (*pRequest)->sqlstr, (*pRequest)->requestId);
|
tscDebugL("0x%" PRIx64 " SQL: %s,QID:0x%" PRIx64, (*pRequest)->self, (*pRequest)->sqlstr, (*pRequest)->requestId);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,10 +365,10 @@ void asyncExecLocalCmd(SRequestObj* pRequest, SQuery* pQuery) {
|
||||||
|
|
||||||
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
||||||
pResultInfo->numOfRows = 0;
|
pResultInfo->numOfRows = 0;
|
||||||
tscError("0x%" PRIx64 " fetch results failed, code:%s, qid:0x%" PRIx64, pRequest->self, tstrerror(code),
|
tscError("0x%" PRIx64 " fetch results failed, code:%s,QID:0x%" PRIx64, pRequest->self, tstrerror(code),
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
} else {
|
} else {
|
||||||
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d, qid:0x%" PRIx64,
|
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, pResultInfo->numOfRows, pResultInfo->totalRows, pResultInfo->completed,
|
pRequest->self, pResultInfo->numOfRows, pResultInfo->totalRows, pResultInfo->completed,
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
}
|
}
|
||||||
|
@ -513,7 +513,7 @@ int32_t setResSchemaInfo(SReqResultInfo* pResInfo, const SSchema* pSchema, int32
|
||||||
taosMemoryFree(pResInfo->userFields);
|
taosMemoryFree(pResInfo->userFields);
|
||||||
}
|
}
|
||||||
pResInfo->fields = taosMemoryCalloc(numOfCols, sizeof(TAOS_FIELD));
|
pResInfo->fields = taosMemoryCalloc(numOfCols, sizeof(TAOS_FIELD));
|
||||||
if(NULL == pResInfo->fields) return terrno;
|
if (NULL == pResInfo->fields) return terrno;
|
||||||
pResInfo->userFields = taosMemoryCalloc(numOfCols, sizeof(TAOS_FIELD));
|
pResInfo->userFields = taosMemoryCalloc(numOfCols, sizeof(TAOS_FIELD));
|
||||||
if (NULL == pResInfo->userFields) {
|
if (NULL == pResInfo->userFields) {
|
||||||
taosMemoryFree(pResInfo->fields);
|
taosMemoryFree(pResInfo->fields);
|
||||||
|
@ -976,7 +976,7 @@ int32_t handleQueryExecRsp(SRequestObj* pRequest) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
tscError("0x%" PRIx64 ", invalid exec result for request type %d, qid:0x%" PRIx64, pRequest->self, pRequest->type,
|
tscError("0x%" PRIx64 ", invalid exec result for request type %d,QID:0x%" PRIx64, pRequest->self, pRequest->type,
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
code = TSDB_CODE_APP_ERROR;
|
code = TSDB_CODE_APP_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -1021,7 +1021,7 @@ void returnToUser(SRequestObj* pRequest) {
|
||||||
(void)releaseRequest(pRequest->relation.userRefId);
|
(void)releaseRequest(pRequest->relation.userRefId);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
tscError("0x%" PRIx64 ", user ref 0x%" PRIx64 " is not there, qid:0x%" PRIx64, pRequest->self,
|
tscError("0x%" PRIx64 ", user ref 0x%" PRIx64 " is not there,QID:0x%" PRIx64, pRequest->self,
|
||||||
pRequest->relation.userRefId, pRequest->requestId);
|
pRequest->relation.userRefId, pRequest->requestId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1053,11 +1053,11 @@ static int32_t createResultBlock(TAOS_RES* pRes, int32_t numOfRows, SSDataBlock*
|
||||||
|
|
||||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||||
TAOS_ROW pRow = taos_fetch_row(pRes);
|
TAOS_ROW pRow = taos_fetch_row(pRes);
|
||||||
if(NULL == pRow[0] || NULL == pRow[1] || NULL == pRow[2]) {
|
if (NULL == pRow[0] || NULL == pRow[1] || NULL == pRow[2]) {
|
||||||
tscError("invalid data from vnode");
|
tscError("invalid data from vnode");
|
||||||
return TSDB_CODE_TSC_INTERNAL_ERROR;
|
return TSDB_CODE_TSC_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
int64_t ts = *(int64_t*)pRow[0];
|
int64_t ts = *(int64_t*)pRow[0];
|
||||||
if (lastTs < ts) {
|
if (lastTs < ts) {
|
||||||
lastTs = ts;
|
lastTs = ts;
|
||||||
}
|
}
|
||||||
|
@ -1090,7 +1090,7 @@ void postSubQueryFetchCb(void* param, TAOS_RES* res, int32_t rowNum) {
|
||||||
|
|
||||||
SSDataBlock* pBlock = NULL;
|
SSDataBlock* pBlock = NULL;
|
||||||
if (TSDB_CODE_SUCCESS != createResultBlock(res, rowNum, &pBlock)) {
|
if (TSDB_CODE_SUCCESS != createResultBlock(res, rowNum, &pBlock)) {
|
||||||
tscError("0x%" PRIx64 ", create result block failed, qid:0x%" PRIx64, pRequest->self, pRequest->requestId);
|
tscError("0x%" PRIx64 ", create result block failed,QID:0x%" PRIx64, pRequest->self, pRequest->requestId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1099,7 +1099,7 @@ void postSubQueryFetchCb(void* param, TAOS_RES* res, int32_t rowNum) {
|
||||||
continuePostSubQuery(pNextReq, pBlock);
|
continuePostSubQuery(pNextReq, pBlock);
|
||||||
(void)releaseRequest(pRequest->relation.nextRefId);
|
(void)releaseRequest(pRequest->relation.nextRefId);
|
||||||
} else {
|
} else {
|
||||||
tscError("0x%" PRIx64 ", next req ref 0x%" PRIx64 " is not there, qid:0x%" PRIx64, pRequest->self,
|
tscError("0x%" PRIx64 ", next req ref 0x%" PRIx64 " is not there,QID:0x%" PRIx64, pRequest->self,
|
||||||
pRequest->relation.nextRefId, pRequest->requestId);
|
pRequest->relation.nextRefId, pRequest->requestId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1118,7 +1118,7 @@ void handlePostSubQuery(SSqlCallbackWrapper* pWrapper) {
|
||||||
continuePostSubQuery(pNextReq, NULL);
|
continuePostSubQuery(pNextReq, NULL);
|
||||||
(void)releaseRequest(pRequest->relation.nextRefId);
|
(void)releaseRequest(pRequest->relation.nextRefId);
|
||||||
} else {
|
} else {
|
||||||
tscError("0x%" PRIx64 ", next req ref 0x%" PRIx64 " is not there, qid:0x%" PRIx64, pRequest->self,
|
tscError("0x%" PRIx64 ", next req ref 0x%" PRIx64 " is not there,QID:0x%" PRIx64, pRequest->self,
|
||||||
pRequest->relation.nextRefId, pRequest->requestId);
|
pRequest->relation.nextRefId, pRequest->requestId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1149,11 +1149,11 @@ void schedulerExecCb(SExecResult* pResult, void* param, int32_t code) {
|
||||||
}
|
}
|
||||||
|
|
||||||
taosMemoryFree(pResult);
|
taosMemoryFree(pResult);
|
||||||
tscDebug("0x%" PRIx64 " enter scheduler exec cb, code:%s, qid:0x%" PRIx64, pRequest->self, tstrerror(code),
|
tscDebug("0x%" PRIx64 " enter scheduler exec cb, code:%s,QID:0x%" PRIx64, pRequest->self, tstrerror(code),
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS && NEED_CLIENT_HANDLE_ERROR(code) && pRequest->sqlstr != NULL) {
|
if (code != TSDB_CODE_SUCCESS && NEED_CLIENT_HANDLE_ERROR(code) && pRequest->sqlstr != NULL) {
|
||||||
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%s, tryCount:%d, qid:0x%" PRIx64, pRequest->self,
|
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%s, tryCount:%d,QID:0x%" PRIx64, pRequest->self,
|
||||||
tstrerror(code), pRequest->retry, pRequest->requestId);
|
tstrerror(code), pRequest->retry, pRequest->requestId);
|
||||||
(void)removeMeta(pTscObj, pRequest->targetTableList, IS_VIEW_REQUEST(pRequest->type));
|
(void)removeMeta(pTscObj, pRequest->targetTableList, IS_VIEW_REQUEST(pRequest->type));
|
||||||
restartAsyncQuery(pRequest, code);
|
restartAsyncQuery(pRequest, code);
|
||||||
|
@ -1586,7 +1586,7 @@ int32_t taosConnectImpl(const char* user, const char* auth, const char* db, __ta
|
||||||
*pTscObj = NULL;
|
*pTscObj = NULL;
|
||||||
return terrno;
|
return terrno;
|
||||||
} else {
|
} else {
|
||||||
tscDebug("0x%" PRIx64 " connection is opening, connId:%u, dnodeConn:%p, qid:0x%" PRIx64, (*pTscObj)->id,
|
tscDebug("0x%" PRIx64 " connection is opening, connId:%u, dnodeConn:%p,QID:0x%" PRIx64, (*pTscObj)->id,
|
||||||
(*pTscObj)->connId, (*pTscObj)->pAppInfo->pTransporter, pRequest->requestId);
|
(*pTscObj)->connId, (*pTscObj)->pAppInfo->pTransporter, pRequest->requestId);
|
||||||
destroyRequest(pRequest);
|
destroyRequest(pRequest);
|
||||||
}
|
}
|
||||||
|
@ -1717,7 +1717,7 @@ int32_t doProcessMsgFromServer(void* param) {
|
||||||
char tbuf[40] = {0};
|
char tbuf[40] = {0};
|
||||||
TRACE_TO_STR(trace, tbuf);
|
TRACE_TO_STR(trace, tbuf);
|
||||||
|
|
||||||
tscDebug("processMsgFromServer handle %p, message: %s, size:%d, code: %s, qid:%s", pMsg->info.handle,
|
tscDebug("processMsgFromServer handle %p, message: %s, size:%d, code: %s,QID:%s", pMsg->info.handle,
|
||||||
TMSG_INFO(pMsg->msgType), pMsg->contLen, tstrerror(pMsg->code), tbuf);
|
TMSG_INFO(pMsg->msgType), pMsg->contLen, tstrerror(pMsg->code), tbuf);
|
||||||
|
|
||||||
if (pSendInfo->requestObjRefId != 0) {
|
if (pSendInfo->requestObjRefId != 0) {
|
||||||
|
@ -1915,7 +1915,7 @@ void* doFetchRows(SRequestObj* pRequest, bool setupOneRowPtr, bool convertUcs4)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d, qid:0x%" PRIx64,
|
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, pResInfo->numOfRows, pResInfo->totalRows, pResInfo->completed, pRequest->requestId);
|
pRequest->self, pResInfo->numOfRows, pResInfo->totalRows, pResInfo->completed, pRequest->requestId);
|
||||||
|
|
||||||
STscObj* pTscObj = pRequest->pTscObj;
|
STscObj* pTscObj = pRequest->pTscObj;
|
||||||
|
@ -2869,8 +2869,8 @@ static void fetchCallback(void* pResult, void* param, int32_t code) {
|
||||||
|
|
||||||
SReqResultInfo* pResultInfo = &pRequest->body.resInfo;
|
SReqResultInfo* pResultInfo = &pRequest->body.resInfo;
|
||||||
|
|
||||||
tscDebug("0x%" PRIx64 " enter scheduler fetch cb, code:%d - %s, qid:0x%" PRIx64, pRequest->self, code,
|
tscDebug("0x%" PRIx64 " enter scheduler fetch cb, code:%d - %s,QID:0x%" PRIx64, pRequest->self, code, tstrerror(code),
|
||||||
tstrerror(code), pRequest->requestId);
|
pRequest->requestId);
|
||||||
|
|
||||||
pResultInfo->pData = pResult;
|
pResultInfo->pData = pResult;
|
||||||
pResultInfo->numOfRows = 0;
|
pResultInfo->numOfRows = 0;
|
||||||
|
@ -2892,10 +2892,10 @@ static void fetchCallback(void* pResult, void* param, int32_t code) {
|
||||||
setQueryResultFromRsp(pResultInfo, (const SRetrieveTableRsp*)pResultInfo->pData, pResultInfo->convertUcs4);
|
setQueryResultFromRsp(pResultInfo, (const SRetrieveTableRsp*)pResultInfo->pData, pResultInfo->convertUcs4);
|
||||||
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
if (pRequest->code != TSDB_CODE_SUCCESS) {
|
||||||
pResultInfo->numOfRows = 0;
|
pResultInfo->numOfRows = 0;
|
||||||
tscError("0x%" PRIx64 " fetch results failed, code:%s, qid:0x%" PRIx64, pRequest->self, tstrerror(pRequest->code),
|
tscError("0x%" PRIx64 " fetch results failed, code:%s,QID:0x%" PRIx64, pRequest->self, tstrerror(pRequest->code),
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
} else {
|
} else {
|
||||||
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d, qid:0x%" PRIx64,
|
tscDebug("0x%" PRIx64 " fetch results, numOfRows:%" PRId64 " total Rows:%" PRId64 ", complete:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, pResultInfo->numOfRows, pResultInfo->totalRows, pResultInfo->completed,
|
pRequest->self, pResultInfo->numOfRows, pResultInfo->totalRows, pResultInfo->completed,
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
|
|
||||||
|
|
|
@ -941,7 +941,7 @@ static void doAsyncQueryFromAnalyse(SMetaData *pResultMeta, void *param, int32_t
|
||||||
SRequestObj *pRequest = pWrapper->pRequest;
|
SRequestObj *pRequest = pWrapper->pRequest;
|
||||||
SQuery *pQuery = pRequest->pQuery;
|
SQuery *pQuery = pRequest->pQuery;
|
||||||
|
|
||||||
qDebug("0x%" PRIx64 " start to semantic analysis, qid:0x%" PRIx64, pRequest->self, pRequest->requestId);
|
qDebug("0x%" PRIx64 " start to semantic analysis,QID:0x%" PRIx64, pRequest->self, pRequest->requestId);
|
||||||
|
|
||||||
int64_t analyseStart = taosGetTimestampUs();
|
int64_t analyseStart = taosGetTimestampUs();
|
||||||
pRequest->metric.ctgCostUs = analyseStart - pRequest->metric.ctgStart;
|
pRequest->metric.ctgCostUs = analyseStart - pRequest->metric.ctgStart;
|
||||||
|
@ -1060,14 +1060,14 @@ void handleQueryAnslyseRes(SSqlCallbackWrapper *pWrapper, SMetaData *pResultMeta
|
||||||
pRequest->pQuery = NULL;
|
pRequest->pQuery = NULL;
|
||||||
|
|
||||||
if (NEED_CLIENT_HANDLE_ERROR(code)) {
|
if (NEED_CLIENT_HANDLE_ERROR(code)) {
|
||||||
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%d - %s, tryCount:%d, qid:0x%" PRIx64,
|
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%d - %s, tryCount:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, code, tstrerror(code), pRequest->retry, pRequest->requestId);
|
pRequest->self, code, tstrerror(code), pRequest->retry, pRequest->requestId);
|
||||||
restartAsyncQuery(pRequest, code);
|
restartAsyncQuery(pRequest, code);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// return to app directly
|
// return to app directly
|
||||||
tscError("0x%" PRIx64 " error occurs, code:%s, return to user app, qid:0x%" PRIx64, pRequest->self, tstrerror(code),
|
tscError("0x%" PRIx64 " error occurs, code:%s, return to user app,QID:0x%" PRIx64, pRequest->self, tstrerror(code),
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
pRequest->code = code;
|
pRequest->code = code;
|
||||||
returnToUser(pRequest);
|
returnToUser(pRequest);
|
||||||
|
@ -1117,7 +1117,7 @@ static void doAsyncQueryFromParse(SMetaData *pResultMeta, void *param, int32_t c
|
||||||
SQuery *pQuery = pRequest->pQuery;
|
SQuery *pQuery = pRequest->pQuery;
|
||||||
|
|
||||||
pRequest->metric.ctgCostUs += taosGetTimestampUs() - pRequest->metric.ctgStart;
|
pRequest->metric.ctgCostUs += taosGetTimestampUs() - pRequest->metric.ctgStart;
|
||||||
qDebug("0x%" PRIx64 " start to continue parse, qid:0x%" PRIx64 ", code:%s", pRequest->self, pRequest->requestId,
|
qDebug("0x%" PRIx64 " start to continue parse,QID:0x%" PRIx64 ", code:%s", pRequest->self, pRequest->requestId,
|
||||||
tstrerror(code));
|
tstrerror(code));
|
||||||
|
|
||||||
if (code == TSDB_CODE_SUCCESS) {
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
|
@ -1130,7 +1130,7 @@ static void doAsyncQueryFromParse(SMetaData *pResultMeta, void *param, int32_t c
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
tscError("0x%" PRIx64 " error happens, code:%d - %s, qid:0x%" PRIx64, pWrapper->pRequest->self, code,
|
tscError("0x%" PRIx64 " error happens, code:%d - %s,QID:0x%" PRIx64, pWrapper->pRequest->self, code,
|
||||||
tstrerror(code), pWrapper->pRequest->requestId);
|
tstrerror(code), pWrapper->pRequest->requestId);
|
||||||
destorySqlCallbackWrapper(pWrapper);
|
destorySqlCallbackWrapper(pWrapper);
|
||||||
pRequest->pWrapper = NULL;
|
pRequest->pWrapper = NULL;
|
||||||
|
@ -1147,7 +1147,7 @@ void continueInsertFromCsv(SSqlCallbackWrapper *pWrapper, SRequestObj *pRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
tscError("0x%" PRIx64 " error happens, code:%d - %s, qid:0x%" PRIx64, pWrapper->pRequest->self, code,
|
tscError("0x%" PRIx64 " error happens, code:%d - %s,QID:0x%" PRIx64, pWrapper->pRequest->self, code,
|
||||||
tstrerror(code), pWrapper->pRequest->requestId);
|
tstrerror(code), pWrapper->pRequest->requestId);
|
||||||
destorySqlCallbackWrapper(pWrapper);
|
destorySqlCallbackWrapper(pWrapper);
|
||||||
pRequest->pWrapper = NULL;
|
pRequest->pWrapper = NULL;
|
||||||
|
@ -1265,7 +1265,7 @@ void doAsyncQuery(SRequestObj *pRequest, bool updateMetaForce) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
tscError("0x%" PRIx64 " error happens, code:%d - %s, qid:0x%" PRIx64, pRequest->self, code, tstrerror(code),
|
tscError("0x%" PRIx64 " error happens, code:%d - %s,QID:0x%" PRIx64, pRequest->self, code, tstrerror(code),
|
||||||
pRequest->requestId);
|
pRequest->requestId);
|
||||||
destorySqlCallbackWrapper(pWrapper);
|
destorySqlCallbackWrapper(pWrapper);
|
||||||
pRequest->pWrapper = NULL;
|
pRequest->pWrapper = NULL;
|
||||||
|
@ -1273,7 +1273,7 @@ void doAsyncQuery(SRequestObj *pRequest, bool updateMetaForce) {
|
||||||
pRequest->pQuery = NULL;
|
pRequest->pQuery = NULL;
|
||||||
|
|
||||||
if (NEED_CLIENT_HANDLE_ERROR(code)) {
|
if (NEED_CLIENT_HANDLE_ERROR(code)) {
|
||||||
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%d - %s, tryCount:%d, qid:0x%" PRIx64,
|
tscDebug("0x%" PRIx64 " client retry to handle the error, code:%d - %s, tryCount:%d,QID:0x%" PRIx64,
|
||||||
pRequest->self, code, tstrerror(code), pRequest->retry, pRequest->requestId);
|
pRequest->self, code, tstrerror(code), pRequest->retry, pRequest->requestId);
|
||||||
(void)refreshMeta(pRequest->pTscObj, pRequest); // ignore return code,try again
|
(void)refreshMeta(pRequest->pTscObj, pRequest); // ignore return code,try again
|
||||||
pRequest->prevCode = code;
|
pRequest->prevCode = code;
|
||||||
|
|
|
@ -696,7 +696,7 @@ static void monitorSendAllSlowLogFromTempDir(int64_t clusterId) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (taosLockFile(pFile) < 0) {
|
if (taosLockFile(pFile) < 0) {
|
||||||
tscError("failed to lock file:%s since %s, maybe used by other process", filename, terrstr());
|
tscInfo("failed to lock file:%s since %s, maybe used by other process", filename, terrstr());
|
||||||
(void)taosCloseFile(&pFile);
|
(void)taosCloseFile(&pFile);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1570,7 +1570,7 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) {
|
||||||
if (msgEpoch < clientEpoch) {
|
if (msgEpoch < clientEpoch) {
|
||||||
// do not write into queue since updating epoch reset
|
// do not write into queue since updating epoch reset
|
||||||
tscWarn("consumer:0x%" PRIx64
|
tscWarn("consumer:0x%" PRIx64
|
||||||
" msg discard from vgId:%d since from earlier epoch, rsp epoch %d, current epoch %d, qid:0x%" PRIx64,
|
" msg discard from vgId:%d since from earlier epoch, rsp epoch %d, current epoch %d,QID:0x%" PRIx64,
|
||||||
tmq->consumerId, vgId, msgEpoch, clientEpoch, requestId);
|
tmq->consumerId, vgId, msgEpoch, clientEpoch, requestId);
|
||||||
code = TSDB_CODE_TMQ_CONSUMER_MISMATCH;
|
code = TSDB_CODE_TMQ_CONSUMER_MISMATCH;
|
||||||
goto END;
|
goto END;
|
||||||
|
@ -1603,7 +1603,7 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) {
|
||||||
|
|
||||||
char buf[TSDB_OFFSET_LEN] = {0};
|
char buf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(buf, TSDB_OFFSET_LEN, &pRspWrapper->dataRsp.common.rspOffset);
|
tFormatOffset(buf, TSDB_OFFSET_LEN, &pRspWrapper->dataRsp.common.rspOffset);
|
||||||
tscDebug("consumer:0x%" PRIx64 " recv poll rsp, vgId:%d, req ver:%" PRId64 ", rsp:%s type %d, qid:0x%" PRIx64,
|
tscDebug("consumer:0x%" PRIx64 " recv poll rsp, vgId:%d, req ver:%" PRId64 ", rsp:%s type %d,QID:0x%" PRIx64,
|
||||||
tmq->consumerId, vgId, pRspWrapper->dataRsp.common.reqOffset.version, buf, rspType, requestId);
|
tmq->consumerId, vgId, pRspWrapper->dataRsp.common.reqOffset.version, buf, rspType, requestId);
|
||||||
} else if (rspType == TMQ_MSG_TYPE__POLL_META_RSP) {
|
} else if (rspType == TMQ_MSG_TYPE__POLL_META_RSP) {
|
||||||
SDecoder decoder = {0};
|
SDecoder decoder = {0};
|
||||||
|
@ -1635,7 +1635,7 @@ int32_t tmqPollCb(void* param, SDataBuf* pMsg, int32_t code) {
|
||||||
}
|
}
|
||||||
tDecoderClear(&decoder);
|
tDecoderClear(&decoder);
|
||||||
(void)memcpy(&pRspWrapper->batchMetaRsp, pMsg->pData, sizeof(SMqRspHead));
|
(void)memcpy(&pRspWrapper->batchMetaRsp, pMsg->pData, sizeof(SMqRspHead));
|
||||||
tscDebug("consumer:0x%" PRIx64 " recv poll batchmeta rsp, vgId:%d, qid:0x%" PRIx64, tmq->consumerId, vgId,
|
tscDebug("consumer:0x%" PRIx64 " recv poll batchmeta rsp, vgId:%d,QID:0x%" PRIx64, tmq->consumerId, vgId,
|
||||||
requestId);
|
requestId);
|
||||||
} else { // invalid rspType
|
} else { // invalid rspType
|
||||||
tscError("consumer:0x%" PRIx64 " invalid rsp msg received, type:%d ignored", tmq->consumerId, rspType);
|
tscError("consumer:0x%" PRIx64 " invalid rsp msg received, type:%d ignored", tmq->consumerId, rspType);
|
||||||
|
@ -1652,7 +1652,7 @@ END:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int32_t total = taosQueueItemSize(tmq->mqueue);
|
int32_t total = taosQueueItemSize(tmq->mqueue);
|
||||||
tscDebug("consumer:0x%" PRIx64 " put poll res into mqueue, type:%d, vgId:%d, total in queue:%d, qid:0x%" PRIx64,
|
tscDebug("consumer:0x%" PRIx64 " put poll res into mqueue, type:%d, vgId:%d, total in queue:%d,QID:0x%" PRIx64,
|
||||||
tmq ? tmq->consumerId : 0, rspType, vgId, total, requestId);
|
tmq ? tmq->consumerId : 0, rspType, vgId, total, requestId);
|
||||||
|
|
||||||
if (tmq) (void)tsem2_post(&tmq->rspSem);
|
if (tmq) (void)tsem2_post(&tmq->rspSem);
|
||||||
|
@ -2048,8 +2048,8 @@ static int32_t doTmqPollImpl(tmq_t* pTmq, SMqClientTopic* pTopic, SMqClientVg* p
|
||||||
char offsetFormatBuf[TSDB_OFFSET_LEN] = {0};
|
char offsetFormatBuf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pVg->offsetInfo.endOffset);
|
tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pVg->offsetInfo.endOffset);
|
||||||
code = asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &pVg->epSet, &transporterId, sendInfo);
|
code = asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &pVg->epSet, &transporterId, sendInfo);
|
||||||
tscDebug("consumer:0x%" PRIx64 " send poll to %s vgId:%d, code:%d, epoch %d, req:%s, qid:0x%" PRIx64,
|
tscDebug("consumer:0x%" PRIx64 " send poll to %s vgId:%d, code:%d, epoch %d, req:%s,QID:0x%" PRIx64, pTmq->consumerId,
|
||||||
pTmq->consumerId, pTopic->topicName, pVg->vgId, code, pTmq->epoch, offsetFormatBuf, req.reqId);
|
pTopic->topicName, pVg->vgId, code, pTmq->epoch, offsetFormatBuf, req.reqId);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -2221,7 +2221,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) {
|
||||||
tFormatOffset(buf, TSDB_OFFSET_LEN, &pDataRsp->rspOffset);
|
tFormatOffset(buf, TSDB_OFFSET_LEN, &pDataRsp->rspOffset);
|
||||||
if (pDataRsp->blockNum == 0) {
|
if (pDataRsp->blockNum == 0) {
|
||||||
tscDebug("consumer:0x%" PRIx64 " empty block received, vgId:%d, offset:%s, vg total:%" PRId64
|
tscDebug("consumer:0x%" PRIx64 " empty block received, vgId:%d, offset:%s, vg total:%" PRId64
|
||||||
", total:%" PRId64 ", qid:0x%" PRIx64,
|
", total:%" PRId64 ",QID:0x%" PRIx64,
|
||||||
tmq->consumerId, pVg->vgId, buf, pVg->numOfRows, tmq->totalRows, pollRspWrapper->reqId);
|
tmq->consumerId, pVg->vgId, buf, pVg->numOfRows, tmq->totalRows, pollRspWrapper->reqId);
|
||||||
pVg->emptyBlockReceiveTs = taosGetTimestampMs();
|
pVg->emptyBlockReceiveTs = taosGetTimestampMs();
|
||||||
tmqFreeRspWrapper(pRspWrapper);
|
tmqFreeRspWrapper(pRspWrapper);
|
||||||
|
@ -2244,7 +2244,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tscDebug("consumer:0x%" PRIx64 " process poll rsp, vgId:%d, offset:%s, blocks:%d, rows:%" PRId64
|
tscDebug("consumer:0x%" PRIx64 " process poll rsp, vgId:%d, offset:%s, blocks:%d, rows:%" PRId64
|
||||||
", vg total:%" PRId64 ", total:%" PRId64 ", qid:0x%" PRIx64,
|
", vg total:%" PRId64 ", total:%" PRId64 ",QID:0x%" PRIx64,
|
||||||
tmq->consumerId, pVg->vgId, buf, pDataRsp->blockNum, numOfRows, pVg->numOfRows, tmq->totalRows,
|
tmq->consumerId, pVg->vgId, buf, pDataRsp->blockNum, numOfRows, pVg->numOfRows, tmq->totalRows,
|
||||||
pollRspWrapper->reqId);
|
pollRspWrapper->reqId);
|
||||||
taosFreeQitem(pRspWrapper);
|
taosFreeQitem(pRspWrapper);
|
||||||
|
@ -2355,7 +2355,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) {
|
||||||
tmq->consumerId, pDataRsp->blockNum != 0);
|
tmq->consumerId, pDataRsp->blockNum != 0);
|
||||||
|
|
||||||
if (pDataRsp->blockNum == 0) {
|
if (pDataRsp->blockNum == 0) {
|
||||||
tscDebug("consumer:0x%" PRIx64 " taosx empty block received, vgId:%d, vg total:%" PRId64 ", qid:0x%" PRIx64,
|
tscDebug("consumer:0x%" PRIx64 " taosx empty block received, vgId:%d, vg total:%" PRId64 ",QID:0x%" PRIx64,
|
||||||
tmq->consumerId, pVg->vgId, pVg->numOfRows, pollRspWrapper->reqId);
|
tmq->consumerId, pVg->vgId, pVg->numOfRows, pollRspWrapper->reqId);
|
||||||
pVg->emptyBlockReceiveTs = taosGetTimestampMs();
|
pVg->emptyBlockReceiveTs = taosGetTimestampMs();
|
||||||
tmqFreeRspWrapper(pRspWrapper);
|
tmqFreeRspWrapper(pRspWrapper);
|
||||||
|
@ -2377,7 +2377,7 @@ static void* tmqHandleAllRsp(tmq_t* tmq, int64_t timeout) {
|
||||||
char buf[TSDB_OFFSET_LEN] = {0};
|
char buf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(buf, TSDB_OFFSET_LEN, &pVg->offsetInfo.endOffset);
|
tFormatOffset(buf, TSDB_OFFSET_LEN, &pVg->offsetInfo.endOffset);
|
||||||
tscDebug("consumer:0x%" PRIx64 " process taosx poll rsp, vgId:%d, offset:%s, blocks:%d, rows:%" PRId64
|
tscDebug("consumer:0x%" PRIx64 " process taosx poll rsp, vgId:%d, offset:%s, blocks:%d, rows:%" PRId64
|
||||||
", vg total:%" PRId64 ", total:%" PRId64 ", qid:0x%" PRIx64,
|
", vg total:%" PRId64 ", total:%" PRId64 ",QID:0x%" PRIx64,
|
||||||
tmq->consumerId, pVg->vgId, buf, pDataRsp->blockNum, numOfRows, pVg->numOfRows, tmq->totalRows,
|
tmq->consumerId, pVg->vgId, buf, pDataRsp->blockNum, numOfRows, pVg->numOfRows, tmq->totalRows,
|
||||||
pollRspWrapper->reqId);
|
pollRspWrapper->reqId);
|
||||||
|
|
||||||
|
@ -2990,7 +2990,7 @@ int32_t askEp(tmq_t* pTmq, void* param, bool sync, bool updateEpSet) {
|
||||||
sendInfo->msgType = TDMT_MND_TMQ_ASK_EP;
|
sendInfo->msgType = TDMT_MND_TMQ_ASK_EP;
|
||||||
|
|
||||||
SEpSet epSet = getEpSet_s(&pTmq->pTscObj->pAppInfo->mgmtEp);
|
SEpSet epSet = getEpSet_s(&pTmq->pTscObj->pAppInfo->mgmtEp);
|
||||||
tscDebug("consumer:0x%" PRIx64 " ask ep from mnode, qid:0x%" PRIx64, pTmq->consumerId, sendInfo->requestId);
|
tscDebug("consumer:0x%" PRIx64 " ask ep from mnode,QID:0x%" PRIx64, pTmq->consumerId, sendInfo->requestId);
|
||||||
return asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &epSet, NULL, sendInfo);
|
return asyncSendMsgToServer(pTmq->pTscObj->pAppInfo->pTransporter, &epSet, NULL, sendInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3497,7 +3497,7 @@ int32_t tmq_get_topic_assignment(tmq_t* tmq, const char* pTopicName, tmq_topic_a
|
||||||
char offsetFormatBuf[TSDB_OFFSET_LEN] = {0};
|
char offsetFormatBuf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pClientVg->offsetInfo.beginOffset);
|
tFormatOffset(offsetFormatBuf, tListLen(offsetFormatBuf), &pClientVg->offsetInfo.beginOffset);
|
||||||
|
|
||||||
tscInfo("consumer:0x%" PRIx64 " %s retrieve wal info vgId:%d, epoch %d, req:%s, qid:0x%" PRIx64, tmq->consumerId,
|
tscInfo("consumer:0x%" PRIx64 " %s retrieve wal info vgId:%d, epoch %d, req:%s,QID:0x%" PRIx64, tmq->consumerId,
|
||||||
pTopic->topicName, pClientVg->vgId, tmq->epoch, offsetFormatBuf, req.reqId);
|
pTopic->topicName, pClientVg->vgId, tmq->epoch, offsetFormatBuf, req.reqId);
|
||||||
code = asyncSendMsgToServer(tmq->pTscObj->pAppInfo->pTransporter, &pClientVg->epSet, &transporterId, sendInfo);
|
code = asyncSendMsgToServer(tmq->pTscObj->pAppInfo->pTransporter, &pClientVg->epSet, &transporterId, sendInfo);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
|
|
|
@ -72,23 +72,42 @@ void s3CleanUp() { /*s3End();*/
|
||||||
|
|
||||||
static int32_t s3ListBucket(char const *bucketname);
|
static int32_t s3ListBucket(char const *bucketname);
|
||||||
|
|
||||||
|
static void s3DumpCfgByEp(int8_t epIndex) {
|
||||||
|
// clang-format off
|
||||||
|
(void)fprintf(stdout,
|
||||||
|
"%-24s %s\n"
|
||||||
|
"%-24s %s\n"
|
||||||
|
"%-24s %s\n"
|
||||||
|
"%-24s %s\n"
|
||||||
|
"%-24s %s\n"
|
||||||
|
"%-24s %s\n",
|
||||||
|
"hostName", tsS3Hostname[epIndex],
|
||||||
|
"bucketName", tsS3BucketName,
|
||||||
|
"protocol", (protocolG[epIndex] == S3ProtocolHTTPS ? "https" : "http"),
|
||||||
|
"uristyle", (uriStyleG[epIndex] == S3UriStyleVirtualHost ? "virtualhost" : "path"),
|
||||||
|
"accessKey", tsS3AccessKeyId[epIndex],
|
||||||
|
"accessKeySecret", tsS3AccessKeySecret[epIndex]);
|
||||||
|
// clang-format on
|
||||||
|
}
|
||||||
|
|
||||||
int32_t s3CheckCfg() {
|
int32_t s3CheckCfg() {
|
||||||
int32_t code = 0, lino = 0;
|
int32_t code = 0, lino = 0;
|
||||||
int8_t i = 0;
|
int8_t i = 0;
|
||||||
|
|
||||||
if (!tsS3Enabled) {
|
if (!tsS3Enabled) {
|
||||||
(void)fprintf(stderr, "s3 not configured.\n");
|
(void)fprintf(stderr, "s3 not configured.\n");
|
||||||
goto _exit;
|
TAOS_RETURN(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
code = s3Begin();
|
code = s3Begin();
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
(void)fprintf(stderr, "failed to initialize s3.\n");
|
(void)fprintf(stderr, "failed to initialize s3.\n");
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_RETURN(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (; i < tsS3EpNum; i++) {
|
for (; i < tsS3EpNum; i++) {
|
||||||
(void)fprintf(stdout, "test s3 ep: %d/%d.\n", i + 1, tsS3EpNum);
|
(void)fprintf(stdout, "test s3 ep (%d/%d):\n", i + 1, tsS3EpNum);
|
||||||
|
s3DumpCfgByEp(i);
|
||||||
|
|
||||||
// test put
|
// test put
|
||||||
char testdata[17] = "0123456789abcdef";
|
char testdata[17] = "0123456789abcdef";
|
||||||
|
@ -109,15 +128,15 @@ int32_t s3CheckCfg() {
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
(void)fprintf(stderr, "failed to open test file: %s.\n", path);
|
(void)fprintf(stderr, "failed to open test file: %s.\n", path);
|
||||||
// uError("ERROR: %s Failed to open %s", __func__, path);
|
// uError("ERROR: %s Failed to open %s", __func__, path);
|
||||||
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _exit);
|
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _next);
|
||||||
}
|
}
|
||||||
if (taosWriteFile(fp, testdata, strlen(testdata)) < 0) {
|
if (taosWriteFile(fp, testdata, strlen(testdata)) < 0) {
|
||||||
(void)fprintf(stderr, "failed to write test file: %s.\n", path);
|
(void)fprintf(stderr, "failed to write test file: %s.\n", path);
|
||||||
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _exit);
|
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _next);
|
||||||
}
|
}
|
||||||
if (taosFsyncFile(fp) < 0) {
|
if (taosFsyncFile(fp) < 0) {
|
||||||
(void)fprintf(stderr, "failed to fsync test file: %s.\n", path);
|
(void)fprintf(stderr, "failed to fsync test file: %s.\n", path);
|
||||||
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _exit);
|
TAOS_CHECK_GOTO(TAOS_SYSTEM_ERROR(errno), &lino, _next);
|
||||||
}
|
}
|
||||||
(void)taosCloseFile(&fp);
|
(void)taosCloseFile(&fp);
|
||||||
|
|
||||||
|
@ -125,7 +144,7 @@ int32_t s3CheckCfg() {
|
||||||
code = s3PutObjectFromFileOffsetByEp(path, objectname[0], 0, 16, i);
|
code = s3PutObjectFromFileOffsetByEp(path, objectname[0], 0, 16, i);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
(void)fprintf(stderr, "put object %s : failed.\n", objectname[0]);
|
(void)fprintf(stderr, "put object %s : failed.\n", objectname[0]);
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_CHECK_GOTO(code, &lino, _next);
|
||||||
}
|
}
|
||||||
(void)fprintf(stderr, "put object %s: success.\n\n", objectname[0]);
|
(void)fprintf(stderr, "put object %s: success.\n\n", objectname[0]);
|
||||||
|
|
||||||
|
@ -134,7 +153,7 @@ int32_t s3CheckCfg() {
|
||||||
code = s3ListBucketByEp(tsS3BucketName, i);
|
code = s3ListBucketByEp(tsS3BucketName, i);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
(void)fprintf(stderr, "listing bucket %s : failed.\n", tsS3BucketName);
|
(void)fprintf(stderr, "listing bucket %s : failed.\n", tsS3BucketName);
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_CHECK_GOTO(code, &lino, _next);
|
||||||
}
|
}
|
||||||
(void)fprintf(stderr, "listing bucket %s: success.\n\n", tsS3BucketName);
|
(void)fprintf(stderr, "listing bucket %s: success.\n\n", tsS3BucketName);
|
||||||
|
|
||||||
|
@ -147,7 +166,7 @@ int32_t s3CheckCfg() {
|
||||||
code = s3GetObjectBlockByEp(objectname[0], c_offset, c_len, true, &pBlock, i);
|
code = s3GetObjectBlockByEp(objectname[0], c_offset, c_len, true, &pBlock, i);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
(void)fprintf(stderr, "get object %s : failed.\n", objectname[0]);
|
(void)fprintf(stderr, "get object %s : failed.\n", objectname[0]);
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_CHECK_GOTO(code, &lino, _next);
|
||||||
}
|
}
|
||||||
char buf[7] = {0};
|
char buf[7] = {0};
|
||||||
(void)memcpy(buf, pBlock, c_len);
|
(void)memcpy(buf, pBlock, c_len);
|
||||||
|
@ -160,18 +179,24 @@ int32_t s3CheckCfg() {
|
||||||
code = s3DeleteObjectsByEp(objectname, 1, i);
|
code = s3DeleteObjectsByEp(objectname, 1, i);
|
||||||
if (code != 0) {
|
if (code != 0) {
|
||||||
(void)fprintf(stderr, "delete object %s : failed.\n", objectname[0]);
|
(void)fprintf(stderr, "delete object %s : failed.\n", objectname[0]);
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_CHECK_GOTO(code, &lino, _next);
|
||||||
}
|
}
|
||||||
(void)fprintf(stderr, "delete object %s: success.\n\n", objectname[0]);
|
(void)fprintf(stderr, "delete object %s: success.\n\n", objectname[0]);
|
||||||
|
|
||||||
|
_next:
|
||||||
|
if (fp) {
|
||||||
|
(void)taosCloseFile(&fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (TSDB_CODE_SUCCESS != code) {
|
||||||
|
(void)fprintf(stderr, "s3 check failed, code: %d, line: %d, index: %d.\n", code, lino, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)fprintf(stdout, "=================================================================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
s3End();
|
s3End();
|
||||||
|
|
||||||
_exit:
|
|
||||||
if (TSDB_CODE_SUCCESS != code) {
|
|
||||||
(void)fprintf(stderr, "s3 check failed, code: %d, line: %d, index: %d.\n", code, lino, i);
|
|
||||||
}
|
|
||||||
|
|
||||||
TAOS_RETURN(code);
|
TAOS_RETURN(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3302,229 +3302,74 @@ static int32_t tColDataSort(SColData *aColData, int32_t nColData) {
|
||||||
|
|
||||||
return tColDataMergeSort(aColData, 0, nVal - 1, nColData);
|
return tColDataMergeSort(aColData, 0, nVal - 1, nColData);
|
||||||
}
|
}
|
||||||
static void tColDataMergeImpl(SColData *pColData, int32_t iStart, int32_t iEnd /* not included */) {
|
|
||||||
switch (pColData->flag) {
|
|
||||||
case HAS_NONE:
|
|
||||||
case HAS_NULL: {
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
|
||||||
} break;
|
|
||||||
case (HAS_NULL | HAS_NONE): {
|
|
||||||
if (GET_BIT1(pColData->pBitMap, iStart) == 0) {
|
|
||||||
for (int32_t i = iStart + 1; i < iEnd; ++i) {
|
|
||||||
if (GET_BIT1(pColData->pBitMap, i) == 1) {
|
|
||||||
SET_BIT1(pColData->pBitMap, iStart, 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
static int32_t tColDataMerge(SArray **colArr) {
|
||||||
|
int32_t code = 0;
|
||||||
|
SArray *src = *colArr;
|
||||||
|
SArray *dst = NULL;
|
||||||
|
|
||||||
uint8_t flag = 0;
|
dst = taosArrayInit(taosArrayGetSize(src), sizeof(SColData));
|
||||||
for (int32_t i = 0; i < pColData->nVal; ++i) {
|
if (dst == NULL) {
|
||||||
uint8_t bv = GET_BIT1(pColData->pBitMap, i);
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
if (bv == BIT_FLG_NONE) {
|
|
||||||
flag |= HAS_NONE;
|
|
||||||
} else if (bv == BIT_FLG_NULL) {
|
|
||||||
flag |= HAS_NULL;
|
|
||||||
} else {
|
|
||||||
uError("invalid bit value:%d", bv);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag == pColData->flag) break;
|
|
||||||
}
|
|
||||||
pColData->flag = flag;
|
|
||||||
} break;
|
|
||||||
case HAS_VALUE: {
|
|
||||||
if (IS_VAR_DATA_TYPE(pColData->type)) {
|
|
||||||
int32_t nDiff = pColData->aOffset[iEnd - 1] - pColData->aOffset[iStart];
|
|
||||||
|
|
||||||
memmove(pColData->pData + pColData->aOffset[iStart], pColData->pData + pColData->aOffset[iEnd - 1],
|
|
||||||
pColData->nData - pColData->aOffset[iEnd - 1]);
|
|
||||||
pColData->nData -= nDiff;
|
|
||||||
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
pColData->aOffset[j] = pColData->aOffset[i] - nDiff;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
memmove(pColData->pData + TYPE_BYTES[pColData->type] * iStart,
|
|
||||||
pColData->pData + TYPE_BYTES[pColData->type] * (iEnd - 1),
|
|
||||||
TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd + 1));
|
|
||||||
pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
|
||||||
} break;
|
|
||||||
case (HAS_VALUE | HAS_NONE): {
|
|
||||||
uint8_t bv;
|
|
||||||
int32_t iv;
|
|
||||||
for (int32_t i = iEnd - 1; i >= iStart; --i) {
|
|
||||||
bv = GET_BIT1(pColData->pBitMap, i);
|
|
||||||
if (bv) {
|
|
||||||
iv = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bv) { // has a value
|
|
||||||
if (IS_VAR_DATA_TYPE(pColData->type)) {
|
|
||||||
if (iv != iStart) {
|
|
||||||
memmove(&pColData->pData[pColData->aOffset[iStart]], &pColData->pData[pColData->aOffset[iv]],
|
|
||||||
iv < (pColData->nVal - 1) ? pColData->aOffset[iv + 1] - pColData->aOffset[iv]
|
|
||||||
: pColData->nData - pColData->aOffset[iv]);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (iv != iStart) {
|
|
||||||
(void)memcpy(&pColData->pData[TYPE_BYTES[pColData->type] * iStart],
|
|
||||||
&pColData->pData[TYPE_BYTES[pColData->type] * iv], TYPE_BYTES[pColData->type]);
|
|
||||||
}
|
|
||||||
memmove(&pColData->pData[TYPE_BYTES[pColData->type] * (iStart + 1)],
|
|
||||||
&pColData->pData[TYPE_BYTES[pColData->type] * iEnd],
|
|
||||||
TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
SET_BIT1(pColData->pBitMap, iStart, 1);
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t flag = HAS_VALUE;
|
|
||||||
for (int32_t i = 0; i < pColData->nVal - (iEnd - iStart - 1); ++i) {
|
|
||||||
if (GET_BIT1(pColData->pBitMap, i) == 0) {
|
|
||||||
flag |= HAS_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag == pColData->flag) break;
|
|
||||||
}
|
|
||||||
pColData->flag = flag;
|
|
||||||
} else { // all NONE
|
|
||||||
if (IS_VAR_DATA_TYPE(pColData->type)) {
|
|
||||||
int32_t nDiff = pColData->aOffset[iEnd - 1] - pColData->aOffset[iStart];
|
|
||||||
|
|
||||||
memmove(&pColData->pData[pColData->aOffset[iStart]], &pColData->pData[pColData->aOffset[iEnd - 1]],
|
|
||||||
pColData->nData - pColData->aOffset[iEnd - 1]);
|
|
||||||
pColData->nData -= nDiff;
|
|
||||||
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
pColData->aOffset[j] = pColData->aOffset[i] - nDiff;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
memmove(pColData->pData + TYPE_BYTES[pColData->type] * (iStart + 1),
|
|
||||||
pColData->pData + TYPE_BYTES[pColData->type] * iEnd,
|
|
||||||
TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd + 1));
|
|
||||||
pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
|
||||||
} break;
|
|
||||||
case (HAS_VALUE | HAS_NULL): {
|
|
||||||
if (IS_VAR_DATA_TYPE(pColData->type)) {
|
|
||||||
int32_t nDiff = pColData->aOffset[iEnd - 1] - pColData->aOffset[iStart];
|
|
||||||
|
|
||||||
memmove(pColData->pData + pColData->aOffset[iStart], pColData->pData + pColData->aOffset[iEnd - 1],
|
|
||||||
pColData->nData - pColData->aOffset[iEnd - 1]);
|
|
||||||
pColData->nData -= nDiff;
|
|
||||||
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
pColData->aOffset[j] = pColData->aOffset[i] - nDiff;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
memmove(pColData->pData + TYPE_BYTES[pColData->type] * iStart,
|
|
||||||
pColData->pData + TYPE_BYTES[pColData->type] * (iEnd - 1),
|
|
||||||
TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd + 1));
|
|
||||||
pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int32_t i = iEnd - 1, j = iStart; i < pColData->nVal; ++i, ++j) {
|
|
||||||
SET_BIT1(pColData->pBitMap, j, GET_BIT1(pColData->pBitMap, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
|
||||||
|
|
||||||
uint8_t flag = 0;
|
|
||||||
for (int32_t i = 0; i < pColData->nVal; ++i) {
|
|
||||||
if (GET_BIT1(pColData->pBitMap, i)) {
|
|
||||||
flag |= HAS_VALUE;
|
|
||||||
} else {
|
|
||||||
flag |= HAS_NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flag == pColData->flag) break;
|
|
||||||
}
|
|
||||||
pColData->flag = flag;
|
|
||||||
} break;
|
|
||||||
case (HAS_VALUE | HAS_NULL | HAS_NONE): {
|
|
||||||
uint8_t bv;
|
|
||||||
int32_t iv;
|
|
||||||
for (int32_t i = iEnd - 1; i >= iStart; --i) {
|
|
||||||
bv = GET_BIT2(pColData->pBitMap, i);
|
|
||||||
if (bv) {
|
|
||||||
iv = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bv) {
|
|
||||||
// TODO
|
|
||||||
ASSERT(0);
|
|
||||||
} else { // ALL NONE
|
|
||||||
if (IS_VAR_DATA_TYPE(pColData->type)) {
|
|
||||||
// TODO
|
|
||||||
ASSERT(0);
|
|
||||||
} else {
|
|
||||||
memmove(pColData->pData + TYPE_BYTES[pColData->type] * (iStart + 1),
|
|
||||||
pColData->pData + TYPE_BYTES[pColData->type] * iEnd,
|
|
||||||
TYPE_BYTES[pColData->type] * (pColData->nVal - iEnd));
|
|
||||||
pColData->nData -= (TYPE_BYTES[pColData->type] * (iEnd - iStart - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int32_t i = iEnd, j = iStart + 1; i < pColData->nVal; ++i, ++j) {
|
|
||||||
SET_BIT2(pColData->pBitMap, j, GET_BIT2(pColData->pBitMap, i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pColData->nVal -= (iEnd - iStart - 1);
|
|
||||||
} break;
|
|
||||||
default:
|
|
||||||
ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
static void tColDataMerge(SColData *aColData, int32_t nColData) {
|
|
||||||
int32_t iStart = 0;
|
|
||||||
SRowKey keyStart, keyEnd;
|
|
||||||
|
|
||||||
for (;;) {
|
for (int32_t i = 0; i < taosArrayGetSize(src); i++) {
|
||||||
if (iStart >= aColData[0].nVal - 1) break;
|
SColData *srcCol = taosArrayGet(src, i);
|
||||||
tColDataArrGetRowKey(aColData, nColData, iStart, &keyStart);
|
|
||||||
|
|
||||||
int32_t iEnd = iStart + 1;
|
SColData *dstCol = taosArrayReserve(dst, 1);
|
||||||
while (iEnd < aColData[0].nVal) {
|
if (dstCol == NULL) {
|
||||||
tColDataArrGetRowKey(aColData, nColData, iEnd, &keyEnd);
|
code = terrno;
|
||||||
if (tRowKeyCompare(&keyStart, &keyEnd) != 0) break;
|
goto _exit;
|
||||||
|
|
||||||
iEnd++;
|
|
||||||
}
|
}
|
||||||
|
tColDataInit(dstCol, srcCol->cid, srcCol->type, srcCol->cflag);
|
||||||
|
}
|
||||||
|
|
||||||
if (iEnd - iStart > 1) {
|
int32_t numRows = ((SColData *)TARRAY_DATA(src))->nVal;
|
||||||
for (int32_t i = 0; i < nColData; i++) {
|
SRowKey lastKey;
|
||||||
tColDataMergeImpl(&aColData[i], iStart, iEnd);
|
for (int32_t i = 0; i < numRows; i++) {
|
||||||
|
SRowKey key;
|
||||||
|
tColDataArrGetRowKey((SColData *)TARRAY_DATA(src), taosArrayGetSize(src), i, &key);
|
||||||
|
|
||||||
|
if (i == 0 || tRowKeyCompare(&key, &lastKey) != 0) { // append new row
|
||||||
|
for (int32_t j = 0; j < taosArrayGetSize(src); j++) {
|
||||||
|
SColData *srcCol = taosArrayGet(src, j);
|
||||||
|
SColData *dstCol = taosArrayGet(dst, j);
|
||||||
|
|
||||||
|
SColVal cv;
|
||||||
|
tColDataGetValue(srcCol, i, &cv);
|
||||||
|
code = tColDataAppendValue(dstCol, &cv);
|
||||||
|
if (code) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastKey = key;
|
||||||
|
} else { // update existing row
|
||||||
|
for (int32_t j = 0; j < taosArrayGetSize(src); j++) {
|
||||||
|
SColData *srcCol = taosArrayGet(src, j);
|
||||||
|
SColData *dstCol = taosArrayGet(dst, j);
|
||||||
|
|
||||||
|
SColVal cv;
|
||||||
|
tColDataGetValue(srcCol, i, &cv);
|
||||||
|
code = tColDataUpdateValue(dstCol, &cv, true);
|
||||||
|
if (code) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
iStart++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
if (code) {
|
||||||
|
taosArrayDestroyEx(dst, tColDataDestroy);
|
||||||
|
} else {
|
||||||
|
taosArrayDestroyEx(src, tColDataDestroy);
|
||||||
|
*colArr = dst;
|
||||||
|
}
|
||||||
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tColDataSortMerge(SArray *colDataArr) {
|
int32_t tColDataSortMerge(SArray **arr) {
|
||||||
|
SArray *colDataArr = *arr;
|
||||||
int32_t nColData = TARRAY_SIZE(colDataArr);
|
int32_t nColData = TARRAY_SIZE(colDataArr);
|
||||||
SColData *aColData = (SColData *)TARRAY_DATA(colDataArr);
|
SColData *aColData = (SColData *)TARRAY_DATA(colDataArr);
|
||||||
|
|
||||||
|
@ -3583,7 +3428,8 @@ int32_t tColDataSortMerge(SArray *colDataArr) {
|
||||||
|
|
||||||
// merge -------
|
// merge -------
|
||||||
if (doMerge) {
|
if (doMerge) {
|
||||||
tColDataMerge(aColData, nColData);
|
int32_t code = tColDataMerge(arr);
|
||||||
|
if (code) return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
|
|
@ -515,7 +515,7 @@ static int32_t taosLoadCfg(SConfig *pCfg, const char **envCmd, const char *input
|
||||||
int32_t taosAddClientLogCfg(SConfig *pCfg) {
|
int32_t taosAddClientLogCfg(SConfig *pCfg) {
|
||||||
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "configDir", configDir, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "configDir", configDir, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "scriptDir", configDir, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "scriptDir", configDir, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "logDir", tsLogDir, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
TAOS_CHECK_RETURN(cfgAddDir(pCfg, "logDir", tsLogDir, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "minimalLogDirGB", 1.0f, 0.001f, 10000000, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "minimalLogDirGB", 1.0f, 0.001f, 10000000, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
||||||
TAOS_CHECK_RETURN(
|
TAOS_CHECK_RETURN(
|
||||||
cfgAddInt32(pCfg, "numOfLogLines", tsNumOfLogLines, 1000, 2000000000, CFG_SCOPE_BOTH, CFG_DYN_ENT_BOTH));
|
cfgAddInt32(pCfg, "numOfLogLines", tsNumOfLogLines, 1000, 2000000000, CFG_SCOPE_BOTH, CFG_DYN_ENT_BOTH));
|
||||||
|
@ -638,7 +638,7 @@ static int32_t taosAddSystemCfg(SConfig *pCfg) {
|
||||||
TAOS_CHECK_RETURN(cfgAddLocale(pCfg, "locale", tsLocale, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
TAOS_CHECK_RETURN(cfgAddLocale(pCfg, "locale", tsLocale, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
||||||
TAOS_CHECK_RETURN(cfgAddCharset(pCfg, "charset", tsCharset, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
TAOS_CHECK_RETURN(cfgAddCharset(pCfg, "charset", tsCharset, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "assert", tsAssert, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "assert", tsAssert, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
||||||
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "enableCoreFile", 1, CFG_SCOPE_BOTH, CFG_DYN_CLIENT));
|
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "enableCoreFile", tsEnableCoreFile, CFG_SCOPE_BOTH, CFG_DYN_BOTH));
|
||||||
TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "numOfCores", tsNumOfCores, 1, 100000, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
TAOS_CHECK_RETURN(cfgAddFloat(pCfg, "numOfCores", tsNumOfCores, 1, 100000, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
|
|
||||||
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "ssd42", tsSSE42Supported, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
TAOS_CHECK_RETURN(cfgAddBool(pCfg, "ssd42", tsSSE42Supported, CFG_SCOPE_BOTH, CFG_DYN_NONE));
|
||||||
|
@ -1287,8 +1287,8 @@ static int32_t taosSetSystemCfg(SConfig *pCfg) {
|
||||||
osSetSystemLocale(locale, charset);
|
osSetSystemLocale(locale, charset);
|
||||||
|
|
||||||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "enableCoreFile");
|
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "enableCoreFile");
|
||||||
bool enableCore = pItem->bval;
|
tsEnableCoreFile = pItem->bval;
|
||||||
taosSetCoreDump(enableCore);
|
taosSetCoreDump(tsEnableCoreFile);
|
||||||
|
|
||||||
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "assert");
|
TAOS_CHECK_GET_CFG_ITEM(pCfg, pItem, "assert");
|
||||||
tsAssert = pItem->bval;
|
tsAssert = pItem->bval;
|
||||||
|
@ -1901,6 +1901,13 @@ static int32_t taosCfgDynamicOptionsForServer(SConfig *pCfg, const char *name) {
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strncasecmp(name, "enableCoreFile", 9) == 0) {
|
||||||
|
tsEnableCoreFile = pItem->bval;
|
||||||
|
taosSetCoreDump(tsEnableCoreFile);
|
||||||
|
uInfo("%s set to %d", name, tsEnableCoreFile);
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
if (strcasecmp("slowLogScope", name) == 0) {
|
if (strcasecmp("slowLogScope", name) == 0) {
|
||||||
int32_t scope = 0;
|
int32_t scope = 0;
|
||||||
TAOS_CHECK_GOTO(taosSetSlowLogScope(pItem->str, &scope), NULL, _exit);
|
TAOS_CHECK_GOTO(taosSetSlowLogScope(pItem->str, &scope), NULL, _exit);
|
||||||
|
@ -2009,9 +2016,9 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
|
||||||
}
|
}
|
||||||
case 'e': {
|
case 'e': {
|
||||||
if (strcasecmp("enableCoreFile", name) == 0) {
|
if (strcasecmp("enableCoreFile", name) == 0) {
|
||||||
bool enableCore = pItem->bval;
|
tsEnableCoreFile = pItem->bval;
|
||||||
taosSetCoreDump(enableCore);
|
taosSetCoreDump(tsEnableCoreFile);
|
||||||
uInfo("%s set to %d", name, enableCore);
|
uInfo("%s set to %d", name, tsEnableCoreFile);
|
||||||
matched = true;
|
matched = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2088,11 +2095,6 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
|
||||||
osSetSystemLocale(locale, charset);
|
osSetSystemLocale(locale, charset);
|
||||||
uInfo("locale set to '%s', charset set to '%s'", locale, charset);
|
uInfo("locale set to '%s', charset set to '%s'", locale, charset);
|
||||||
matched = true;
|
matched = true;
|
||||||
} else if (strcasecmp("logDir", name) == 0) {
|
|
||||||
uInfo("%s set from '%s' to '%s'", name, tsLogDir, pItem->str);
|
|
||||||
tstrncpy(tsLogDir, pItem->str, PATH_MAX);
|
|
||||||
TAOS_CHECK_GOTO(taosExpandDir(tsLogDir, tsLogDir, PATH_MAX), &lino, _out);
|
|
||||||
matched = true;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2205,7 +2207,6 @@ static int32_t taosCfgDynamicOptionsForClient(SConfig *pCfg, const char *name) {
|
||||||
{"compressMsgSize", &tsCompressMsgSize},
|
{"compressMsgSize", &tsCompressMsgSize},
|
||||||
{"countAlwaysReturnValue", &tsCountAlwaysReturnValue},
|
{"countAlwaysReturnValue", &tsCountAlwaysReturnValue},
|
||||||
{"crashReporting", &tsEnableCrashReport},
|
{"crashReporting", &tsEnableCrashReport},
|
||||||
{"enableCoreFile", &tsAsyncLog},
|
|
||||||
{"enableQueryHb", &tsEnableQueryHb},
|
{"enableQueryHb", &tsEnableQueryHb},
|
||||||
{"keepColumnName", &tsKeepColumnName},
|
{"keepColumnName", &tsKeepColumnName},
|
||||||
{"keepAliveIdle", &tsKeepAliveIdle},
|
{"keepAliveIdle", &tsKeepAliveIdle},
|
||||||
|
|
|
@ -566,30 +566,34 @@ int32_t tSerializeSClientHbBatchRsp(void *buf, int32_t bufLen, const SClientHbBa
|
||||||
int32_t tDeserializeSClientHbBatchRsp(void *buf, int32_t bufLen, SClientHbBatchRsp *pBatchRsp) {
|
int32_t tDeserializeSClientHbBatchRsp(void *buf, int32_t bufLen, SClientHbBatchRsp *pBatchRsp) {
|
||||||
SDecoder decoder = {0};
|
SDecoder decoder = {0};
|
||||||
tDecoderInit(&decoder, buf, bufLen);
|
tDecoderInit(&decoder, buf, bufLen);
|
||||||
|
int32_t ret = -1;
|
||||||
|
|
||||||
if (tStartDecode(&decoder) < 0) return -1;
|
if (tStartDecode(&decoder) < 0) goto _END;
|
||||||
if (tDecodeI64(&decoder, &pBatchRsp->reqId) < 0) return -1;
|
if (tDecodeI64(&decoder, &pBatchRsp->reqId) < 0) goto _END;
|
||||||
if (tDecodeI64(&decoder, &pBatchRsp->rspId) < 0) return -1;
|
if (tDecodeI64(&decoder, &pBatchRsp->rspId) < 0) goto _END;
|
||||||
if (tDecodeI32(&decoder, &pBatchRsp->svrTimestamp) < 0) return -1;
|
if (tDecodeI32(&decoder, &pBatchRsp->svrTimestamp) < 0) goto _END;
|
||||||
|
|
||||||
int32_t rspNum = 0;
|
int32_t rspNum = 0;
|
||||||
if (tDecodeI32(&decoder, &rspNum) < 0) return -1;
|
if (tDecodeI32(&decoder, &rspNum) < 0) goto _END;
|
||||||
if (pBatchRsp->rsps == NULL) {
|
if (pBatchRsp->rsps == NULL) {
|
||||||
if ((pBatchRsp->rsps = taosArrayInit(rspNum, sizeof(SClientHbRsp))) == NULL) return -1;
|
if ((pBatchRsp->rsps = taosArrayInit(rspNum, sizeof(SClientHbRsp))) == NULL) goto _END;
|
||||||
}
|
}
|
||||||
for (int32_t i = 0; i < rspNum; i++) {
|
for (int32_t i = 0; i < rspNum; i++) {
|
||||||
SClientHbRsp rsp = {0};
|
SClientHbRsp rsp = {0};
|
||||||
if (tDeserializeSClientHbRsp(&decoder, &rsp) < 0) return -1;
|
if (tDeserializeSClientHbRsp(&decoder, &rsp) < 0) goto _END;
|
||||||
if (taosArrayPush(pBatchRsp->rsps, &rsp) == NULL) return -1;
|
if (taosArrayPush(pBatchRsp->rsps, &rsp) == NULL) goto _END;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tDecodeIsEnd(&decoder)) {
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
if (tDeserializeSMonitorParas(&decoder, &pBatchRsp->monitorParas) < 0) return -1;
|
if (tDeserializeSMonitorParas(&decoder, &pBatchRsp->monitorParas) < 0) goto _END;
|
||||||
}
|
}
|
||||||
|
|
||||||
tEndDecode(&decoder);
|
tEndDecode(&decoder);
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
_END:
|
||||||
tDecoderClear(&decoder);
|
tDecoderClear(&decoder);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tSerializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) {
|
int32_t tSerializeSMCreateStbReq(void *buf, int32_t bufLen, SMCreateStbReq *pReq) {
|
||||||
|
@ -5258,44 +5262,47 @@ int32_t tSerializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) {
|
||||||
int32_t tDeserializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) {
|
int32_t tDeserializeSConnectRsp(void *buf, int32_t bufLen, SConnectRsp *pRsp) {
|
||||||
SDecoder decoder = {0};
|
SDecoder decoder = {0};
|
||||||
tDecoderInit(&decoder, buf, bufLen);
|
tDecoderInit(&decoder, buf, bufLen);
|
||||||
|
int32_t ret = -1;
|
||||||
|
|
||||||
if (tStartDecode(&decoder) < 0) return -1;
|
if (tStartDecode(&decoder) < 0) goto _END;
|
||||||
if (tDecodeI32(&decoder, &pRsp->acctId) < 0) return -1;
|
if (tDecodeI32(&decoder, &pRsp->acctId) < 0) goto _END;
|
||||||
if (tDecodeI64(&decoder, &pRsp->clusterId) < 0) return -1;
|
if (tDecodeI64(&decoder, &pRsp->clusterId) < 0) goto _END;
|
||||||
if (tDecodeU32(&decoder, &pRsp->connId) < 0) return -1;
|
if (tDecodeU32(&decoder, &pRsp->connId) < 0) goto _END;
|
||||||
if (tDecodeI32(&decoder, &pRsp->dnodeNum) < 0) return -1;
|
if (tDecodeI32(&decoder, &pRsp->dnodeNum) < 0) goto _END;
|
||||||
if (tDecodeI8(&decoder, &pRsp->superUser) < 0) return -1;
|
if (tDecodeI8(&decoder, &pRsp->superUser) < 0) goto _END;
|
||||||
if (tDecodeI8(&decoder, &pRsp->sysInfo) < 0) return -1;
|
if (tDecodeI8(&decoder, &pRsp->sysInfo) < 0) goto _END;
|
||||||
if (tDecodeI8(&decoder, &pRsp->connType) < 0) return -1;
|
if (tDecodeI8(&decoder, &pRsp->connType) < 0) goto _END;
|
||||||
if (tDecodeSEpSet(&decoder, &pRsp->epSet) < 0) return -1;
|
if (tDecodeSEpSet(&decoder,&pRsp->epSet) < 0) goto _END;
|
||||||
if (tDecodeI32(&decoder, &pRsp->svrTimestamp) < 0) return -1;
|
if (tDecodeI32(&decoder, &pRsp->svrTimestamp) < 0) goto _END;
|
||||||
if (tDecodeCStrTo(&decoder, pRsp->sVer) < 0) return -1;
|
if (tDecodeCStrTo(&decoder, pRsp->sVer) < 0) goto _END;
|
||||||
if (tDecodeCStrTo(&decoder, pRsp->sDetailVer) < 0) return -1;
|
if (tDecodeCStrTo(&decoder, pRsp->sDetailVer) < 0) goto _END;
|
||||||
|
|
||||||
if (!tDecodeIsEnd(&decoder)) {
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
if (tDecodeI32(&decoder, &pRsp->passVer) < 0) return -1;
|
if (tDecodeI32(&decoder, &pRsp->passVer) < 0) goto _END;
|
||||||
} else {
|
} else {
|
||||||
pRsp->passVer = 0;
|
pRsp->passVer = 0;
|
||||||
}
|
}
|
||||||
// since 3.0.7.0
|
// since 3.0.7.0
|
||||||
if (!tDecodeIsEnd(&decoder)) {
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
if (tDecodeI32(&decoder, &pRsp->authVer) < 0) return -1;
|
if (tDecodeI32(&decoder, &pRsp->authVer) < 0) goto _END;
|
||||||
} else {
|
} else {
|
||||||
pRsp->authVer = 0;
|
pRsp->authVer = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tDecodeIsEnd(&decoder)) {
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
if (tDecodeI64(&decoder, &pRsp->whiteListVer) < 0) return -1;
|
if (tDecodeI64(&decoder, &pRsp->whiteListVer) < 0) goto _END;
|
||||||
} else {
|
} else {
|
||||||
pRsp->whiteListVer = 0;
|
pRsp->whiteListVer = 0;
|
||||||
}
|
}
|
||||||
if (!tDecodeIsEnd(&decoder)) {
|
if (!tDecodeIsEnd(&decoder)) {
|
||||||
if (tDeserializeSMonitorParas(&decoder, &pRsp->monitorParas) < 0) return -1;
|
if (tDeserializeSMonitorParas(&decoder, &pRsp->monitorParas) < 0) goto _END;
|
||||||
}
|
}
|
||||||
tEndDecode(&decoder);
|
tEndDecode(&decoder);
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
_END:
|
||||||
tDecoderClear(&decoder);
|
tDecoderClear(&decoder);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tSerializeSMTimerMsg(void *buf, int32_t bufLen, SMTimerReq *pReq) {
|
int32_t tSerializeSMTimerMsg(void *buf, int32_t bufLen, SMTimerReq *pReq) {
|
||||||
|
|
|
@ -83,12 +83,12 @@ extern "C" {
|
||||||
}\
|
}\
|
||||||
}
|
}
|
||||||
|
|
||||||
#define dGFatal(param, ...) {if (dDebugFlag & DEBUG_FATAL) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dFatal(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGFatal(param, ...) {if (dDebugFlag & DEBUG_FATAL) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dFatal(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define dGError(param, ...) {if (dDebugFlag & DEBUG_ERROR) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dError(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGError(param, ...) {if (dDebugFlag & DEBUG_ERROR) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dError(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define dGWarn(param, ...) {if (dDebugFlag & DEBUG_WARN) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dWarn(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGWarn(param, ...) {if (dDebugFlag & DEBUG_WARN) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dWarn(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define dGInfo(param, ...) {if (dDebugFlag & DEBUG_INFO) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dInfo(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGInfo(param, ...) {if (dDebugFlag & DEBUG_INFO) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dInfo(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define dGDebug(param, ...) {if (dDebugFlag & DEBUG_DEBUG) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dDebug(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGDebug(param, ...) {if (dDebugFlag & DEBUG_DEBUG) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dDebug(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define dGTrace(param, ...) {if (dDebugFlag & DEBUG_TRACE) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dTrace(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define dGTrace(param, ...) {if (dDebugFlag & DEBUG_TRACE) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); dTrace(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|
|
@ -41,12 +41,12 @@ extern "C" {
|
||||||
#define mDebug(...) { if (mDebugFlag & DEBUG_DEBUG) { taosPrintLog("MND ", DEBUG_DEBUG, mDebugFlag, __VA_ARGS__); }}
|
#define mDebug(...) { if (mDebugFlag & DEBUG_DEBUG) { taosPrintLog("MND ", DEBUG_DEBUG, mDebugFlag, __VA_ARGS__); }}
|
||||||
#define mTrace(...) { if (mDebugFlag & DEBUG_TRACE) { taosPrintLog("MND ", DEBUG_TRACE, mDebugFlag, __VA_ARGS__); }}
|
#define mTrace(...) { if (mDebugFlag & DEBUG_TRACE) { taosPrintLog("MND ", DEBUG_TRACE, mDebugFlag, __VA_ARGS__); }}
|
||||||
|
|
||||||
#define mGFatal(param, ...) { if (mDebugFlag & DEBUG_FATAL){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mFatal(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGFatal(param, ...) { if (mDebugFlag & DEBUG_FATAL){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mFatal(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define mGError(param, ...) { if (mDebugFlag & DEBUG_ERROR){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mError(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGError(param, ...) { if (mDebugFlag & DEBUG_ERROR){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mError(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define mGWarn(param, ...) { if (mDebugFlag & DEBUG_WARN){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mWarn (param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGWarn(param, ...) { if (mDebugFlag & DEBUG_WARN){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mWarn (param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define mGInfo(param, ...) { if (mDebugFlag & DEBUG_INFO){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mInfo (param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGInfo(param, ...) { if (mDebugFlag & DEBUG_INFO){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mInfo (param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define mGDebug(param, ...) { if (mDebugFlag & DEBUG_DEBUG){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mDebug(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGDebug(param, ...) { if (mDebugFlag & DEBUG_DEBUG){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mDebug(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
#define mGTrace(param, ...) { if (mDebugFlag & DEBUG_TRACE){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mTrace(param ", qid:%s", __VA_ARGS__, buf);}}
|
#define mGTrace(param, ...) { if (mDebugFlag & DEBUG_TRACE){ char buf[40] = {0}; TRACE_TO_STR(trace, buf); mTrace(param ",QID:%s", __VA_ARGS__, buf);}}
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
#define SYSTABLE_SCH_TABLE_NAME_LEN ((TSDB_TABLE_NAME_LEN - 1) + VARSTR_HEADER_SIZE)
|
#define SYSTABLE_SCH_TABLE_NAME_LEN ((TSDB_TABLE_NAME_LEN - 1) + VARSTR_HEADER_SIZE)
|
||||||
|
|
|
@ -404,10 +404,14 @@ static int32_t mndProcessArbHbTimer(SRpcMsg *pReq) {
|
||||||
hbMembers = *(SArray **)pObj;
|
hbMembers = *(SArray **)pObj;
|
||||||
} else {
|
} else {
|
||||||
hbMembers = taosArrayInit(16, sizeof(SVArbHbReqMember));
|
hbMembers = taosArrayInit(16, sizeof(SVArbHbReqMember));
|
||||||
(void)taosHashPut(pDnodeHash, &dnodeId, sizeof(int32_t), &hbMembers, POINTER_BYTES);
|
if (taosHashPut(pDnodeHash, &dnodeId, sizeof(int32_t), &hbMembers, POINTER_BYTES) != 0) {
|
||||||
|
mError("dnodeId:%d, failed to push hb member inty]o hash, but conitnue next at this timer round", dnodeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
SVArbHbReqMember reqMember = {.vgId = pArbGroup->vgId, .hbSeq = pMember->state.nextHbSeq++};
|
SVArbHbReqMember reqMember = {.vgId = pArbGroup->vgId, .hbSeq = pMember->state.nextHbSeq++};
|
||||||
(void)taosArrayPush(hbMembers, &reqMember);
|
if (taosArrayPush(hbMembers, &reqMember) == NULL) {
|
||||||
|
mError("dnodeId:%d, failed to push hb member, but conitnue next at this timer round", dnodeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)taosThreadMutexUnlock(&pArbGroup->mutex);
|
(void)taosThreadMutexUnlock(&pArbGroup->mutex);
|
||||||
|
@ -998,7 +1002,9 @@ static int32_t mndUpdateArbHeartBeat(SMnode *pMnode, int32_t dnodeId, SArray *me
|
||||||
|
|
||||||
bool updateToken = mndUpdateArbGroupByHeartBeat(pGroup, pRspMember, nowMs, dnodeId, &newGroup);
|
bool updateToken = mndUpdateArbGroupByHeartBeat(pGroup, pRspMember, nowMs, dnodeId, &newGroup);
|
||||||
if (updateToken) {
|
if (updateToken) {
|
||||||
(void)taosArrayPush(pUpdateArray, &newGroup);
|
if (taosArrayPush(pUpdateArray, &newGroup) == NULL) {
|
||||||
|
mError("failed to push newGroup to updateArray, but continue at this hearbear");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbRelease(pMnode->pSdb, pGroup);
|
sdbRelease(pMnode->pSdb, pGroup);
|
||||||
|
|
|
@ -826,7 +826,9 @@ void mndCompactPullup(SMnode *pMnode) {
|
||||||
SCompactObj *pCompact = NULL;
|
SCompactObj *pCompact = NULL;
|
||||||
pIter = sdbFetch(pMnode->pSdb, SDB_COMPACT, pIter, (void **)&pCompact);
|
pIter = sdbFetch(pMnode->pSdb, SDB_COMPACT, pIter, (void **)&pCompact);
|
||||||
if (pIter == NULL) break;
|
if (pIter == NULL) break;
|
||||||
(void)taosArrayPush(pArray, &pCompact->compactId);
|
if (taosArrayPush(pArray, &pCompact->compactId) == NULL) {
|
||||||
|
mError("failed to push compact id:%d into array, but continue pull up", pCompact->compactId);
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pCompact);
|
sdbRelease(pSdb, pCompact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -334,9 +334,21 @@ static int32_t addEpSetInfo(SMnode *pMnode, SMqConsumerObj *pConsumer, int32_t e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SMqSubVgEp vgEp = {.epSet = pVgEp->epSet, .vgId = pVgEp->vgId, .offset = -1};
|
SMqSubVgEp vgEp = {.epSet = pVgEp->epSet, .vgId = pVgEp->vgId, .offset = -1};
|
||||||
(void)taosArrayPush(topicEp.vgs, &vgEp);
|
if (taosArrayPush(topicEp.vgs, &vgEp) == NULL) {
|
||||||
|
taosArrayDestroy(topicEp.vgs);
|
||||||
|
taosRUnLockLatch(&pConsumer->lock);
|
||||||
|
taosRUnLockLatch(&pSub->lock);
|
||||||
|
mndReleaseSubscribe(pMnode, pSub);
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (taosArrayPush(rsp->topics, &topicEp) == NULL) {
|
||||||
|
taosArrayDestroy(topicEp.vgs);
|
||||||
|
taosRUnLockLatch(&pConsumer->lock);
|
||||||
|
taosRUnLockLatch(&pSub->lock);
|
||||||
|
mndReleaseSubscribe(pMnode, pSub);
|
||||||
|
return TSDB_CODE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
(void)taosArrayPush(rsp->topics, &topicEp);
|
|
||||||
taosRUnLockLatch(&pSub->lock);
|
taosRUnLockLatch(&pSub->lock);
|
||||||
mndReleaseSubscribe(pMnode, pSub);
|
mndReleaseSubscribe(pMnode, pSub);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1710,7 +1710,9 @@ void mndBuildDBVgroupInfo(SDbObj *pDb, SMnode *pMnode, SArray *pVgList) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vindex++;
|
vindex++;
|
||||||
(void)taosArrayPush(pVgList, &vgInfo);
|
if (taosArrayPush(pVgList, &vgInfo) == NULL) {
|
||||||
|
mError("db:%s, failed to push vgInfo to array, vgId:%d, but continue next", pDb->name, vgInfo.vgId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sdbRelease(pSdb, pVgroup);
|
sdbRelease(pSdb, pVgroup);
|
||||||
|
@ -1856,7 +1858,10 @@ int32_t mndValidateDbInfo(SMnode *pMnode, SDbCacheInfo *pDbs, int32_t numOfDbs,
|
||||||
|
|
||||||
rsp.useDbRsp->vgNum = taosArrayGetSize(rsp.useDbRsp->pVgroupInfos);
|
rsp.useDbRsp->vgNum = taosArrayGetSize(rsp.useDbRsp->pVgroupInfos);
|
||||||
|
|
||||||
(void)taosArrayPush(batchRsp.pArray, &rsp);
|
if (taosArrayPush(batchRsp.pArray, &rsp) == NULL) {
|
||||||
|
if (terrno != 0) code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1868,7 +1873,10 @@ int32_t mndValidateDbInfo(SMnode *pMnode, SDbCacheInfo *pDbs, int32_t numOfDbs,
|
||||||
(void)memcpy(rsp.useDbRsp->db, pDbCacheInfo->dbFName, TSDB_DB_FNAME_LEN);
|
(void)memcpy(rsp.useDbRsp->db, pDbCacheInfo->dbFName, TSDB_DB_FNAME_LEN);
|
||||||
rsp.useDbRsp->uid = pDbCacheInfo->dbId;
|
rsp.useDbRsp->uid = pDbCacheInfo->dbId;
|
||||||
rsp.useDbRsp->vgVersion = -1;
|
rsp.useDbRsp->vgVersion = -1;
|
||||||
(void)taosArrayPush(batchRsp.pArray, &rsp);
|
if (taosArrayPush(batchRsp.pArray, &rsp) == NULL) {
|
||||||
|
if (terrno != 0) code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1940,7 +1948,11 @@ int32_t mndValidateDbInfo(SMnode *pMnode, SDbCacheInfo *pDbs, int32_t numOfDbs,
|
||||||
rsp.useDbRsp->hashSuffix = pDb->cfg.hashSuffix;
|
rsp.useDbRsp->hashSuffix = pDb->cfg.hashSuffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)taosArrayPush(batchRsp.pArray, &rsp);
|
if (taosArrayPush(batchRsp.pArray, &rsp) == NULL) {
|
||||||
|
mndReleaseDb(pMnode, pDb);
|
||||||
|
if (terrno != 0) code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
mndReleaseDb(pMnode, pDb);
|
mndReleaseDb(pMnode, pDb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -430,7 +430,9 @@ static void mndGetDnodeEps(SMnode *pMnode, SArray *pDnodeEps) {
|
||||||
if (mndIsMnode(pMnode, pDnode->id)) {
|
if (mndIsMnode(pMnode, pDnode->id)) {
|
||||||
dnodeEp.isMnode = 1;
|
dnodeEp.isMnode = 1;
|
||||||
}
|
}
|
||||||
(void)taosArrayPush(pDnodeEps, &dnodeEp);
|
if (taosArrayPush(pDnodeEps, &dnodeEp) == NULL) {
|
||||||
|
mError("failed to put ep into array, but continue at this call");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -991,7 +993,12 @@ static int32_t mndProcessDnodeListReq(SRpcMsg *pReq) {
|
||||||
tstrncpy(epSet.eps[0].fqdn, pObj->fqdn, TSDB_FQDN_LEN);
|
tstrncpy(epSet.eps[0].fqdn, pObj->fqdn, TSDB_FQDN_LEN);
|
||||||
epSet.eps[0].port = pObj->port;
|
epSet.eps[0].port = pObj->port;
|
||||||
|
|
||||||
(void)taosArrayPush(rsp.dnodeList, &epSet);
|
if (taosArrayPush(rsp.dnodeList, &epSet) == NULL) {
|
||||||
|
if (terrno != 0) code = terrno;
|
||||||
|
sdbRelease(pSdb, pObj);
|
||||||
|
sdbCancelFetch(pSdb, pIter);
|
||||||
|
goto _OVER;
|
||||||
|
}
|
||||||
|
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
}
|
}
|
||||||
|
@ -1845,7 +1852,9 @@ SArray *mndGetAllDnodeFqdns(SMnode *pMnode) {
|
||||||
if (pIter == NULL) break;
|
if (pIter == NULL) break;
|
||||||
|
|
||||||
char *fqdn = taosStrdup(pObj->fqdn);
|
char *fqdn = taosStrdup(pObj->fqdn);
|
||||||
(void)taosArrayPush(fqdns, &fqdn);
|
if (taosArrayPush(fqdns, &fqdn) == NULL) {
|
||||||
|
mError("failed to fqdn into array, but continue at this time");
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
}
|
}
|
||||||
return fqdns;
|
return fqdns;
|
||||||
|
|
|
@ -991,7 +991,9 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(desc.status, "offline", sizeof(desc.status));
|
tstrncpy(desc.status, "offline", sizeof(desc.status));
|
||||||
}
|
}
|
||||||
(void)taosArrayPush(pClusterInfo->dnodes, &desc);
|
if (taosArrayPush(pClusterInfo->dnodes, &desc) == NULL) {
|
||||||
|
mError("failed put dnode into array, but continue at this monitor report")
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1017,7 +1019,9 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
|
||||||
tstrncpy(desc.role, syncStr(pObj->syncState), sizeof(desc.role));
|
tstrncpy(desc.role, syncStr(pObj->syncState), sizeof(desc.role));
|
||||||
desc.syncState = pObj->syncState;
|
desc.syncState = pObj->syncState;
|
||||||
}
|
}
|
||||||
(void)taosArrayPush(pClusterInfo->mnodes, &desc);
|
if (taosArrayPush(pClusterInfo->mnodes, &desc) == NULL) {
|
||||||
|
mError("failed to put mnode into array, but continue at this monitor report");
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1057,7 +1061,9 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
|
||||||
pClusterInfo->vnodes_total++;
|
pClusterInfo->vnodes_total++;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)taosArrayPush(pVgroupInfo->vgroups, &desc);
|
if (taosArrayPush(pVgroupInfo->vgroups, &desc) == NULL) {
|
||||||
|
mError("failed to put vgroup into array, but continue at this monitor report")
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pVgroup);
|
sdbRelease(pSdb, pVgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1078,7 +1084,9 @@ int32_t mndGetMonitorInfo(SMnode *pMnode, SMonClusterInfo *pClusterInfo, SMonVgr
|
||||||
(void)tNameFromString(&name2, pStb->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
(void)tNameFromString(&name2, pStb->name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
|
||||||
tstrncpy(desc.stb_name, tNameGetTableName(&name2), TSDB_TABLE_NAME_LEN);
|
tstrncpy(desc.stb_name, tNameGetTableName(&name2), TSDB_TABLE_NAME_LEN);
|
||||||
|
|
||||||
(void)taosArrayPush(pStbInfo->stbs, &desc);
|
if (taosArrayPush(pStbInfo->stbs, &desc) == NULL) {
|
||||||
|
mError("failed to put stb into array, but continue at this monitor report");
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pStb);
|
sdbRelease(pSdb, pStb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -546,8 +546,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
|
|
||||||
int32_t kvNum = taosHashGetSize(pHbReq->info);
|
int32_t kvNum = taosHashGetSize(pHbReq->info);
|
||||||
if (NULL == pHbReq->info || kvNum <= 0) {
|
if (NULL == pHbReq->info || kvNum <= 0) {
|
||||||
// TODO return value
|
if (taosArrayPush(pBatchRsp->rsps, &hbRsp) == NULL) {
|
||||||
(void)taosArrayPush(pBatchRsp->rsps, &hbRsp);
|
mError("failed to put rsp into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -597,7 +598,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
pObj->ipWhiteListVer);
|
pObj->ipWhiteListVer);
|
||||||
if (rspMsg && rspLen > 0) {
|
if (rspMsg && rspLen > 0) {
|
||||||
SKv kv1 = {.key = HEARTBEAT_KEY_USER_AUTHINFO, .valueLen = rspLen, .value = rspMsg};
|
SKv kv1 = {.key = HEARTBEAT_KEY_USER_AUTHINFO, .valueLen = rspLen, .value = rspMsg};
|
||||||
(void)taosArrayPush(hbRsp.info, &kv1);
|
if (taosArrayPush(hbRsp.info, &kv1) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -607,7 +610,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
(void)mndValidateDbInfo(pMnode, kv->value, kv->valueLen / sizeof(SDbCacheInfo), &rspMsg, &rspLen);
|
(void)mndValidateDbInfo(pMnode, kv->value, kv->valueLen / sizeof(SDbCacheInfo), &rspMsg, &rspLen);
|
||||||
if (rspMsg && rspLen > 0) {
|
if (rspMsg && rspLen > 0) {
|
||||||
SKv kv1 = {.key = HEARTBEAT_KEY_DBINFO, .valueLen = rspLen, .value = rspMsg};
|
SKv kv1 = {.key = HEARTBEAT_KEY_DBINFO, .valueLen = rspLen, .value = rspMsg};
|
||||||
(void)taosArrayPush(hbRsp.info, &kv1);
|
if (taosArrayPush(hbRsp.info, &kv1) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -617,7 +622,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
(void)mndValidateStbInfo(pMnode, kv->value, kv->valueLen / sizeof(SSTableVersion), &rspMsg, &rspLen);
|
(void)mndValidateStbInfo(pMnode, kv->value, kv->valueLen / sizeof(SSTableVersion), &rspMsg, &rspLen);
|
||||||
if (rspMsg && rspLen > 0) {
|
if (rspMsg && rspLen > 0) {
|
||||||
SKv kv1 = {.key = HEARTBEAT_KEY_STBINFO, .valueLen = rspLen, .value = rspMsg};
|
SKv kv1 = {.key = HEARTBEAT_KEY_STBINFO, .valueLen = rspLen, .value = rspMsg};
|
||||||
(void)taosArrayPush(hbRsp.info, &kv1);
|
if (taosArrayPush(hbRsp.info, &kv1) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -635,7 +642,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
(void)mndValidateViewInfo(pMnode, kv->value, kv->valueLen / sizeof(SViewVersion), &rspMsg, &rspLen);
|
(void)mndValidateViewInfo(pMnode, kv->value, kv->valueLen / sizeof(SViewVersion), &rspMsg, &rspLen);
|
||||||
if (rspMsg && rspLen > 0) {
|
if (rspMsg && rspLen > 0) {
|
||||||
SKv kv1 = {.key = HEARTBEAT_KEY_VIEWINFO, .valueLen = rspLen, .value = rspMsg};
|
SKv kv1 = {.key = HEARTBEAT_KEY_VIEWINFO, .valueLen = rspLen, .value = rspMsg};
|
||||||
(void)taosArrayPush(hbRsp.info, &kv1);
|
if (taosArrayPush(hbRsp.info, &kv1) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -646,7 +655,9 @@ static int32_t mndProcessQueryHeartBeat(SMnode *pMnode, SRpcMsg *pMsg, SClientHb
|
||||||
(void)mndValidateTSMAInfo(pMnode, kv->value, kv->valueLen / sizeof(STSMAVersion), &rspMsg, &rspLen);
|
(void)mndValidateTSMAInfo(pMnode, kv->value, kv->valueLen / sizeof(STSMAVersion), &rspMsg, &rspLen);
|
||||||
if (rspMsg && rspLen > 0) {
|
if (rspMsg && rspLen > 0) {
|
||||||
SKv kv = {.key = HEARTBEAT_KEY_TSMA, .valueLen = rspLen, .value = rspMsg};
|
SKv kv = {.key = HEARTBEAT_KEY_TSMA, .valueLen = rspLen, .value = rspMsg};
|
||||||
(void)taosArrayPush(hbRsp.info, &kv);
|
if (taosArrayPush(hbRsp.info, &kv) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -706,7 +717,9 @@ static int32_t mndProcessHeartBeatReq(SRpcMsg *pReq) {
|
||||||
} else if (pHbReq->connKey.connType == CONN_TYPE__TMQ) {
|
} else if (pHbReq->connKey.connType == CONN_TYPE__TMQ) {
|
||||||
SClientHbRsp *pRsp = mndMqHbBuildRsp(pMnode, pHbReq);
|
SClientHbRsp *pRsp = mndMqHbBuildRsp(pMnode, pHbReq);
|
||||||
if (pRsp != NULL) {
|
if (pRsp != NULL) {
|
||||||
(void)taosArrayPush(batchRsp.rsps, pRsp);
|
if (taosArrayPush(batchRsp.rsps, pRsp) == NULL) {
|
||||||
|
mError("failed to put kv into array, but continue at this heartbeat");
|
||||||
|
}
|
||||||
taosMemoryFree(pRsp);
|
taosMemoryFree(pRsp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -498,7 +498,12 @@ int32_t mndCreateQnodeList(SMnode *pMnode, SArray **pList, int32_t limit) {
|
||||||
nodeLoad.addr.epSet.eps[0].port = pObj->pDnode->port;
|
nodeLoad.addr.epSet.eps[0].port = pObj->pDnode->port;
|
||||||
nodeLoad.load = QNODE_LOAD_VALUE(pObj);
|
nodeLoad.load = QNODE_LOAD_VALUE(pObj);
|
||||||
|
|
||||||
(void)taosArrayPush(qnodeList, &nodeLoad);
|
if (taosArrayPush(qnodeList, &nodeLoad) == NULL) {
|
||||||
|
sdbRelease(pSdb, pObj);
|
||||||
|
sdbCancelFetch(pSdb, pIter);
|
||||||
|
if (terrno != 0) code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
numOfRows++;
|
numOfRows++;
|
||||||
sdbRelease(pSdb, pObj);
|
sdbRelease(pSdb, pObj);
|
||||||
|
|
|
@ -634,7 +634,10 @@ static void bindSourceSink(SStreamObj* pStream, SMnode* pMnode, SArray* tasks, b
|
||||||
static void bindTwoLevel(SArray* tasks, int32_t begin, int32_t end) {
|
static void bindTwoLevel(SArray* tasks, int32_t begin, int32_t end) {
|
||||||
int32_t code = 0;
|
int32_t code = 0;
|
||||||
size_t size = taosArrayGetSize(tasks);
|
size_t size = taosArrayGetSize(tasks);
|
||||||
ASSERT(size >= 2);
|
if (size < 2) {
|
||||||
|
mError("task list size is less than 2");
|
||||||
|
return;
|
||||||
|
}
|
||||||
SArray* pDownTaskList = taosArrayGetP(tasks, size - 1);
|
SArray* pDownTaskList = taosArrayGetP(tasks, size - 1);
|
||||||
SArray* pUpTaskList = taosArrayGetP(tasks, size - 2);
|
SArray* pUpTaskList = taosArrayGetP(tasks, size - 2);
|
||||||
|
|
||||||
|
|
|
@ -1521,7 +1521,7 @@ static void mndCancelRetrieveIdx(SMnode *pMnode, void *pIter) {
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
SSdb *pSdb = pMnode->pSdb;
|
SSdb *pSdb = pMnode->pSdb;
|
||||||
sdbCancelFetch(pSdb, p->pSmaIter);
|
sdbCancelFetch(pSdb, p->pSmaIter);
|
||||||
sdbCancelFetch(pSdb, p->pIdxIter);
|
sdbCancelFetchByType(pSdb, p->pIdxIter, SDB_IDX);
|
||||||
}
|
}
|
||||||
taosMemoryFree(p);
|
taosMemoryFree(p);
|
||||||
}
|
}
|
||||||
|
|
|
@ -278,7 +278,7 @@ static SSdbRow *mndStbActionDecode(SSdbRaw *pRaw) {
|
||||||
for (int32_t i = 0; i < pStb->numOfFuncs; ++i) {
|
for (int32_t i = 0; i < pStb->numOfFuncs; ++i) {
|
||||||
char funcName[TSDB_FUNC_NAME_LEN] = {0};
|
char funcName[TSDB_FUNC_NAME_LEN] = {0};
|
||||||
SDB_GET_BINARY(pRaw, dataPos, funcName, TSDB_FUNC_NAME_LEN, _OVER)
|
SDB_GET_BINARY(pRaw, dataPos, funcName, TSDB_FUNC_NAME_LEN, _OVER)
|
||||||
(void)taosArrayPush(pStb->pFuncs, funcName);
|
if (taosArrayPush(pStb->pFuncs, funcName) == NULL) goto _OVER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pStb->commentLen > 0) {
|
if (pStb->commentLen > 0) {
|
||||||
|
@ -3069,7 +3069,10 @@ int32_t mndValidateStbInfo(SMnode *pMnode, SSTableVersion *pStbVersions, int32_t
|
||||||
tstrncpy(metaRsp.dbFName, pStbVersion->dbFName, sizeof(metaRsp.dbFName));
|
tstrncpy(metaRsp.dbFName, pStbVersion->dbFName, sizeof(metaRsp.dbFName));
|
||||||
tstrncpy(metaRsp.tbName, pStbVersion->stbName, sizeof(metaRsp.tbName));
|
tstrncpy(metaRsp.tbName, pStbVersion->stbName, sizeof(metaRsp.tbName));
|
||||||
tstrncpy(metaRsp.stbName, pStbVersion->stbName, sizeof(metaRsp.stbName));
|
tstrncpy(metaRsp.stbName, pStbVersion->stbName, sizeof(metaRsp.stbName));
|
||||||
(void)taosArrayPush(hbRsp.pMetaRsp, &metaRsp);
|
if (taosArrayPush(hbRsp.pMetaRsp, &metaRsp) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3082,11 +3085,17 @@ int32_t mndValidateStbInfo(SMnode *pMnode, SSTableVersion *pStbVersions, int32_t
|
||||||
tstrncpy(metaRsp.dbFName, pStbVersion->dbFName, sizeof(metaRsp.dbFName));
|
tstrncpy(metaRsp.dbFName, pStbVersion->dbFName, sizeof(metaRsp.dbFName));
|
||||||
tstrncpy(metaRsp.tbName, pStbVersion->stbName, sizeof(metaRsp.tbName));
|
tstrncpy(metaRsp.tbName, pStbVersion->stbName, sizeof(metaRsp.tbName));
|
||||||
tstrncpy(metaRsp.stbName, pStbVersion->stbName, sizeof(metaRsp.stbName));
|
tstrncpy(metaRsp.stbName, pStbVersion->stbName, sizeof(metaRsp.stbName));
|
||||||
(void)taosArrayPush(hbRsp.pMetaRsp, &metaRsp);
|
if (taosArrayPush(hbRsp.pMetaRsp, &metaRsp) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)taosArrayPush(hbRsp.pMetaRsp, &metaRsp);
|
if (taosArrayPush(hbRsp.pMetaRsp, &metaRsp) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sma) {
|
if (sma) {
|
||||||
|
@ -3110,7 +3119,10 @@ int32_t mndValidateStbInfo(SMnode *pMnode, SSTableVersion *pStbVersions, int32_t
|
||||||
strcpy(indexRsp.dbFName, pStbVersion->dbFName);
|
strcpy(indexRsp.dbFName, pStbVersion->dbFName);
|
||||||
strcpy(indexRsp.tbName, pStbVersion->stbName);
|
strcpy(indexRsp.tbName, pStbVersion->stbName);
|
||||||
|
|
||||||
(void)taosArrayPush(hbRsp.pIndexRsp, &indexRsp);
|
if (taosArrayPush(hbRsp.pIndexRsp, &indexRsp) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4313,7 +4325,12 @@ static int32_t mndDropTbAddTsmaResTbsForSingleVg(SMnode *pMnode, SMndDropTbsWith
|
||||||
} else {
|
} else {
|
||||||
info.dbInfo = *pDbInfo;
|
info.dbInfo = *pDbInfo;
|
||||||
}
|
}
|
||||||
(void)taosArrayPush(pInfos->pTsmaInfos, &info);
|
if (taosArrayPush(pInfos->pTsmaInfos, &info) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
sdbCancelFetch(pMnode->pSdb, pIter);
|
||||||
|
sdbRelease(pMnode->pSdb, pSma);
|
||||||
|
goto _end;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sdbRelease(pMnode->pSdb, pSma);
|
sdbRelease(pMnode->pSdb, pSma);
|
||||||
}
|
}
|
||||||
|
@ -4333,7 +4350,10 @@ static int32_t mndDropTbAddTsmaResTbsForSingleVg(SMnode *pMnode, SMndDropTbsWith
|
||||||
taosGetTbHashVal(buf, len, pInfo->dbInfo.hashMethod, pInfo->dbInfo.hashPrefix, pInfo->dbInfo.hashSuffix);
|
taosGetTbHashVal(buf, len, pInfo->dbInfo.hashMethod, pInfo->dbInfo.hashPrefix, pInfo->dbInfo.hashSuffix);
|
||||||
const SVgroupInfo *pVgInfo = taosArraySearch(pInfo->dbInfo.dbVgInfos, &hashVal, vgHashValCmp, TD_EQ);
|
const SVgroupInfo *pVgInfo = taosArraySearch(pInfo->dbInfo.dbVgInfos, &hashVal, vgHashValCmp, TD_EQ);
|
||||||
void *p = taosStrdup(buf + strlen(pInfo->tsmaResTbDbFName) + TSDB_NAME_DELIMITER_LEN);
|
void *p = taosStrdup(buf + strlen(pInfo->tsmaResTbDbFName) + TSDB_NAME_DELIMITER_LEN);
|
||||||
(void)taosArrayPush(pCtx->pResTbNames, &p);
|
if (taosArrayPush(pCtx->pResTbNames, &p) == NULL) {
|
||||||
|
code = terrno;
|
||||||
|
goto _end;
|
||||||
|
}
|
||||||
TAOS_CHECK_GOTO(mndDropTbAdd(pMnode, pCtx->pVgMap, pVgInfo, p, pInfo->suid, true), NULL, _end);
|
TAOS_CHECK_GOTO(mndDropTbAdd(pMnode, pCtx->pVgMap, pVgInfo, p, pInfo->suid, true), NULL, _end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1208,7 +1208,11 @@ static int32_t mndCheckTaskAndNodeStatus(SMnode *pMnode) {
|
||||||
streamMutexLock(&execInfo.lock);
|
streamMutexLock(&execInfo.lock);
|
||||||
if (taosArrayGetSize(execInfo.pNodeList) == 0) {
|
if (taosArrayGetSize(execInfo.pNodeList) == 0) {
|
||||||
mDebug("stream task node change checking done, no vgroups exist, do nothing");
|
mDebug("stream task node change checking done, no vgroups exist, do nothing");
|
||||||
ASSERT(taosArrayGetSize(execInfo.pTaskList) == 0);
|
if (taosArrayGetSize(execInfo.pTaskList) != 0) {
|
||||||
|
streamMutexUnlock(&execInfo.lock);
|
||||||
|
mError("stream task node change checking done, no vgroups exist, but task list is not empty");
|
||||||
|
return TSDB_CODE_FAILED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SArray *pInvalidList = taosArrayInit(4, sizeof(STaskId));
|
SArray *pInvalidList = taosArrayInit(4, sizeof(STaskId));
|
||||||
|
@ -2163,7 +2167,9 @@ static int32_t refreshNodeListFromExistedStreams(SMnode *pMnode, SArray *pNodeLi
|
||||||
|
|
||||||
SNodeEntry entry = {.hbTimestamp = -1, .nodeId = pTask->info.nodeId, .lastHbMsgId = -1};
|
SNodeEntry entry = {.hbTimestamp = -1, .nodeId = pTask->info.nodeId, .lastHbMsgId = -1};
|
||||||
epsetAssign(&entry.epset, &pTask->info.epSet);
|
epsetAssign(&entry.epset, &pTask->info.epSet);
|
||||||
(void)taosHashPut(pHash, &entry.nodeId, sizeof(entry.nodeId), &entry, sizeof(entry));
|
if (taosHashPut(pHash, &entry.nodeId, sizeof(entry.nodeId), &entry, sizeof(entry)) != 0) {
|
||||||
|
mError("failed to put entry into hash map, nodeId:%d", entry.nodeId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyStreamTaskIter(pTaskIter);
|
destroyStreamTaskIter(pTaskIter);
|
||||||
|
@ -2788,7 +2794,13 @@ int32_t mndProcessConsensusInTmr(SRpcMsg *pMsg) {
|
||||||
if (((now - pe->ts) >= 10 * 1000) || allSame) {
|
if (((now - pe->ts) >= 10 * 1000) || allSame) {
|
||||||
mDebug("s-task:0x%x sendTs:%" PRId64 " wait %.2fs and all tasks have same checkpointId", pe->req.taskId,
|
mDebug("s-task:0x%x sendTs:%" PRId64 " wait %.2fs and all tasks have same checkpointId", pe->req.taskId,
|
||||||
pe->req.startTs, (now - pe->ts) / 1000.0);
|
pe->req.startTs, (now - pe->ts) / 1000.0);
|
||||||
ASSERT(chkId <= pe->req.checkpointId);
|
if (chkId > pe->req.checkpointId) {
|
||||||
|
streamMutexUnlock(&execInfo.lock);
|
||||||
|
taosArrayDestroy(pStreamList);
|
||||||
|
mError("s-task:0x%x checkpointId:%" PRId64 " is updated to %" PRId64 ", update it", pe->req.taskId,
|
||||||
|
pe->req.checkpointId, chkId);
|
||||||
|
return TSDB_CODE_FAILED;
|
||||||
|
}
|
||||||
code = mndCreateSetConsensusChkptIdTrans(pMnode, pStream, pe->req.taskId, chkId, pe->req.startTs);
|
code = mndCreateSetConsensusChkptIdTrans(pMnode, pStream, pe->req.taskId, chkId, pe->req.startTs);
|
||||||
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_ACTION_IN_PROGRESS) {
|
if (code != TSDB_CODE_SUCCESS && code != TSDB_CODE_ACTION_IN_PROGRESS) {
|
||||||
mError("failed to create consensus-checkpoint trans, stream:0x%" PRIx64, pStream->uid);
|
mError("failed to create consensus-checkpoint trans, stream:0x%" PRIx64, pStream->uid);
|
||||||
|
@ -2828,7 +2840,12 @@ int32_t mndProcessConsensusInTmr(SRpcMsg *pMsg) {
|
||||||
|
|
||||||
if (taosArrayGetSize(pInfo->pTaskList) == 0) {
|
if (taosArrayGetSize(pInfo->pTaskList) == 0) {
|
||||||
mndClearConsensusRspEntry(pInfo);
|
mndClearConsensusRspEntry(pInfo);
|
||||||
ASSERT(streamId != -1);
|
if (streamId == -1) {
|
||||||
|
streamMutexUnlock(&execInfo.lock);
|
||||||
|
taosArrayDestroy(pStreamList);
|
||||||
|
mError("streamId is -1, streamId:%" PRIx64, pInfo->streamId);
|
||||||
|
return TSDB_CODE_FAILED;
|
||||||
|
}
|
||||||
void* p = taosArrayPush(pStreamList, &streamId);
|
void* p = taosArrayPush(pStreamList, &streamId);
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
mError("failed to put into stream list, stream:0x%" PRIx64, streamId);
|
mError("failed to put into stream list, stream:0x%" PRIx64, streamId);
|
||||||
|
|
|
@ -13,12 +13,13 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "mndDb.h"
|
||||||
|
#include "mndStb.h"
|
||||||
#include "mndStream.h"
|
#include "mndStream.h"
|
||||||
#include "mndTrans.h"
|
#include "mndTrans.h"
|
||||||
#include "tmisce.h"
|
|
||||||
#include "mndVgroup.h"
|
#include "mndVgroup.h"
|
||||||
#include "mndStb.h"
|
#include "taoserror.h"
|
||||||
#include "mndDb.h"
|
#include "tmisce.h"
|
||||||
|
|
||||||
struct SStreamTaskIter {
|
struct SStreamTaskIter {
|
||||||
SStreamObj *pStream;
|
SStreamObj *pStream;
|
||||||
|
@ -905,7 +906,12 @@ void removeStreamTasksInBuf(SStreamObj *pStream, SStreamExecInfo *pExecNode) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(taosHashGetSize(pExecNode->pTaskMap) == taosArrayGetSize(pExecNode->pTaskList));
|
if (taosHashGetSize(pExecNode->pTaskMap) != taosArrayGetSize(pExecNode->pTaskList)) {
|
||||||
|
streamMutexUnlock(&pExecNode->lock);
|
||||||
|
destroyStreamTaskIter(pIter);
|
||||||
|
mError("task map size, task list size, not equal");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 2. remove stream entry in consensus hash table and checkpoint-report hash table
|
// 2. remove stream entry in consensus hash table and checkpoint-report hash table
|
||||||
(void) mndClearConsensusCheckpointId(execInfo.pStreamConsensus, pStream->uid);
|
(void) mndClearConsensusCheckpointId(execInfo.pStreamConsensus, pStream->uid);
|
||||||
|
|
|
@ -312,7 +312,12 @@ void mndRestoreFinish(const SSyncFSM *pFsm, const SyncIndex commitIdx) {
|
||||||
}
|
}
|
||||||
(void)mndRefreshUserIpWhiteList(pMnode);
|
(void)mndRefreshUserIpWhiteList(pMnode);
|
||||||
|
|
||||||
ASSERT(commitIdx == mndSyncAppliedIndex(pFsm));
|
SyncIndex fsmIndex = mndSyncAppliedIndex(pFsm);
|
||||||
|
if (commitIdx != fsmIndex) {
|
||||||
|
mError("vgId:1, sync restore finished, but commitIdx:%" PRId64 " is not equal to appliedIdx:%" PRId64, commitIdx,
|
||||||
|
fsmIndex);
|
||||||
|
mndSetRestored(pMnode, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t mndSnapshotStartRead(const SSyncFSM *pFsm, void *pParam, void **ppReader) {
|
int32_t mndSnapshotStartRead(const SSyncFSM *pFsm, void *pParam, void **ppReader) {
|
||||||
|
|
|
@ -270,7 +270,9 @@ SSdbRow *mndTopicActionDecode(SSdbRaw *pRaw) {
|
||||||
}
|
}
|
||||||
int16_t colId;
|
int16_t colId;
|
||||||
SDB_GET_INT16(pRaw, dataPos, &colId, TOPIC_DECODE_OVER);
|
SDB_GET_INT16(pRaw, dataPos, &colId, TOPIC_DECODE_OVER);
|
||||||
(void)taosArrayPush(pTopic->ntbColIds, &colId);
|
if (taosArrayPush(pTopic->ntbColIds, &colId) == NULL) {
|
||||||
|
goto TOPIC_DECODE_OVER;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SDB_GET_INT64(pRaw, dataPos, &pTopic->ctbStbUid, TOPIC_DECODE_OVER);
|
SDB_GET_INT64(pRaw, dataPos, &pTopic->ctbStbUid, TOPIC_DECODE_OVER);
|
||||||
|
|
|
@ -768,7 +768,9 @@ void mndTransSetDbName(STrans *pTrans, const char *dbname, const char *stbname)
|
||||||
}
|
}
|
||||||
|
|
||||||
void mndTransAddArbGroupId(STrans *pTrans, int32_t groupId) {
|
void mndTransAddArbGroupId(STrans *pTrans, int32_t groupId) {
|
||||||
(void)taosHashPut(pTrans->arbGroupIds, &groupId, sizeof(int32_t), NULL, 0);
|
if (taosHashPut(pTrans->arbGroupIds, &groupId, sizeof(int32_t), NULL, 0) != 0) {
|
||||||
|
mError("trans:%d, failed to put groupid into hash, groupId:%d", pTrans->id, groupId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mndTransSetSerial(STrans *pTrans) { pTrans->exec = TRN_EXEC_SERIAL; }
|
void mndTransSetSerial(STrans *pTrans) { pTrans->exec = TRN_EXEC_SERIAL; }
|
||||||
|
@ -1905,7 +1907,9 @@ void mndTransPullup(SMnode *pMnode) {
|
||||||
STrans *pTrans = NULL;
|
STrans *pTrans = NULL;
|
||||||
pIter = sdbFetch(pMnode->pSdb, SDB_TRANS, pIter, (void **)&pTrans);
|
pIter = sdbFetch(pMnode->pSdb, SDB_TRANS, pIter, (void **)&pTrans);
|
||||||
if (pIter == NULL) break;
|
if (pIter == NULL) break;
|
||||||
(void)taosArrayPush(pArray, &pTrans->id);
|
if (taosArrayPush(pArray, &pTrans->id) == NULL) {
|
||||||
|
mError("failed to put trans into array, trans:%d, but pull up will continute", pTrans->id);
|
||||||
|
}
|
||||||
sdbRelease(pSdb, pTrans);
|
sdbRelease(pSdb, pTrans);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -334,10 +334,19 @@ void *sdbFetchAll(SSdb *pSdb, ESdbType type, void *pIter, void **ppObj, ESdbStat
|
||||||
* @brief Cancel a traversal
|
* @brief Cancel a traversal
|
||||||
*
|
*
|
||||||
* @param pSdb The sdb object.
|
* @param pSdb The sdb object.
|
||||||
* @param type The initial iterator of table.
|
* @param pIter The initial iterator of table.
|
||||||
*/
|
*/
|
||||||
void sdbCancelFetch(SSdb *pSdb, void *pIter);
|
void sdbCancelFetch(SSdb *pSdb, void *pIter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Cancel a traversal
|
||||||
|
*
|
||||||
|
* @param pSdb The sdb object.
|
||||||
|
* @param pIter The initial iterator of table.
|
||||||
|
* @param type The type of table.
|
||||||
|
*/
|
||||||
|
void sdbCancelFetchByType(SSdb *pSdb, void *pIter, ESdbType type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Traverse a sdb
|
* @brief Traverse a sdb
|
||||||
*
|
*
|
||||||
|
|
|
@ -103,14 +103,14 @@ void sdbPrintOper(SSdb *pSdb, SSdbRow *pRow, const char *oper) {
|
||||||
EKeyType keyType = pSdb->keyTypes[pRow->type];
|
EKeyType keyType = pSdb->keyTypes[pRow->type];
|
||||||
|
|
||||||
if (keyType == SDB_KEY_BINARY) {
|
if (keyType == SDB_KEY_BINARY) {
|
||||||
mTrace("%s:%s, ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), (char *)pRow->pObj, pRow->refCount, oper,
|
mTrace("%s:%s, ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type), (char *)pRow->pObj,
|
||||||
pRow->pObj, sdbStatusName(pRow->status));
|
pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else if (keyType == SDB_KEY_INT32) {
|
} else if (keyType == SDB_KEY_INT32) {
|
||||||
mTrace("%s:%d, ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), *(int32_t *)pRow->pObj, pRow->refCount,
|
mTrace("%s:%d, ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type), *(int32_t *)pRow->pObj,
|
||||||
oper, pRow->pObj, sdbStatusName(pRow->status));
|
pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else if (keyType == SDB_KEY_INT64) {
|
} else if (keyType == SDB_KEY_INT64) {
|
||||||
mTrace("%s:%" PRId64 ", ref:%d oper:%s row:%p status:%s", sdbTableName(pRow->type), *(int64_t *)pRow->pObj,
|
mTrace("%s:%" PRId64 ", ref:%d oper:%s row:%p row->pObj:%p status:%s", sdbTableName(pRow->type),
|
||||||
pRow->refCount, oper, pRow->pObj, sdbStatusName(pRow->status));
|
*(int64_t *)pRow->pObj, pRow->refCount, oper, pRow, pRow->pObj, sdbStatusName(pRow->status));
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -439,6 +439,7 @@ void *sdbFetchAll(SSdb *pSdb, ESdbType type, void *pIter, void **ppObj, ESdbStat
|
||||||
void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
||||||
if (pIter == NULL) return;
|
if (pIter == NULL) return;
|
||||||
SSdbRow *pRow = *(SSdbRow **)pIter;
|
SSdbRow *pRow = *(SSdbRow **)pIter;
|
||||||
|
mTrace("cancel fetch row:%p", pRow);
|
||||||
SHashObj *hash = sdbGetHash(pSdb, pRow->type);
|
SHashObj *hash = sdbGetHash(pSdb, pRow->type);
|
||||||
if (hash == NULL) return;
|
if (hash == NULL) return;
|
||||||
|
|
||||||
|
@ -448,6 +449,17 @@ void sdbCancelFetch(SSdb *pSdb, void *pIter) {
|
||||||
sdbUnLock(pSdb, type);
|
sdbUnLock(pSdb, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sdbCancelFetchByType(SSdb *pSdb, void *pIter, ESdbType type) {
|
||||||
|
if (pIter == NULL) return;
|
||||||
|
if (type >= SDB_MAX || type < 0) return;
|
||||||
|
SHashObj *hash = sdbGetHash(pSdb, type);
|
||||||
|
if (hash == NULL) return;
|
||||||
|
|
||||||
|
sdbReadLock(pSdb, type);
|
||||||
|
taosHashCancelIterate(hash, pIter);
|
||||||
|
sdbUnLock(pSdb, type);
|
||||||
|
}
|
||||||
|
|
||||||
void sdbTraverse(SSdb *pSdb, ESdbType type, sdbTraverseFp fp, void *p1, void *p2, void *p3) {
|
void sdbTraverse(SSdb *pSdb, ESdbType type, sdbTraverseFp fp, void *p1, void *p2, void *p3) {
|
||||||
SHashObj *hash = sdbGetHash(pSdb, type);
|
SHashObj *hash = sdbGetHash(pSdb, type);
|
||||||
if (hash == NULL) return;
|
if (hash == NULL) return;
|
||||||
|
|
|
@ -32,12 +32,12 @@ extern "C" {
|
||||||
#define vDebug(...) do { if (vDebugFlag & DEBUG_DEBUG) { taosPrintLog("VND ", DEBUG_DEBUG, vDebugFlag, __VA_ARGS__); }} while(0)
|
#define vDebug(...) do { if (vDebugFlag & DEBUG_DEBUG) { taosPrintLog("VND ", DEBUG_DEBUG, vDebugFlag, __VA_ARGS__); }} while(0)
|
||||||
#define vTrace(...) do { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", DEBUG_TRACE, vDebugFlag, __VA_ARGS__); }} while(0)
|
#define vTrace(...) do { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", DEBUG_TRACE, vDebugFlag, __VA_ARGS__); }} while(0)
|
||||||
|
|
||||||
#define vGTrace(param, ...) do { if (vDebugFlag & DEBUG_TRACE) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vTrace(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGTrace(param, ...) do { if (vDebugFlag & DEBUG_TRACE) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vTrace(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
#define vGFatal(param, ...) do { if (vDebugFlag & DEBUG_FATAL) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vFatal(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGFatal(param, ...) do { if (vDebugFlag & DEBUG_FATAL) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vFatal(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
#define vGError(param, ...) do { if (vDebugFlag & DEBUG_ERROR) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vError(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGError(param, ...) do { if (vDebugFlag & DEBUG_ERROR) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vError(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
#define vGWarn(param, ...) do { if (vDebugFlag & DEBUG_WARN) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vWarn(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGWarn(param, ...) do { if (vDebugFlag & DEBUG_WARN) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vWarn(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
#define vGInfo(param, ...) do { if (vDebugFlag & DEBUG_INFO) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vInfo(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGInfo(param, ...) do { if (vDebugFlag & DEBUG_INFO) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vInfo(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
#define vGDebug(param, ...) do { if (vDebugFlag & DEBUG_DEBUG) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vDebug(param ", qid:%s", __VA_ARGS__, buf);}} while(0)
|
#define vGDebug(param, ...) do { if (vDebugFlag & DEBUG_DEBUG) { char buf[40] = {0}; TRACE_TO_STR(trace, buf); vDebug(param ",QID:%s", __VA_ARGS__, buf);}} while(0)
|
||||||
|
|
||||||
// clang-format on
|
// clang-format on
|
||||||
|
|
||||||
|
|
|
@ -242,7 +242,6 @@ int32_t tqProcessTaskResetReq(STQ* pTq, SRpcMsg* pMsg);
|
||||||
int32_t tqProcessStreamHbRsp(STQ* pTq, SRpcMsg* pMsg);
|
int32_t tqProcessStreamHbRsp(STQ* pTq, SRpcMsg* pMsg);
|
||||||
int32_t tqProcessStreamReqCheckpointRsp(STQ* pTq, SRpcMsg* pMsg);
|
int32_t tqProcessStreamReqCheckpointRsp(STQ* pTq, SRpcMsg* pMsg);
|
||||||
int32_t tqProcessTaskChkptReportRsp(STQ* pTq, SRpcMsg* pMsg);
|
int32_t tqProcessTaskChkptReportRsp(STQ* pTq, SRpcMsg* pMsg);
|
||||||
int32_t tqProcessTaskConsensusChkptRsp(STQ* pTq, SRpcMsg* pMsg);
|
|
||||||
int32_t tqProcessTaskCheckpointReadyRsp(STQ* pTq, SRpcMsg* pMsg);
|
int32_t tqProcessTaskCheckpointReadyRsp(STQ* pTq, SRpcMsg* pMsg);
|
||||||
|
|
||||||
int32_t tqBuildStreamTask(void* pTq, SStreamTask* pTask, int64_t ver);
|
int32_t tqBuildStreamTask(void* pTq, SStreamTask* pTask, int64_t ver);
|
||||||
|
|
|
@ -122,7 +122,7 @@ int32_t metaCacheOpen(SMeta* pMeta) {
|
||||||
|
|
||||||
pMeta->pCache = (SMetaCache*)taosMemoryCalloc(1, sizeof(SMetaCache));
|
pMeta->pCache = (SMetaCache*)taosMemoryCalloc(1, sizeof(SMetaCache));
|
||||||
if (pMeta->pCache == NULL) {
|
if (pMeta->pCache == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// open entry cache
|
// open entry cache
|
||||||
|
@ -131,7 +131,7 @@ int32_t metaCacheOpen(SMeta* pMeta) {
|
||||||
pMeta->pCache->sEntryCache.aBucket =
|
pMeta->pCache->sEntryCache.aBucket =
|
||||||
(SMetaCacheEntry**)taosMemoryCalloc(pMeta->pCache->sEntryCache.nBucket, sizeof(SMetaCacheEntry*));
|
(SMetaCacheEntry**)taosMemoryCalloc(pMeta->pCache->sEntryCache.nBucket, sizeof(SMetaCacheEntry*));
|
||||||
if (pMeta->pCache->sEntryCache.aBucket == NULL) {
|
if (pMeta->pCache->sEntryCache.aBucket == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// open stats cache
|
// open stats cache
|
||||||
|
@ -140,7 +140,7 @@ int32_t metaCacheOpen(SMeta* pMeta) {
|
||||||
pMeta->pCache->sStbStatsCache.aBucket =
|
pMeta->pCache->sStbStatsCache.aBucket =
|
||||||
(SMetaStbStatsEntry**)taosMemoryCalloc(pMeta->pCache->sStbStatsCache.nBucket, sizeof(SMetaStbStatsEntry*));
|
(SMetaStbStatsEntry**)taosMemoryCalloc(pMeta->pCache->sStbStatsCache.nBucket, sizeof(SMetaStbStatsEntry*));
|
||||||
if (pMeta->pCache->sStbStatsCache.aBucket == NULL) {
|
if (pMeta->pCache->sStbStatsCache.aBucket == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
pMeta->pCache->sTagFilterResCache.pUidResCache = taosLRUCacheInit(5 * 1024 * 1024, -1, 0.5);
|
pMeta->pCache->sTagFilterResCache.pUidResCache = taosLRUCacheInit(5 * 1024 * 1024, -1, 0.5);
|
||||||
|
@ -228,7 +228,7 @@ static int32_t metaRehashCache(SMetaCache* pCache, int8_t expand) {
|
||||||
|
|
||||||
SMetaCacheEntry** aBucket = (SMetaCacheEntry**)taosMemoryCalloc(nBucket, sizeof(SMetaCacheEntry*));
|
SMetaCacheEntry** aBucket = (SMetaCacheEntry**)taosMemoryCalloc(nBucket, sizeof(SMetaCacheEntry*));
|
||||||
if (aBucket == NULL) {
|
if (aBucket == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,7 +361,7 @@ static int32_t metaRehashStatsCache(SMetaCache* pCache, int8_t expand) {
|
||||||
|
|
||||||
SMetaStbStatsEntry** aBucket = (SMetaStbStatsEntry**)taosMemoryCalloc(nBucket, sizeof(SMetaStbStatsEntry*));
|
SMetaStbStatsEntry** aBucket = (SMetaStbStatsEntry**)taosMemoryCalloc(nBucket, sizeof(SMetaStbStatsEntry*));
|
||||||
if (aBucket == NULL) {
|
if (aBucket == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ int32_t metaOpen(SVnode *pVnode, SMeta **ppMeta, int8_t rollback) {
|
||||||
snprintf(path + offset, TSDB_FILENAME_LEN - offset - 1, "%s%s", TD_DIRSEP, VNODE_META_DIR);
|
snprintf(path + offset, TSDB_FILENAME_LEN - offset - 1, "%s%s", TD_DIRSEP, VNODE_META_DIR);
|
||||||
|
|
||||||
if ((pMeta = taosMemoryCalloc(1, sizeof(*pMeta) + strlen(path) + 1)) == NULL) {
|
if ((pMeta = taosMemoryCalloc(1, sizeof(*pMeta) + strlen(path) + 1)) == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)metaInitLock(pMeta);
|
(void)metaInitLock(pMeta);
|
||||||
|
|
|
@ -1255,7 +1255,7 @@ int32_t metaFilterTableIds(void *pVnode, SMetaFltParam *arg, SArray *pUids) {
|
||||||
SIdxCursor *pCursor = NULL;
|
SIdxCursor *pCursor = NULL;
|
||||||
pCursor = (SIdxCursor *)taosMemoryCalloc(1, sizeof(SIdxCursor));
|
pCursor = (SIdxCursor *)taosMemoryCalloc(1, sizeof(SIdxCursor));
|
||||||
if (!pCursor) {
|
if (!pCursor) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
pCursor->pMeta = pMeta;
|
pCursor->pMeta = pMeta;
|
||||||
pCursor->suid = param->suid;
|
pCursor->suid = param->suid;
|
||||||
|
|
|
@ -137,7 +137,7 @@ int32_t metaSnapWriterOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapWr
|
||||||
// alloc
|
// alloc
|
||||||
pWriter = (SMetaSnapWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
pWriter = (SMetaSnapWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
||||||
if (pWriter == NULL) {
|
if (pWriter == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
pWriter->pMeta = pMeta;
|
pWriter->pMeta = pMeta;
|
||||||
pWriter->sver = sver;
|
pWriter->sver = sver;
|
||||||
|
@ -304,7 +304,7 @@ int32_t buildSnapContext(SVnode* pVnode, int64_t snapVersion, int64_t suid, int8
|
||||||
SSnapContext** ctxRet) {
|
SSnapContext** ctxRet) {
|
||||||
SSnapContext* ctx = taosMemoryCalloc(1, sizeof(SSnapContext));
|
SSnapContext* ctx = taosMemoryCalloc(1, sizeof(SSnapContext));
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
return TAOS_GET_TERRNO(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
*ctxRet = ctx;
|
*ctxRet = ctx;
|
||||||
ctx->pMeta = pVnode->pMeta;
|
ctx->pMeta = pVnode->pMeta;
|
||||||
|
|
|
@ -117,10 +117,10 @@ static int32_t tdNewSmaEnv(SSma *pSma, int8_t smaType, SSmaEnv **ppEnv) {
|
||||||
SSmaEnv *pEnv = NULL;
|
SSmaEnv *pEnv = NULL;
|
||||||
|
|
||||||
pEnv = (SSmaEnv *)taosMemoryCalloc(1, sizeof(SSmaEnv));
|
pEnv = (SSmaEnv *)taosMemoryCalloc(1, sizeof(SSmaEnv));
|
||||||
*ppEnv = pEnv;
|
|
||||||
if (!pEnv) {
|
if (!pEnv) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
*ppEnv = pEnv;
|
||||||
|
|
||||||
SMA_ENV_TYPE(pEnv) = smaType;
|
SMA_ENV_TYPE(pEnv) = smaType;
|
||||||
|
|
||||||
|
@ -199,7 +199,7 @@ static int32_t tdInitSmaStat(SSmaStat **pSmaStat, int8_t smaType, const SSma *pS
|
||||||
if (!(*pSmaStat)) {
|
if (!(*pSmaStat)) {
|
||||||
*pSmaStat = (SSmaStat *)taosMemoryCalloc(1, sizeof(SSmaStat) + sizeof(TdThread) * tsNumOfVnodeRsmaThreads);
|
*pSmaStat = (SSmaStat *)taosMemoryCalloc(1, sizeof(SSmaStat) + sizeof(TdThread) * tsNumOfVnodeRsmaThreads);
|
||||||
if (!(*pSmaStat)) {
|
if (!(*pSmaStat)) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
TAOS_CHECK_GOTO(code, &lino, _exit);
|
TAOS_CHECK_GOTO(code, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -139,7 +139,7 @@ int32_t smaOpen(SVnode *pVnode, int8_t rollback, bool force) {
|
||||||
|
|
||||||
SSma *pSma = taosMemoryCalloc(1, sizeof(SSma));
|
SSma *pSma = taosMemoryCalloc(1, sizeof(SSma));
|
||||||
if (!pSma) {
|
if (!pSma) {
|
||||||
TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_EXIT(terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
pVnode->pSma = pSma;
|
pVnode->pSma = pSma;
|
||||||
|
|
|
@ -123,7 +123,7 @@ void *tdFreeRSmaInfo(SSma *pSma, SRSmaInfo *pInfo) {
|
||||||
static FORCE_INLINE int32_t tdUidStoreInit(STbUidStore **pStore) {
|
static FORCE_INLINE int32_t tdUidStoreInit(STbUidStore **pStore) {
|
||||||
*pStore = taosMemoryCalloc(1, sizeof(STbUidStore));
|
*pStore = taosMemoryCalloc(1, sizeof(STbUidStore));
|
||||||
if (*pStore == NULL) {
|
if (*pStore == NULL) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -285,7 +285,7 @@ static int32_t tdSetRSmaInfoItemParams(SSma *pSma, SRSmaParam *param, SRSmaStat
|
||||||
|
|
||||||
SStreamTask *pStreamTask = taosMemoryCalloc(1, sizeof(*pStreamTask));
|
SStreamTask *pStreamTask = taosMemoryCalloc(1, sizeof(*pStreamTask));
|
||||||
if (!pStreamTask) {
|
if (!pStreamTask) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
pItem->pStreamTask = pStreamTask;
|
pItem->pStreamTask = pStreamTask;
|
||||||
pStreamTask->id.taskId = 0;
|
pStreamTask->id.taskId = 0;
|
||||||
|
@ -389,7 +389,7 @@ int32_t tdRSmaProcessCreateImpl(SSma *pSma, SRSmaParam *param, int64_t suid, con
|
||||||
// from write queue: single thead
|
// from write queue: single thead
|
||||||
pRSmaInfo = (SRSmaInfo *)taosMemoryCalloc(1, sizeof(SRSmaInfo));
|
pRSmaInfo = (SRSmaInfo *)taosMemoryCalloc(1, sizeof(SRSmaInfo));
|
||||||
if (!pRSmaInfo) {
|
if (!pRSmaInfo) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
STSchema *pTSchema = metaGetTbTSchema(SMA_META(pSma), suid, -1, 1);
|
STSchema *pTSchema = metaGetTbTSchema(SMA_META(pSma), suid, -1, 1);
|
||||||
|
|
|
@ -38,7 +38,7 @@ int32_t rsmaSnapReaderOpen(SSma* pSma, int64_t sver, int64_t ever, SRSmaSnapRead
|
||||||
// alloc
|
// alloc
|
||||||
pReader = (SRSmaSnapReader*)taosMemoryCalloc(1, sizeof(*pReader));
|
pReader = (SRSmaSnapReader*)taosMemoryCalloc(1, sizeof(*pReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
pReader->pSma = pSma;
|
pReader->pSma = pSma;
|
||||||
pReader->sver = sver;
|
pReader->sver = sver;
|
||||||
|
@ -136,7 +136,7 @@ int32_t rsmaSnapWriterOpen(SSma* pSma, int64_t sver, int64_t ever, void** ppRang
|
||||||
// alloc
|
// alloc
|
||||||
pWriter = (SRSmaSnapWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
pWriter = (SRSmaSnapWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
||||||
if (!pWriter) {
|
if (!pWriter) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
pWriter->pSma = pSma;
|
pWriter->pSma = pSma;
|
||||||
pWriter->sver = sver;
|
pWriter->sver = sver;
|
||||||
|
|
|
@ -165,7 +165,7 @@ int32_t smaBlockToSubmit(SVnode *pVnode, const SArray *pBlocks, const STSchema *
|
||||||
pReq = taosMemoryCalloc(1, sizeof(SSubmitReq2));
|
pReq = taosMemoryCalloc(1, sizeof(SSubmitReq2));
|
||||||
|
|
||||||
if (!tagArray || !pReq) {
|
if (!tagArray || !pReq) {
|
||||||
TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_EXIT(terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
pReq->aSubmitTbData = taosArrayInit(1, sizeof(SSubmitTbData));
|
pReq->aSubmitTbData = taosArrayInit(1, sizeof(SSubmitTbData));
|
||||||
|
|
|
@ -66,7 +66,7 @@ static bool tqOffsetEqual(const STqOffset* pLeft, const STqOffset* pRight) {
|
||||||
int32_t tqOpen(const char* path, SVnode* pVnode) {
|
int32_t tqOpen(const char* path, SVnode* pVnode) {
|
||||||
STQ* pTq = taosMemoryCalloc(1, sizeof(STQ));
|
STQ* pTq = taosMemoryCalloc(1, sizeof(STQ));
|
||||||
if (pTq == NULL) {
|
if (pTq == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
pVnode->pTq = pTq;
|
pVnode->pTq = pTq;
|
||||||
pTq->path = taosStrdup(path);
|
pTq->path = taosStrdup(path);
|
||||||
|
@ -173,7 +173,7 @@ void tqPushEmptyDataRsp(STqHandle* pHandle, int32_t vgId) {
|
||||||
dataRsp.common.blockNum = 0;
|
dataRsp.common.blockNum = 0;
|
||||||
char buf[TSDB_OFFSET_LEN] = {0};
|
char buf[TSDB_OFFSET_LEN] = {0};
|
||||||
(void)tFormatOffset(buf, TSDB_OFFSET_LEN, &dataRsp.common.reqOffset);
|
(void)tFormatOffset(buf, TSDB_OFFSET_LEN, &dataRsp.common.reqOffset);
|
||||||
tqInfo("tqPushEmptyDataRsp to consumer:0x%" PRIx64 " vgId:%d, offset:%s, qid:0x%" PRIx64, req.consumerId, vgId, buf,
|
tqInfo("tqPushEmptyDataRsp to consumer:0x%" PRIx64 " vgId:%d, offset:%s,QID:0x%" PRIx64, req.consumerId, vgId, buf,
|
||||||
req.reqId);
|
req.reqId);
|
||||||
|
|
||||||
code = tqSendDataRsp(pHandle, pHandle->msg, &req, &dataRsp, TMQ_MSG_TYPE__POLL_DATA_RSP, vgId);
|
code = tqSendDataRsp(pHandle, pHandle->msg, &req, &dataRsp, TMQ_MSG_TYPE__POLL_DATA_RSP, vgId);
|
||||||
|
@ -193,7 +193,7 @@ int32_t tqSendDataRsp(STqHandle* pHandle, const SRpcMsg* pMsg, const SMqPollReq*
|
||||||
(void)tFormatOffset(buf1, TSDB_OFFSET_LEN, &((SMqDataRspCommon*)pRsp)->reqOffset);
|
(void)tFormatOffset(buf1, TSDB_OFFSET_LEN, &((SMqDataRspCommon*)pRsp)->reqOffset);
|
||||||
(void)tFormatOffset(buf2, TSDB_OFFSET_LEN, &((SMqDataRspCommon*)pRsp)->rspOffset);
|
(void)tFormatOffset(buf2, TSDB_OFFSET_LEN, &((SMqDataRspCommon*)pRsp)->rspOffset);
|
||||||
|
|
||||||
tqDebug("tmq poll vgId:%d consumer:0x%" PRIx64 " (epoch %d) send rsp, block num:%d, req:%s, rsp:%s, qid:0x%" PRIx64,
|
tqDebug("tmq poll vgId:%d consumer:0x%" PRIx64 " (epoch %d) send rsp, block num:%d, req:%s, rsp:%s,QID:0x%" PRIx64,
|
||||||
vgId, pReq->consumerId, pReq->epoch, ((SMqDataRspCommon*)pRsp)->blockNum, buf1, buf2, pReq->reqId);
|
vgId, pReq->consumerId, pReq->epoch, ((SMqDataRspCommon*)pRsp)->blockNum, buf1, buf2, pReq->reqId);
|
||||||
|
|
||||||
return tqDoSendDataRsp(&pMsg->info, pRsp, pReq->epoch, pReq->consumerId, type, sver, ever);
|
return tqDoSendDataRsp(&pMsg->info, pRsp, pReq->epoch, pReq->consumerId, type, sver, ever);
|
||||||
|
@ -421,7 +421,7 @@ int32_t tqProcessPollReq(STQ* pTq, SRpcMsg* pMsg) {
|
||||||
|
|
||||||
char buf[TSDB_OFFSET_LEN] = {0};
|
char buf[TSDB_OFFSET_LEN] = {0};
|
||||||
(void)tFormatOffset(buf, TSDB_OFFSET_LEN, &reqOffset);
|
(void)tFormatOffset(buf, TSDB_OFFSET_LEN, &reqOffset);
|
||||||
tqDebug("tmq poll: consumer:0x%" PRIx64 " (epoch %d), subkey %s, recv poll req vgId:%d, req:%s, qid:0x%" PRIx64,
|
tqDebug("tmq poll: consumer:0x%" PRIx64 " (epoch %d), subkey %s, recv poll req vgId:%d, req:%s,QID:0x%" PRIx64,
|
||||||
consumerId, req.epoch, pHandle->subKey, vgId, buf, req.reqId);
|
consumerId, req.epoch, pHandle->subKey, vgId, buf, req.reqId);
|
||||||
|
|
||||||
code = tqExtractDataForMq(pTq, pHandle, &req, pMsg);
|
code = tqExtractDataForMq(pTq, pHandle, &req, pMsg);
|
||||||
|
@ -1291,6 +1291,3 @@ int32_t tqProcessTaskChkptReportRsp(STQ* pTq, SRpcMsg* pMsg) {
|
||||||
return tqStreamProcessChkptReportRsp(pTq->pStreamMeta, pMsg);
|
return tqStreamProcessChkptReportRsp(pTq->pStreamMeta, pMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t tqProcessTaskConsensusChkptRsp(STQ* pTq, SRpcMsg* pMsg) {
|
|
||||||
return tqStreamProcessConsensusChkptRsp2(pTq->pStreamMeta, pMsg);
|
|
||||||
}
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ int32_t tqMetaSaveOffset(STQ* pTq, STqOffset* pOffset) {
|
||||||
|
|
||||||
buf = taosMemoryCalloc(1, vlen);
|
buf = taosMemoryCalloc(1, vlen);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ int32_t tqMetaSaveHandle(STQ* pTq, const char* key, const STqHandle* pHandle) {
|
||||||
|
|
||||||
buf = taosMemoryCalloc(1, vlen);
|
buf = taosMemoryCalloc(1, vlen);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ int32_t tqBuildFName(char** data, const char* path, char* name) {
|
||||||
int32_t len = strlen(path) + strlen(name) + 2;
|
int32_t len = strlen(path) + strlen(name) + 2;
|
||||||
char* fname = taosMemoryCalloc(1, len);
|
char* fname = taosMemoryCalloc(1, len);
|
||||||
if(fname == NULL) {
|
if(fname == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
int32_t code = snprintf(fname, len, "%s%s%s", path, TD_DIRSEP, name);
|
int32_t code = snprintf(fname, len, "%s%s%s", path, TD_DIRSEP, name);
|
||||||
if (code < 0){
|
if (code < 0){
|
||||||
|
@ -56,7 +56,7 @@ int32_t tqOffsetRestoreFromFile(STQ* pTq, char* name) {
|
||||||
size = htonl(size);
|
size = htonl(size);
|
||||||
pMemBuf = taosMemoryCalloc(1, size);
|
pMemBuf = taosMemoryCalloc(1, size);
|
||||||
if (pMemBuf == NULL) {
|
if (pMemBuf == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -214,12 +214,12 @@ int32_t tqFetchLog(STQ* pTq, STqHandle* pHandle, int64_t* fetchOffset, uint64_t
|
||||||
while (offset <= appliedVer) {
|
while (offset <= appliedVer) {
|
||||||
if (walFetchHead(pHandle->pWalReader, offset) < 0) {
|
if (walFetchHead(pHandle->pWalReader, offset) < 0) {
|
||||||
tqDebug("tmq poll: consumer:0x%" PRIx64 ", (epoch %d) vgId:%d offset %" PRId64
|
tqDebug("tmq poll: consumer:0x%" PRIx64 ", (epoch %d) vgId:%d offset %" PRId64
|
||||||
", no more log to return, qid:0x%" PRIx64 " 0x%" PRIx64,
|
", no more log to return,QID:0x%" PRIx64 " 0x%" PRIx64,
|
||||||
pHandle->consumerId, pHandle->epoch, vgId, offset, reqId, id);
|
pHandle->consumerId, pHandle->epoch, vgId, offset, reqId, id);
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
|
|
||||||
tqDebug("vgId:%d, consumer:0x%" PRIx64 " taosx get msg ver %" PRId64 ", type: %s, qid:0x%" PRIx64 " 0x%" PRIx64,
|
tqDebug("vgId:%d, consumer:0x%" PRIx64 " taosx get msg ver %" PRId64 ", type: %s,QID:0x%" PRIx64 " 0x%" PRIx64,
|
||||||
vgId, pHandle->consumerId, offset, TMSG_INFO(pHandle->pWalReader->pHead->head.msgType), reqId, id);
|
vgId, pHandle->consumerId, offset, TMSG_INFO(pHandle->pWalReader->pHead->head.msgType), reqId, id);
|
||||||
|
|
||||||
if (pHandle->pWalReader->pHead->head.msgType == TDMT_VND_SUBMIT) {
|
if (pHandle->pWalReader->pHead->head.msgType == TDMT_VND_SUBMIT) {
|
||||||
|
@ -547,7 +547,7 @@ int32_t tqMaskBlock(SSchemaWrapper* pDst, SSDataBlock* pBlock, const SSchemaWrap
|
||||||
pDst->nCols = cnt;
|
pDst->nCols = cnt;
|
||||||
pDst->pSchema = taosMemoryCalloc(cnt, sizeof(SSchema));
|
pDst->pSchema = taosMemoryCalloc(cnt, sizeof(SSchema));
|
||||||
if (pDst->pSchema == NULL) {
|
if (pDst->pSchema == NULL) {
|
||||||
return TAOS_GET_TERRNO(TSDB_CODE_OUT_OF_MEMORY);
|
return TAOS_GET_TERRNO(terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t j = 0;
|
int32_t j = 0;
|
||||||
|
|
|
@ -19,7 +19,7 @@ int32_t tqAddBlockDataToRsp(const SSDataBlock* pBlock, void* pRsp, int32_t numOf
|
||||||
int32_t dataStrLen = sizeof(SRetrieveTableRspForTmq) + blockGetEncodeSize(pBlock);
|
int32_t dataStrLen = sizeof(SRetrieveTableRspForTmq) + blockGetEncodeSize(pBlock);
|
||||||
void* buf = taosMemoryCalloc(1, dataStrLen);
|
void* buf = taosMemoryCalloc(1, dataStrLen);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
SRetrieveTableRspForTmq* pRetrieve = (SRetrieveTableRspForTmq*)buf;
|
SRetrieveTableRspForTmq* pRetrieve = (SRetrieveTableRspForTmq*)buf;
|
||||||
|
@ -344,7 +344,7 @@ static void tqProcessSubData(STQ* pTq, STqHandle* pHandle, STaosxRsp* pRsp, int3
|
||||||
}
|
}
|
||||||
void* createReq = taosMemoryCalloc(1, len);
|
void* createReq = taosMemoryCalloc(1, len);
|
||||||
if (createReq == NULL){
|
if (createReq == NULL){
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto END;
|
goto END;
|
||||||
}
|
}
|
||||||
SEncoder encoder = {0};
|
SEncoder encoder = {0};
|
||||||
|
|
|
@ -549,7 +549,7 @@ int32_t buildAutoCreateTableReq(const char* stbFullName, int64_t suid, int32_t n
|
||||||
|
|
||||||
SVCreateTbReq* pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
SVCreateTbReq* pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
||||||
if (pCreateTbReq == NULL) {
|
if (pCreateTbReq == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayClear(pTagArray);
|
taosArrayClear(pTagArray);
|
||||||
|
@ -802,7 +802,7 @@ int32_t doCreateSinkInfo(const char* pDstTableName, STableSinkInfo** pInfo) {
|
||||||
int32_t nameLen = strlen(pDstTableName);
|
int32_t nameLen = strlen(pDstTableName);
|
||||||
(*pInfo) = taosMemoryCalloc(1, sizeof(STableSinkInfo) + nameLen + 1);
|
(*pInfo) = taosMemoryCalloc(1, sizeof(STableSinkInfo) + nameLen + 1);
|
||||||
if (*pInfo == NULL) {
|
if (*pInfo == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
(*pInfo)->name.len = nameLen;
|
(*pInfo)->name.len = nameLen;
|
||||||
|
|
|
@ -38,7 +38,7 @@ int32_t streamStateSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamS
|
||||||
// alloc
|
// alloc
|
||||||
pReader = (SStreamStateReader*)taosMemoryCalloc(1, sizeof(SStreamStateReader));
|
pReader = (SStreamStateReader*)taosMemoryCalloc(1, sizeof(SStreamStateReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +130,7 @@ int32_t streamStateSnapWriterOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamS
|
||||||
// alloc
|
// alloc
|
||||||
pWriter = (SStreamStateWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
pWriter = (SStreamStateWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
||||||
if (pWriter == NULL) {
|
if (pWriter == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
pWriter->pTq = pTq;
|
pWriter->pTq = pTq;
|
||||||
|
|
|
@ -39,7 +39,7 @@ int32_t streamTaskSnapReaderOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamTa
|
||||||
// alloc
|
// alloc
|
||||||
pReader = (SStreamTaskReader*)taosMemoryCalloc(1, sizeof(SStreamTaskReader));
|
pReader = (SStreamTaskReader*)taosMemoryCalloc(1, sizeof(SStreamTaskReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
TAOS_CHECK_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_RETURN(terrno);
|
||||||
}
|
}
|
||||||
pReader->pTq = pTq;
|
pReader->pTq = pTq;
|
||||||
pReader->sver = sver;
|
pReader->sver = sver;
|
||||||
|
@ -120,7 +120,7 @@ NextTbl:
|
||||||
} else {
|
} else {
|
||||||
pVal = taosMemoryCalloc(1, tLen);
|
pVal = taosMemoryCalloc(1, tLen);
|
||||||
if (pVal == NULL) {
|
if (pVal == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
memcpy(pVal, tVal, tLen);
|
memcpy(pVal, tVal, tLen);
|
||||||
|
@ -181,7 +181,7 @@ int32_t streamTaskSnapWriterOpen(STQ* pTq, int64_t sver, int64_t ever, SStreamTa
|
||||||
// alloc
|
// alloc
|
||||||
pWriter = (SStreamTaskWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
pWriter = (SStreamTaskWriter*)taosMemoryCalloc(1, sizeof(*pWriter));
|
||||||
if (pWriter == NULL) {
|
if (pWriter == NULL) {
|
||||||
TAOS_CHECK_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_RETURN(terrno);
|
||||||
}
|
}
|
||||||
pWriter->pTq = pTq;
|
pWriter->pTq = pTq;
|
||||||
pWriter->sver = sver;
|
pWriter->sver = sver;
|
||||||
|
|
|
@ -92,7 +92,7 @@ static int32_t extractResetOffsetVal(STqOffsetVal* pOffsetVal, STQ* pTq, STqHand
|
||||||
char formatBuf[TSDB_OFFSET_LEN] = {0};
|
char formatBuf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(formatBuf, TSDB_OFFSET_LEN, pOffsetVal);
|
tFormatOffset(formatBuf, TSDB_OFFSET_LEN, pOffsetVal);
|
||||||
tqDebug("tmq poll: consumer:0x%" PRIx64
|
tqDebug("tmq poll: consumer:0x%" PRIx64
|
||||||
", subkey %s, vgId:%d, existed offset found, offset reset to %s and continue. qid:0x%" PRIx64,
|
", subkey %s, vgId:%d, existed offset found, offset reset to %s and continue.QID:0x%" PRIx64,
|
||||||
consumerId, pHandle->subKey, vgId, formatBuf, pRequest->reqId);
|
consumerId, pHandle->subKey, vgId, formatBuf, pRequest->reqId);
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
|
@ -176,7 +176,7 @@ static int32_t extractDataAndRspForNormalSubscribe(STQ* pTq, STqHandle* pHandle,
|
||||||
end : {
|
end : {
|
||||||
char buf[TSDB_OFFSET_LEN] = {0};
|
char buf[TSDB_OFFSET_LEN] = {0};
|
||||||
tFormatOffset(buf, TSDB_OFFSET_LEN, &dataRsp.common.rspOffset);
|
tFormatOffset(buf, TSDB_OFFSET_LEN, &dataRsp.common.rspOffset);
|
||||||
tqDebug("tmq poll: consumer:0x%" PRIx64 ", subkey %s, vgId:%d, rsp block:%d, rsp offset type:%s, qid:0x%" PRIx64
|
tqDebug("tmq poll: consumer:0x%" PRIx64 ", subkey %s, vgId:%d, rsp block:%d, rsp offset type:%s,QID:0x%" PRIx64
|
||||||
" code:%d",
|
" code:%d",
|
||||||
consumerId, pHandle->subKey, vgId, dataRsp.common.blockNum, buf, pRequest->reqId, code);
|
consumerId, pHandle->subKey, vgId, dataRsp.common.blockNum, buf, pRequest->reqId, code);
|
||||||
tDeleteMqDataRsp(&dataRsp);
|
tDeleteMqDataRsp(&dataRsp);
|
||||||
|
|
|
@ -582,7 +582,7 @@ int32_t tqStreamTaskProcessDeployReq(SStreamMeta* pMeta, SMsgCb* cb, int64_t sve
|
||||||
SStreamTask* pTask = taosMemoryCalloc(1, size);
|
SStreamTask* pTask = taosMemoryCalloc(1, size);
|
||||||
if (pTask == NULL) {
|
if (pTask == NULL) {
|
||||||
tqError("vgId:%d failed to create stream task due to out of memory, alloc size:%d", vgId, size);
|
tqError("vgId:%d failed to create stream task due to out of memory, alloc size:%d", vgId, size);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDecoder decoder;
|
SDecoder decoder;
|
||||||
|
@ -1238,9 +1238,9 @@ int32_t tqStreamTaskProcessConsenChkptIdReq(SStreamMeta* pMeta, SRpcMsg* pMsg) {
|
||||||
streamMutexLock(&pTask->lock);
|
streamMutexLock(&pTask->lock);
|
||||||
ASSERT(pTask->chkInfo.checkpointId >= req.checkpointId);
|
ASSERT(pTask->chkInfo.checkpointId >= req.checkpointId);
|
||||||
|
|
||||||
if (pTask->chkInfo.consensusTransId >= req.transId) {
|
if (pTask->status.consenChkptInfo.consenChkptTransId >= req.transId) {
|
||||||
tqDebug("s-task:%s vgId:%d latest consensus transId:%d, expired consensus trans:%d, discard", pTask->id.idStr, vgId,
|
tqDebug("s-task:%s vgId:%d latest consensus transId:%d, expired consensus trans:%d, discard", pTask->id.idStr, vgId,
|
||||||
pTask->chkInfo.consensusTransId, req.transId);
|
pTask->status.consenChkptInfo.consenChkptTransId, req.transId);
|
||||||
streamMutexUnlock(&pTask->lock);
|
streamMutexUnlock(&pTask->lock);
|
||||||
streamMetaReleaseTask(pMeta, pTask);
|
streamMetaReleaseTask(pMeta, pTask);
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
@ -1256,7 +1256,9 @@ int32_t tqStreamTaskProcessConsenChkptIdReq(SStreamMeta* pMeta, SRpcMsg* pMsg) {
|
||||||
pTask->id.idStr, vgId, req.checkpointId, req.transId);
|
pTask->id.idStr, vgId, req.checkpointId, req.transId);
|
||||||
}
|
}
|
||||||
|
|
||||||
pTask->chkInfo.consensusTransId = req.transId;
|
pTask->status.consenChkptInfo.consenChkptTransId = req.transId;
|
||||||
|
pTask->status.consenChkptInfo.status = TASK_CONSEN_CHKPT_RECV;
|
||||||
|
pTask->status.consenChkptInfo.statusTs = taosGetTimestampMs();
|
||||||
streamMutexUnlock(&pTask->lock);
|
streamMutexUnlock(&pTask->lock);
|
||||||
|
|
||||||
if (pMeta->role == NODE_ROLE_LEADER) {
|
if (pMeta->role == NODE_ROLE_LEADER) {
|
||||||
|
|
|
@ -326,7 +326,7 @@ static int32_t tsdbCacheDeserialize(char const *value, size_t size, SLastCol **p
|
||||||
|
|
||||||
SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
if (NULL == pLastCol) {
|
if (NULL == pLastCol) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t offset = tsdbCacheDeserializeV0(value, pLastCol);
|
int32_t offset = tsdbCacheDeserializeV0(value, pLastCol);
|
||||||
|
@ -632,7 +632,7 @@ static int32_t tsdbCacheNewTableColumn(STsdb *pTsdb, int64_t uid, int16_t cid, i
|
||||||
|
|
||||||
SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
if (!pLastCol) {
|
if (!pLastCol) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t charge = 0;
|
size_t charge = 0;
|
||||||
|
@ -679,13 +679,17 @@ int32_t tsdbCacheCommitNoLock(STsdb *pTsdb) {
|
||||||
static int32_t tsdbCacheGetValuesFromRocks(STsdb *pTsdb, size_t numKeys, const char *const *ppKeysList,
|
static int32_t tsdbCacheGetValuesFromRocks(STsdb *pTsdb, size_t numKeys, const char *const *ppKeysList,
|
||||||
size_t *pKeysListSizes, char ***pppValuesList, size_t **ppValuesListSizes) {
|
size_t *pKeysListSizes, char ***pppValuesList, size_t **ppValuesListSizes) {
|
||||||
char **valuesList = taosMemoryCalloc(numKeys, sizeof(char *));
|
char **valuesList = taosMemoryCalloc(numKeys, sizeof(char *));
|
||||||
|
if(!valuesList) return terrno;
|
||||||
size_t *valuesListSizes = taosMemoryCalloc(numKeys, sizeof(size_t));
|
size_t *valuesListSizes = taosMemoryCalloc(numKeys, sizeof(size_t));
|
||||||
|
if(!valuesListSizes) {
|
||||||
|
taosMemoryFreeClear(valuesList);
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
char **errs = taosMemoryCalloc(numKeys, sizeof(char *));
|
char **errs = taosMemoryCalloc(numKeys, sizeof(char *));
|
||||||
if (!valuesList || !valuesListSizes || !errs) {
|
if (!errs) {
|
||||||
taosMemoryFreeClear(valuesList);
|
taosMemoryFreeClear(valuesList);
|
||||||
taosMemoryFreeClear(valuesListSizes);
|
taosMemoryFreeClear(valuesListSizes);
|
||||||
taosMemoryFreeClear(errs);
|
return terrno;
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
|
||||||
}
|
}
|
||||||
rocksdb_multi_get(pTsdb->rCache.db, pTsdb->rCache.readoptions, numKeys, ppKeysList, pKeysListSizes, valuesList,
|
rocksdb_multi_get(pTsdb->rCache.db, pTsdb->rCache.readoptions, numKeys, ppKeysList, pKeysListSizes, valuesList,
|
||||||
valuesListSizes, errs);
|
valuesListSizes, errs);
|
||||||
|
@ -705,12 +709,12 @@ static int32_t tsdbCacheDropTableColumn(STsdb *pTsdb, int64_t uid, int16_t cid,
|
||||||
// build keys & multi get from rocks
|
// build keys & multi get from rocks
|
||||||
char **keys_list = taosMemoryCalloc(2, sizeof(char *));
|
char **keys_list = taosMemoryCalloc(2, sizeof(char *));
|
||||||
if (!keys_list) {
|
if (!keys_list) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
size_t *keys_list_sizes = taosMemoryCalloc(2, sizeof(size_t));
|
size_t *keys_list_sizes = taosMemoryCalloc(2, sizeof(size_t));
|
||||||
if (!keys_list_sizes) {
|
if (!keys_list_sizes) {
|
||||||
taosMemoryFree(keys_list);
|
taosMemoryFree(keys_list);
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
const size_t klen = ROCKS_KEY_LEN;
|
const size_t klen = ROCKS_KEY_LEN;
|
||||||
|
|
||||||
|
@ -718,7 +722,7 @@ static int32_t tsdbCacheDropTableColumn(STsdb *pTsdb, int64_t uid, int16_t cid,
|
||||||
if (!keys) {
|
if (!keys) {
|
||||||
taosMemoryFree(keys_list);
|
taosMemoryFree(keys_list);
|
||||||
taosMemoryFree(keys_list_sizes);
|
taosMemoryFree(keys_list_sizes);
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
((SLastKey *)keys)[0] = (SLastKey){.lflag = LFLAG_LAST, .uid = uid, .cid = cid};
|
((SLastKey *)keys)[0] = (SLastKey){.lflag = LFLAG_LAST, .uid = uid, .cid = cid};
|
||||||
((SLastKey *)keys)[1] = (SLastKey){.lflag = LFLAG_LAST_ROW, .uid = uid, .cid = cid};
|
((SLastKey *)keys)[1] = (SLastKey){.lflag = LFLAG_LAST_ROW, .uid = uid, .cid = cid};
|
||||||
|
@ -1003,7 +1007,7 @@ static int32_t tsdbCacheUpdateValue(SValue *pOld, SValue *pNew) {
|
||||||
if (nData < pNew->nData) {
|
if (nData < pNew->nData) {
|
||||||
pOld->pData = taosMemoryCalloc(1, pNew->nData);
|
pOld->pData = taosMemoryCalloc(1, pNew->nData);
|
||||||
if (!pOld->pData) {
|
if (!pOld->pData) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pOld->pData = pFree;
|
pOld->pData = pFree;
|
||||||
|
@ -1099,7 +1103,7 @@ static int32_t tsdbCachePutToLRU(STsdb *pTsdb, SLastKey *pLastKey, SLastCol *pLa
|
||||||
|
|
||||||
SLastCol *pLRULastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pLRULastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
if (!pLRULastCol) {
|
if (!pLRULastCol) {
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t charge = 0;
|
size_t charge = 0;
|
||||||
|
@ -1182,11 +1186,15 @@ static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray
|
||||||
size_t *values_list_sizes = NULL;
|
size_t *values_list_sizes = NULL;
|
||||||
char **errs = NULL;
|
char **errs = NULL;
|
||||||
keys_list = taosMemoryCalloc(num_keys, sizeof(char *));
|
keys_list = taosMemoryCalloc(num_keys, sizeof(char *));
|
||||||
|
if(!keys_list) {
|
||||||
|
(void)taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
|
return terrno;
|
||||||
|
}
|
||||||
keys_list_sizes = taosMemoryCalloc(num_keys, sizeof(size_t));
|
keys_list_sizes = taosMemoryCalloc(num_keys, sizeof(size_t));
|
||||||
if (!keys_list || !keys_list_sizes) {
|
if (!keys_list_sizes) {
|
||||||
taosMemoryFree(keys_list);
|
taosMemoryFree(keys_list);
|
||||||
(void)taosThreadMutexUnlock(&pTsdb->lruMutex);
|
(void)taosThreadMutexUnlock(&pTsdb->lruMutex);
|
||||||
TAOS_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
return terrno;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < num_keys; ++i) {
|
for (int i = 0; i < num_keys; ++i) {
|
||||||
SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[i];
|
SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[i];
|
||||||
|
@ -1578,7 +1586,7 @@ static int32_t tsdbCacheLoadFromRaw(STsdb *pTsdb, tb_uid_t uid, SArray *pLastArr
|
||||||
|
|
||||||
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
if (!pTmpLastCol) {
|
if (!pTmpLastCol) {
|
||||||
TAOS_CHECK_EXIT(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_EXIT(terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t charge = 0;
|
size_t charge = 0;
|
||||||
|
@ -1678,7 +1686,7 @@ static int32_t tsdbCacheLoadFromRocks(STsdb *pTsdb, tb_uid_t uid, SArray *pLastA
|
||||||
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol));
|
||||||
if (!pTmpLastCol) {
|
if (!pTmpLastCol) {
|
||||||
taosMemoryFreeClear(PToFree);
|
taosMemoryFreeClear(PToFree);
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1896,7 +1904,7 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE
|
||||||
size_t *values_list_sizes = NULL;
|
size_t *values_list_sizes = NULL;
|
||||||
|
|
||||||
if (!keys_list || !keys_list_sizes) {
|
if (!keys_list || !keys_list_sizes) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
const size_t klen = ROCKS_KEY_LEN;
|
const size_t klen = ROCKS_KEY_LEN;
|
||||||
|
@ -1904,7 +1912,7 @@ int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKE
|
||||||
for (int i = 0; i < numKeys; ++i) {
|
for (int i = 0; i < numKeys; ++i) {
|
||||||
char *key = taosMemoryCalloc(1, sizeof(SLastKey));
|
char *key = taosMemoryCalloc(1, sizeof(SLastKey));
|
||||||
if (!key) {
|
if (!key) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
((SLastKey *)key)[0] = *(SLastKey *)taosArrayGet(remainCols, i);
|
((SLastKey *)key)[0] = *(SLastKey *)taosArrayGet(remainCols, i);
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
static int32_t setFirstLastResColToNull(SColumnInfoData* pCol, int32_t row) {
|
static int32_t setFirstLastResColToNull(SColumnInfoData* pCol, int32_t row) {
|
||||||
char* buf = taosMemoryCalloc(1, pCol->info.bytes);
|
char* buf = taosMemoryCalloc(1, pCol->info.bytes);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
SFirstLastRes* pRes = (SFirstLastRes*)((char*)buf + VARSTR_HEADER_SIZE);
|
SFirstLastRes* pRes = (SFirstLastRes*)((char*)buf + VARSTR_HEADER_SIZE);
|
||||||
|
@ -283,7 +283,7 @@ int32_t tsdbCacherowsReaderOpen(void* pVnode, int32_t type, void* pTableIdList,
|
||||||
*pReader = NULL;
|
*pReader = NULL;
|
||||||
SCacheRowsReader* p = taosMemoryCalloc(1, sizeof(SCacheRowsReader));
|
SCacheRowsReader* p = taosMemoryCalloc(1, sizeof(SCacheRowsReader));
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->type = type;
|
p->type = type;
|
||||||
|
@ -323,7 +323,7 @@ int32_t tsdbCacherowsReaderOpen(void* pVnode, int32_t type, void* pTableIdList,
|
||||||
p->transferBuf = taosMemoryCalloc(p->pSchema->numOfCols, POINTER_BYTES);
|
p->transferBuf = taosMemoryCalloc(p->pSchema->numOfCols, POINTER_BYTES);
|
||||||
if (p->transferBuf == NULL) {
|
if (p->transferBuf == NULL) {
|
||||||
tsdbCacherowsReaderClose(p);
|
tsdbCacherowsReaderClose(p);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < p->pSchema->numOfCols; ++i) {
|
for (int32_t i = 0; i < p->pSchema->numOfCols; ++i) {
|
||||||
|
@ -446,7 +446,7 @@ int32_t tsdbRetrieveCacheRows(void* pReader, SSDataBlock* pResBlock, const int32
|
||||||
|
|
||||||
pRes = taosMemoryCalloc(pr->numOfCols, POINTER_BYTES);
|
pRes = taosMemoryCalloc(pr->numOfCols, POINTER_BYTES);
|
||||||
if (pRes == NULL) {
|
if (pRes == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,7 +456,7 @@ int32_t tsdbRetrieveCacheRows(void* pReader, SSDataBlock* pResBlock, const int32
|
||||||
|
|
||||||
pRes[j] = taosMemoryCalloc(1, sizeof(SFirstLastRes) + bytes + pkBufLen + VARSTR_HEADER_SIZE);
|
pRes[j] = taosMemoryCalloc(1, sizeof(SFirstLastRes) + bytes + pkBufLen + VARSTR_HEADER_SIZE);
|
||||||
if (pRes[j] == NULL) {
|
if (pRes[j] == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,7 +504,7 @@ int32_t tsdbRetrieveCacheRows(void* pReader, SSDataBlock* pResBlock, const int32
|
||||||
|
|
||||||
p.rowKey.pks[j].pData = taosMemoryCalloc(1, pr->pkColumn.bytes);
|
p.rowKey.pks[j].pData = taosMemoryCalloc(1, pr->pkColumn.bytes);
|
||||||
if (p.rowKey.pks[j].pData == NULL) {
|
if (p.rowKey.pks[j].pData == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -514,7 +514,7 @@ int32_t tsdbRetrieveCacheRows(void* pReader, SSDataBlock* pResBlock, const int32
|
||||||
if (IS_VAR_DATA_TYPE(pCol->type)) {
|
if (IS_VAR_DATA_TYPE(pCol->type)) {
|
||||||
p.colVal.value.pData = taosMemoryCalloc(pCol->bytes, sizeof(char));
|
p.colVal.value.pData = taosMemoryCalloc(pCol->bytes, sizeof(char));
|
||||||
if (p.colVal.value.pData == NULL) {
|
if (p.colVal.value.pData == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -432,7 +432,7 @@ static int32_t tsdbCommitInfoInit(STsdb *pTsdb) {
|
||||||
|
|
||||||
pTsdb->commitInfo = taosMemoryCalloc(1, sizeof(*pTsdb->commitInfo));
|
pTsdb->commitInfo = taosMemoryCalloc(1, sizeof(*pTsdb->commitInfo));
|
||||||
if (pTsdb->commitInfo == NULL) {
|
if (pTsdb->commitInfo == NULL) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
TAOS_CHECK_GOTO(vHashInit(&pTsdb->commitInfo->ht, tFileSetCommitInfoHash, tFileSetCommitInfoCompare), &lino, _exit);
|
TAOS_CHECK_GOTO(vHashInit(&pTsdb->commitInfo->ht, tFileSetCommitInfoHash, tFileSetCommitInfoCompare), &lino, _exit);
|
||||||
|
|
|
@ -23,7 +23,7 @@ int32_t tsdbDataFileRAWReaderOpen(const char *fname, const SDataFileRAWReaderCon
|
||||||
|
|
||||||
reader[0] = taosMemoryCalloc(1, sizeof(SDataFileRAWReader));
|
reader[0] = taosMemoryCalloc(1, sizeof(SDataFileRAWReader));
|
||||||
if (reader[0] == NULL) {
|
if (reader[0] == NULL) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
reader[0]->config[0] = config[0];
|
reader[0]->config[0] = config[0];
|
||||||
|
@ -94,7 +94,7 @@ int32_t tsdbDataFileRAWWriterOpen(const SDataFileRAWWriterConfig *config, SDataF
|
||||||
|
|
||||||
SDataFileRAWWriter *writer = taosMemoryCalloc(1, sizeof(SDataFileRAWWriter));
|
SDataFileRAWWriter *writer = taosMemoryCalloc(1, sizeof(SDataFileRAWWriter));
|
||||||
if (!writer) {
|
if (!writer) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
writer->config[0] = config[0];
|
writer->config[0] = config[0];
|
||||||
|
|
|
@ -111,7 +111,7 @@ int32_t tsdbDataFileReaderOpen(const char *fname[], const SDataFileReaderConfig
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
|
||||||
if ((*reader = taosMemoryCalloc(1, sizeof(**reader))) == NULL) {
|
if ((*reader = taosMemoryCalloc(1, sizeof(**reader))) == NULL) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < ARRAY_SIZE(reader[0]->local); i++) {
|
for (int32_t i = 0; i < ARRAY_SIZE(reader[0]->local); i++) {
|
||||||
|
@ -1803,7 +1803,7 @@ _exit:
|
||||||
int32_t tsdbDataFileWriterOpen(const SDataFileWriterConfig *config, SDataFileWriter **writer) {
|
int32_t tsdbDataFileWriterOpen(const SDataFileWriterConfig *config, SDataFileWriter **writer) {
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
||||||
if (!writer[0]) {
|
if (!writer[0]) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer[0]->config[0] = config[0];
|
writer[0]->config[0] = config[0];
|
||||||
|
|
|
@ -53,7 +53,7 @@ static int32_t tsdbBinaryToFS(uint8_t *pData, int64_t nData, STsdbFS *pFS) {
|
||||||
if (hasDel) {
|
if (hasDel) {
|
||||||
pFS->pDelFile = (SDelFile *)taosMemoryCalloc(1, sizeof(SDelFile));
|
pFS->pDelFile = (SDelFile *)taosMemoryCalloc(1, sizeof(SDelFile));
|
||||||
if (pFS->pDelFile == NULL) {
|
if (pFS->pDelFile == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ static const char *gCurrentFname[] = {
|
||||||
static int32_t create_fs(STsdb *pTsdb, STFileSystem **fs) {
|
static int32_t create_fs(STsdb *pTsdb, STFileSystem **fs) {
|
||||||
fs[0] = taosMemoryCalloc(1, sizeof(*fs[0]));
|
fs[0] = taosMemoryCalloc(1, sizeof(*fs[0]));
|
||||||
if (fs[0] == NULL) {
|
if (fs[0] == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs[0]->tsdb = pTsdb;
|
fs[0]->tsdb = pTsdb;
|
||||||
|
@ -417,7 +417,7 @@ static int32_t tsdbFSCreateFileObjHash(STFileSystem *fs, STFileHash *hash) {
|
||||||
hash->numBucket = 4096;
|
hash->numBucket = 4096;
|
||||||
hash->buckets = taosMemoryCalloc(hash->numBucket, sizeof(STFileHashEntry *));
|
hash->buckets = taosMemoryCalloc(hash->numBucket, sizeof(STFileHashEntry *));
|
||||||
if (hash->buckets == NULL) {
|
if (hash->buckets == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// vnode.json
|
// vnode.json
|
||||||
|
@ -1013,7 +1013,7 @@ int32_t tsdbFSCreateRefSnapshotWithoutLock(STFileSystem *fs, TFileSetArray **fse
|
||||||
STFileSet *fset, *fset1;
|
STFileSet *fset, *fset1;
|
||||||
|
|
||||||
fsetArr[0] = taosMemoryCalloc(1, sizeof(*fsetArr[0]));
|
fsetArr[0] = taosMemoryCalloc(1, sizeof(*fsetArr[0]));
|
||||||
if (fsetArr[0] == NULL) return TSDB_CODE_OUT_OF_MEMORY;
|
if (fsetArr[0] == NULL) return terrno;
|
||||||
|
|
||||||
TARRAY2_FOREACH(fs->fSetArr, fset) {
|
TARRAY2_FOREACH(fs->fSetArr, fset) {
|
||||||
code = tsdbTFileSetInitRef(fs->tsdb, fset, &fset1);
|
code = tsdbTFileSetInitRef(fs->tsdb, fset, &fset1);
|
||||||
|
@ -1119,7 +1119,7 @@ int32_t tsdbFSCreateRefRangedSnapshot(STFileSystem *fs, int64_t sver, int64_t ev
|
||||||
|
|
||||||
fsrArr[0] = taosMemoryCalloc(1, sizeof(*fsrArr[0]));
|
fsrArr[0] = taosMemoryCalloc(1, sizeof(*fsrArr[0]));
|
||||||
if (fsrArr[0] == NULL) {
|
if (fsrArr[0] == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _out;
|
goto _out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ int32_t tsdbFSetRAWWriterOpen(SFSetRAWWriterConfig *config, SFSetRAWWriter **wri
|
||||||
|
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(SFSetRAWWriter));
|
writer[0] = taosMemoryCalloc(1, sizeof(SFSetRAWWriter));
|
||||||
if (writer[0] == NULL) {
|
if (writer[0] == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer[0]->config[0] = config[0];
|
writer[0]->config[0] = config[0];
|
||||||
|
|
|
@ -136,7 +136,7 @@ int32_t tsdbFSetWriterOpen(SFSetWriterConfig *config, SFSetWriter **writer) {
|
||||||
|
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
||||||
if (writer[0] == NULL) {
|
if (writer[0] == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer[0]->config[0] = config[0];
|
writer[0]->config[0] = config[0];
|
||||||
|
|
|
@ -181,7 +181,7 @@ int32_t tGetDFileSet(uint8_t *p, SDFileSet *pSet) {
|
||||||
// head
|
// head
|
||||||
pSet->pHeadF = (SHeadFile *)taosMemoryCalloc(1, sizeof(SHeadFile));
|
pSet->pHeadF = (SHeadFile *)taosMemoryCalloc(1, sizeof(SHeadFile));
|
||||||
if (pSet->pHeadF == NULL) {
|
if (pSet->pHeadF == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
pSet->pHeadF->nRef = 1;
|
pSet->pHeadF->nRef = 1;
|
||||||
n += tGetHeadFile(p + n, pSet->pHeadF);
|
n += tGetHeadFile(p + n, pSet->pHeadF);
|
||||||
|
@ -189,7 +189,7 @@ int32_t tGetDFileSet(uint8_t *p, SDFileSet *pSet) {
|
||||||
// data
|
// data
|
||||||
pSet->pDataF = (SDataFile *)taosMemoryCalloc(1, sizeof(SDataFile));
|
pSet->pDataF = (SDataFile *)taosMemoryCalloc(1, sizeof(SDataFile));
|
||||||
if (pSet->pDataF == NULL) {
|
if (pSet->pDataF == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
pSet->pDataF->nRef = 1;
|
pSet->pDataF->nRef = 1;
|
||||||
n += tGetDataFile(p + n, pSet->pDataF);
|
n += tGetDataFile(p + n, pSet->pDataF);
|
||||||
|
@ -197,7 +197,7 @@ int32_t tGetDFileSet(uint8_t *p, SDFileSet *pSet) {
|
||||||
// sma
|
// sma
|
||||||
pSet->pSmaF = (SSmaFile *)taosMemoryCalloc(1, sizeof(SSmaFile));
|
pSet->pSmaF = (SSmaFile *)taosMemoryCalloc(1, sizeof(SSmaFile));
|
||||||
if (pSet->pSmaF == NULL) {
|
if (pSet->pSmaF == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
pSet->pSmaF->nRef = 1;
|
pSet->pSmaF->nRef = 1;
|
||||||
n += tGetSmaFile(p + n, pSet->pSmaF);
|
n += tGetSmaFile(p + n, pSet->pSmaF);
|
||||||
|
@ -207,7 +207,7 @@ int32_t tGetDFileSet(uint8_t *p, SDFileSet *pSet) {
|
||||||
for (int32_t iStt = 0; iStt < pSet->nSttF; iStt++) {
|
for (int32_t iStt = 0; iStt < pSet->nSttF; iStt++) {
|
||||||
pSet->aSttF[iStt] = (SSttFile *)taosMemoryCalloc(1, sizeof(SSttFile));
|
pSet->aSttF[iStt] = (SSttFile *)taosMemoryCalloc(1, sizeof(SSttFile));
|
||||||
if (pSet->aSttF[iStt] == NULL) {
|
if (pSet->aSttF[iStt] == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
pSet->aSttF[iStt]->nRef = 1;
|
pSet->aSttF[iStt]->nRef = 1;
|
||||||
n += tGetSttFile(p + n, pSet->aSttF[iStt]);
|
n += tGetSttFile(p + n, pSet->aSttF[iStt]);
|
||||||
|
|
|
@ -50,7 +50,7 @@ int32_t tsdbOpen(SVnode *pVnode, STsdb **ppTsdb, const char *dir, STsdbKeepCfg *
|
||||||
// create handle
|
// create handle
|
||||||
pTsdb = (STsdb *)taosMemoryCalloc(1, sizeof(*pTsdb) + slen);
|
pTsdb = (STsdb *)taosMemoryCalloc(1, sizeof(*pTsdb) + slen);
|
||||||
if (pTsdb == NULL) {
|
if (pTsdb == NULL) {
|
||||||
TAOS_CHECK_RETURN(TSDB_CODE_OUT_OF_MEMORY);
|
TAOS_CHECK_RETURN(terrno);
|
||||||
}
|
}
|
||||||
|
|
||||||
pTsdb->path = (char *)&pTsdb[1];
|
pTsdb->path = (char *)&pTsdb[1];
|
||||||
|
|
|
@ -257,7 +257,7 @@ static int32_t initFilesetIterator(SFilesetIter* pIter, TFileSetArray* pFileSetA
|
||||||
if (pIter->pSttBlockReader == NULL) {
|
if (pIter->pSttBlockReader == NULL) {
|
||||||
pIter->pSttBlockReader = taosMemoryCalloc(1, sizeof(struct SSttBlockReader));
|
pIter->pSttBlockReader = taosMemoryCalloc(1, sizeof(struct SSttBlockReader));
|
||||||
if (pIter->pSttBlockReader == NULL) {
|
if (pIter->pSttBlockReader == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
tsdbError("failed to prepare the last block iterator, since:%s %s", tstrerror(code), pReader->idStr);
|
tsdbError("failed to prepare the last block iterator, since:%s %s", tstrerror(code), pReader->idStr);
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
@ -507,13 +507,13 @@ static int32_t initResBlockInfo(SResultBlockInfo* pResBlockInfo, int64_t capacit
|
||||||
if (IS_VAR_DATA_TYPE(pSup->pk.type)) {
|
if (IS_VAR_DATA_TYPE(pSup->pk.type)) {
|
||||||
p->info.pks[0].pData = taosMemoryCalloc(1, pSup->pk.bytes);
|
p->info.pks[0].pData = taosMemoryCalloc(1, pSup->pk.bytes);
|
||||||
if (p->info.pks[0].pData == NULL) {
|
if (p->info.pks[0].pData == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->info.pks[1].pData = taosMemoryCalloc(1, pSup->pk.bytes);
|
p->info.pks[1].pData = taosMemoryCalloc(1, pSup->pk.bytes);
|
||||||
if (p->info.pks[1].pData == NULL) {
|
if (p->info.pks[1].pData == NULL) {
|
||||||
taosMemoryFreeClear(p->info.pks[0].pData);
|
taosMemoryFreeClear(p->info.pks[0].pData);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
p->info.pks[0].nData = pSup->pk.bytes;
|
p->info.pks[0].nData = pSup->pk.bytes;
|
||||||
|
@ -533,7 +533,7 @@ static int32_t tsdbReaderCreate(SVnode* pVnode, SQueryTableDataCond* pCond, void
|
||||||
int8_t level = 0;
|
int8_t level = 0;
|
||||||
STsdbReader* pReader = (STsdbReader*)taosMemoryCalloc(1, sizeof(*pReader));
|
STsdbReader* pReader = (STsdbReader*)taosMemoryCalloc(1, sizeof(*pReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _end;
|
goto _end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5426,7 +5426,7 @@ int32_t tsdbRetrieveDatablockSMA2(STsdbReader* pReader, SSDataBlock* pDataBlock,
|
||||||
size_t num = taosArrayGetSize(pResBlock->pDataBlock);
|
size_t num = taosArrayGetSize(pResBlock->pDataBlock);
|
||||||
pResBlock->pBlockAgg = taosMemoryCalloc(num, sizeof(SColumnDataAgg));
|
pResBlock->pBlockAgg = taosMemoryCalloc(num, sizeof(SColumnDataAgg));
|
||||||
if (pResBlock->pBlockAgg == NULL) {
|
if (pResBlock->pBlockAgg == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
for (int i = 0; i < num; ++i) {
|
for (int i = 0; i < num; ++i) {
|
||||||
pResBlock->pBlockAgg[i].colId = -1;
|
pResBlock->pBlockAgg[i].colId = -1;
|
||||||
|
|
|
@ -38,7 +38,7 @@ static int32_t initBlockScanInfoBuf(SBlockInfoBuf* pBuf, int32_t numOfTables) {
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
char* p = taosMemoryCalloc(pBuf->numPerBucket, sizeof(STableBlockScanInfo));
|
char* p = taosMemoryCalloc(pBuf->numPerBucket, sizeof(STableBlockScanInfo));
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* px = taosArrayPush(pBuf->pData, &p);
|
void* px = taosArrayPush(pBuf->pData, &p);
|
||||||
|
@ -50,7 +50,7 @@ static int32_t initBlockScanInfoBuf(SBlockInfoBuf* pBuf, int32_t numOfTables) {
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
char* p = taosMemoryCalloc(remainder, sizeof(STableBlockScanInfo));
|
char* p = taosMemoryCalloc(remainder, sizeof(STableBlockScanInfo));
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
void* px = taosArrayPush(pBuf->pData, &p);
|
void* px = taosArrayPush(pBuf->pData, &p);
|
||||||
if (px == NULL) {
|
if (px == NULL) {
|
||||||
|
@ -96,7 +96,7 @@ int32_t ensureBlockScanInfoBuf(SBlockInfoBuf* pBuf, int32_t numOfTables) {
|
||||||
for (int32_t i = 0; i < num; ++i) {
|
for (int32_t i = 0; i < num; ++i) {
|
||||||
char* p = taosMemoryCalloc(pBuf->numPerBucket, sizeof(STableBlockScanInfo));
|
char* p = taosMemoryCalloc(pBuf->numPerBucket, sizeof(STableBlockScanInfo));
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* px = taosArrayPush(pBuf->pData, &p);
|
void* px = taosArrayPush(pBuf->pData, &p);
|
||||||
|
@ -108,7 +108,7 @@ int32_t ensureBlockScanInfoBuf(SBlockInfoBuf* pBuf, int32_t numOfTables) {
|
||||||
if (remainder > 0) {
|
if (remainder > 0) {
|
||||||
char* p = taosMemoryCalloc(remainder, sizeof(STableBlockScanInfo));
|
char* p = taosMemoryCalloc(remainder, sizeof(STableBlockScanInfo));
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
void* px = taosArrayPush(pBuf->pData, &p);
|
void* px = taosArrayPush(pBuf->pData, &p);
|
||||||
if (px == NULL) {
|
if (px == NULL) {
|
||||||
|
@ -231,7 +231,6 @@ int32_t initRowKey(SRowKey* pKey, int64_t ts, int32_t numOfPks, int32_t type, in
|
||||||
pKey->pks[0].nData = 0;
|
pKey->pks[0].nData = 0;
|
||||||
|
|
||||||
if (pKey->pks[0].pData == NULL) {
|
if (pKey->pks[0].pData == NULL) {
|
||||||
terrno = TSDB_CODE_OUT_OF_MEMORY;
|
|
||||||
return terrno;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -525,13 +524,13 @@ static void cleanupBlockOrderSupporter(SBlockOrderSupporter* pSup) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t initBlockOrderSupporter(SBlockOrderSupporter* pSup, int32_t numOfTables) {
|
static int32_t initBlockOrderSupporter(SBlockOrderSupporter* pSup, int32_t numOfTables) {
|
||||||
pSup->numOfBlocksPerTable = taosMemoryCalloc(1, sizeof(int32_t) * numOfTables);
|
|
||||||
pSup->indexPerTable = taosMemoryCalloc(1, sizeof(int32_t) * numOfTables);
|
|
||||||
pSup->pDataBlockInfo = taosMemoryCalloc(1, POINTER_BYTES * numOfTables);
|
pSup->pDataBlockInfo = taosMemoryCalloc(1, POINTER_BYTES * numOfTables);
|
||||||
|
pSup->indexPerTable = taosMemoryCalloc(1, sizeof(int32_t) * numOfTables);
|
||||||
if (pSup->numOfBlocksPerTable == NULL || pSup->indexPerTable == NULL || pSup->pDataBlockInfo == NULL) {
|
pSup->numOfBlocksPerTable = taosMemoryCalloc(1, sizeof(int32_t) * numOfTables);
|
||||||
|
pSup->numOfTables = 0;
|
||||||
|
if (pSup->pDataBlockInfo == NULL || pSup->indexPerTable == NULL || pSup->numOfBlocksPerTable == NULL) {
|
||||||
cleanupBlockOrderSupporter(pSup);
|
cleanupBlockOrderSupporter(pSup);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -60,7 +60,7 @@ static int32_t tsdbOpenFileImpl(STsdbFD *pFD) {
|
||||||
|
|
||||||
pFD->pBuf = taosMemoryCalloc(1, szPage);
|
pFD->pBuf = taosMemoryCalloc(1, szPage);
|
||||||
if (pFD->pBuf == NULL) {
|
if (pFD->pBuf == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lc_size > 0) {
|
if (lc_size > 0) {
|
||||||
|
@ -100,7 +100,7 @@ int32_t tsdbOpenFile(const char *path, STsdb *pTsdb, int32_t flag, STsdbFD **ppF
|
||||||
|
|
||||||
pFD = (STsdbFD *)taosMemoryCalloc(1, sizeof(*pFD) + strlen(path) + 1);
|
pFD = (STsdbFD *)taosMemoryCalloc(1, sizeof(*pFD) + strlen(path) + 1);
|
||||||
if (pFD == NULL) {
|
if (pFD == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
pFD->path = (char *)&pFD[1];
|
pFD->path = (char *)&pFD[1];
|
||||||
|
@ -363,7 +363,7 @@ static int32_t tsdbReadFileBlock(STsdbFD *pFD, int64_t offset, int64_t size, boo
|
||||||
|
|
||||||
buf = taosMemoryCalloc(1, size);
|
buf = taosMemoryCalloc(1, size);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t chunkno = offset / chunksize + 1; n < size; ++chunkno) {
|
for (int32_t chunkno = offset / chunksize + 1; n < size; ++chunkno) {
|
||||||
|
@ -587,7 +587,7 @@ int32_t tsdbDataFReaderOpen(SDataFReader **ppReader, STsdb *pTsdb, SDFileSet *pS
|
||||||
// alloc
|
// alloc
|
||||||
pReader = (SDataFReader *)taosMemoryCalloc(1, sizeof(*pReader));
|
pReader = (SDataFReader *)taosMemoryCalloc(1, sizeof(*pReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
pReader->pTsdb = pTsdb;
|
pReader->pTsdb = pTsdb;
|
||||||
pReader->pSet = pSet;
|
pReader->pSet = pSet;
|
||||||
|
@ -794,7 +794,7 @@ int32_t tsdbDelFReaderOpen(SDelFReader **ppReader, SDelFile *pFile, STsdb *pTsdb
|
||||||
// alloc
|
// alloc
|
||||||
pDelFReader = (SDelFReader *)taosMemoryCalloc(1, sizeof(*pDelFReader));
|
pDelFReader = (SDelFReader *)taosMemoryCalloc(1, sizeof(*pDelFReader));
|
||||||
if (pDelFReader == NULL) {
|
if (pDelFReader == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// open impl
|
// open impl
|
||||||
|
|
|
@ -416,7 +416,7 @@ int32_t tsdbSnapReaderOpen(STsdb* tsdb, int64_t sver, int64_t ever, int8_t type,
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
|
||||||
reader[0] = (STsdbSnapReader*)taosMemoryCalloc(1, sizeof(*reader[0]));
|
reader[0] = (STsdbSnapReader*)taosMemoryCalloc(1, sizeof(*reader[0]));
|
||||||
if (reader[0] == NULL) return TSDB_CODE_OUT_OF_MEMORY;
|
if (reader[0] == NULL) return terrno;
|
||||||
|
|
||||||
reader[0]->tsdb = tsdb;
|
reader[0]->tsdb = tsdb;
|
||||||
reader[0]->sver = sver;
|
reader[0]->sver = sver;
|
||||||
|
@ -1047,7 +1047,7 @@ int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, void* pRang
|
||||||
|
|
||||||
// start to write
|
// start to write
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
||||||
if (writer[0] == NULL) return TSDB_CODE_OUT_OF_MEMORY;
|
if (writer[0] == NULL) return terrno;
|
||||||
|
|
||||||
writer[0]->tsdb = pTsdb;
|
writer[0]->tsdb = pTsdb;
|
||||||
writer[0]->sver = sver;
|
writer[0]->sver = sver;
|
||||||
|
|
|
@ -52,7 +52,7 @@ int32_t tsdbSnapRAWReaderOpen(STsdb* tsdb, int64_t ever, int8_t type, STsdbSnapR
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
|
||||||
reader[0] = taosMemoryCalloc(1, sizeof(STsdbSnapRAWReader));
|
reader[0] = taosMemoryCalloc(1, sizeof(STsdbSnapRAWReader));
|
||||||
if (reader[0] == NULL) return TSDB_CODE_OUT_OF_MEMORY;
|
if (reader[0] == NULL) return terrno;
|
||||||
|
|
||||||
reader[0]->tsdb = tsdb;
|
reader[0]->tsdb = tsdb;
|
||||||
reader[0]->ever = ever;
|
reader[0]->ever = ever;
|
||||||
|
@ -196,7 +196,7 @@ static int32_t tsdbSnapRAWReadNext(STsdbSnapRAWReader* reader, SSnapDataHdr** pp
|
||||||
|
|
||||||
void* pBuf = taosMemoryCalloc(1, sizeof(SSnapDataHdr) + sizeof(STsdbDataRAWBlockHeader) + dataLength);
|
void* pBuf = taosMemoryCalloc(1, sizeof(SSnapDataHdr) + sizeof(STsdbDataRAWBlockHeader) + dataLength);
|
||||||
if (pBuf == NULL) {
|
if (pBuf == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
TSDB_CHECK_CODE(code, lino, _exit);
|
TSDB_CHECK_CODE(code, lino, _exit);
|
||||||
}
|
}
|
||||||
SSnapDataHdr* pHdr = pBuf;
|
SSnapDataHdr* pHdr = pBuf;
|
||||||
|
@ -343,7 +343,7 @@ int32_t tsdbSnapRAWWriterOpen(STsdb* pTsdb, int64_t ever, STsdbSnapRAWWriter** w
|
||||||
|
|
||||||
// start to write
|
// start to write
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
||||||
if (writer[0] == NULL) return TSDB_CODE_OUT_OF_MEMORY;
|
if (writer[0] == NULL) return terrno;
|
||||||
|
|
||||||
writer[0]->tsdb = pTsdb;
|
writer[0]->tsdb = pTsdb;
|
||||||
writer[0]->ever = ever;
|
writer[0]->ever = ever;
|
||||||
|
|
|
@ -41,7 +41,7 @@ int32_t tsdbSttFileReaderOpen(const char *fname, const SSttFileReaderConfig *con
|
||||||
|
|
||||||
reader[0] = taosMemoryCalloc(1, sizeof(*reader[0]));
|
reader[0] = taosMemoryCalloc(1, sizeof(*reader[0]));
|
||||||
if (reader[0] == NULL) {
|
if (reader[0] == NULL) {
|
||||||
TAOS_CHECK_GOTO(TSDB_CODE_OUT_OF_MEMORY, &lino, _exit);
|
TAOS_CHECK_GOTO(terrno, &lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
reader[0]->config[0] = config[0];
|
reader[0]->config[0] = config[0];
|
||||||
|
@ -897,7 +897,7 @@ static int32_t tsdbSttFWriterCloseAbort(SSttFileWriter *writer) {
|
||||||
int32_t tsdbSttFileWriterOpen(const SSttFileWriterConfig *config, SSttFileWriter **writer) {
|
int32_t tsdbSttFileWriterOpen(const SSttFileWriterConfig *config, SSttFileWriter **writer) {
|
||||||
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
writer[0] = taosMemoryCalloc(1, sizeof(*writer[0]));
|
||||||
if (writer[0] == NULL) {
|
if (writer[0] == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
writer[0]->config[0] = config[0];
|
writer[0]->config[0] = config[0];
|
||||||
|
|
|
@ -326,7 +326,7 @@ static int32_t vnodeAsyncInit(SVAsync **async, const char *label) {
|
||||||
|
|
||||||
(*async) = (SVAsync *)taosMemoryCalloc(1, sizeof(SVAsync) + strlen(label) + 1);
|
(*async) = (SVAsync *)taosMemoryCalloc(1, sizeof(SVAsync) + strlen(label) + 1);
|
||||||
if ((*async) == NULL) {
|
if ((*async) == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy((char *)((*async) + 1), label);
|
strcpy((char *)((*async) + 1), label);
|
||||||
|
@ -480,7 +480,7 @@ int32_t vnodeAsync(SVAChannelID *channelID, EVAPriority priority, int32_t (*exec
|
||||||
// create task object
|
// create task object
|
||||||
SVATask *task = (SVATask *)taosMemoryCalloc(1, sizeof(SVATask));
|
SVATask *task = (SVATask *)taosMemoryCalloc(1, sizeof(SVATask));
|
||||||
if (task == NULL) {
|
if (task == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
task->priority = priority;
|
task->priority = priority;
|
||||||
|
|
|
@ -372,7 +372,7 @@ int vnodeAsyncCommit(SVnode *pVnode) {
|
||||||
|
|
||||||
SCommitInfo *pInfo = (SCommitInfo *)taosMemoryCalloc(1, sizeof(*pInfo));
|
SCommitInfo *pInfo = (SCommitInfo *)taosMemoryCalloc(1, sizeof(*pInfo));
|
||||||
if (NULL == pInfo) {
|
if (NULL == pInfo) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// prepare to commit
|
// prepare to commit
|
||||||
|
|
|
@ -27,7 +27,7 @@ struct SVHashEntry {
|
||||||
static int32_t vHashRehash(SVHashTable* ht, uint32_t newNumBuckets) {
|
static int32_t vHashRehash(SVHashTable* ht, uint32_t newNumBuckets) {
|
||||||
SVHashEntry** newBuckets = (SVHashEntry**)taosMemoryCalloc(newNumBuckets, sizeof(SVHashEntry*));
|
SVHashEntry** newBuckets = (SVHashEntry**)taosMemoryCalloc(newNumBuckets, sizeof(SVHashEntry*));
|
||||||
if (newBuckets == NULL) {
|
if (newBuckets == NULL) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int32_t i = 0; i < ht->numBuckets; i++) {
|
for (int32_t i = 0; i < ht->numBuckets; i++) {
|
||||||
|
@ -65,7 +65,7 @@ int32_t vHashInit(SVHashTable** ht, uint32_t (*hash)(const void*), int32_t (*com
|
||||||
(*ht)->buckets = (SVHashEntry**)taosMemoryCalloc((*ht)->numBuckets, sizeof(SVHashEntry*));
|
(*ht)->buckets = (SVHashEntry**)taosMemoryCalloc((*ht)->numBuckets, sizeof(SVHashEntry*));
|
||||||
if ((*ht)->buckets == NULL) {
|
if ((*ht)->buckets == NULL) {
|
||||||
taosMemoryFree(*ht);
|
taosMemoryFree(*ht);
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -118,7 +118,7 @@ int32_t vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
||||||
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc(sizeof(SSchema) * (metaRsp.numOfColumns + metaRsp.numOfTags));
|
metaRsp.pSchemas = (SSchema *)taosMemoryMalloc(sizeof(SSchema) * (metaRsp.numOfColumns + metaRsp.numOfTags));
|
||||||
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryCalloc(metaRsp.numOfColumns, sizeof(SSchemaExt));
|
metaRsp.pSchemaExt = (SSchemaExt *)taosMemoryCalloc(metaRsp.numOfColumns, sizeof(SSchemaExt));
|
||||||
if (NULL == metaRsp.pSchemas || NULL == metaRsp.pSchemaExt) {
|
if (NULL == metaRsp.pSchemas || NULL == metaRsp.pSchemaExt) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
(void)memcpy(metaRsp.pSchemas, schema.pSchema, sizeof(SSchema) * schema.nCols);
|
(void)memcpy(metaRsp.pSchemas, schema.pSchema, sizeof(SSchema) * schema.nCols);
|
||||||
|
@ -150,7 +150,7 @@ int32_t vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRsp == NULL) {
|
if (pRsp == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ int32_t vnodeGetTableCfg(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pRsp == NULL) {
|
if (pRsp == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -869,7 +869,7 @@ int32_t vnodeGetStreamProgress(SVnode *pVnode, SRpcMsg *pMsg, bool direct) {
|
||||||
buf = taosMemoryCalloc(1, rspLen);
|
buf = taosMemoryCalloc(1, rspLen);
|
||||||
}
|
}
|
||||||
if (!buf) {
|
if (!buf) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _OVER;
|
goto _OVER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ int32_t vnodeSnapReaderOpen(SVnode *pVnode, SSnapshotParam *pParam, SVSnapReader
|
||||||
|
|
||||||
pReader = (SVSnapReader *)taosMemoryCalloc(1, sizeof(*pReader));
|
pReader = (SVSnapReader *)taosMemoryCalloc(1, sizeof(*pReader));
|
||||||
if (pReader == NULL) {
|
if (pReader == NULL) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = terrno;
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
pReader->pVnode = pVnode;
|
pReader->pVnode = pVnode;
|
||||||
|
@ -617,7 +617,7 @@ int32_t vnodeSnapWriterOpen(SVnode *pVnode, SSnapshotParam *pParam, SVSnapWriter
|
||||||
// alloc
|
// alloc
|
||||||
pWriter = (SVSnapWriter *)taosMemoryCalloc(1, sizeof(*pWriter));
|
pWriter = (SVSnapWriter *)taosMemoryCalloc(1, sizeof(*pWriter));
|
||||||
if (pWriter == NULL) {
|
if (pWriter == NULL) {
|
||||||
TSDB_CHECK_CODE(code = TSDB_CODE_OUT_OF_MEMORY, lino, _exit);
|
TSDB_CHECK_CODE(code = terrno, lino, _exit);
|
||||||
}
|
}
|
||||||
pWriter->pVnode = pVnode;
|
pWriter->pVnode = pVnode;
|
||||||
pWriter->sver = sver;
|
pWriter->sver = sver;
|
||||||
|
|
|
@ -1527,7 +1527,7 @@ static int32_t vnodeResetTableCxt(SMeta *pMeta, SSubmitReqConvertCxt *pCxt) {
|
||||||
if (NULL == pCxt->pTbData) {
|
if (NULL == pCxt->pTbData) {
|
||||||
pCxt->pTbData = taosMemoryCalloc(1, sizeof(SSubmitTbData));
|
pCxt->pTbData = taosMemoryCalloc(1, sizeof(SSubmitTbData));
|
||||||
if (NULL == pCxt->pTbData) {
|
if (NULL == pCxt->pTbData) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pCxt->pTbData->flags = 0;
|
pCxt->pTbData->flags = 0;
|
||||||
|
@ -1610,7 +1610,7 @@ static int32_t vnodeDecodeCreateTbReq(SSubmitReqConvertCxt *pCxt) {
|
||||||
|
|
||||||
pCxt->pTbData->pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
pCxt->pTbData->pCreateTbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
||||||
if (NULL == pCxt->pTbData->pCreateTbReq) {
|
if (NULL == pCxt->pTbData->pCreateTbReq) {
|
||||||
return TSDB_CODE_OUT_OF_MEMORY;
|
return terrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDecoder decoder = {0};
|
SDecoder decoder = {0};
|
||||||
|
|
|
@ -828,7 +828,7 @@ int32_t ctgInitJob(SCatalog* pCtg, SRequestConnInfo* pConn, SCtgJob** job, const
|
||||||
|
|
||||||
*job = taosMemoryCalloc(1, sizeof(SCtgJob));
|
*job = taosMemoryCalloc(1, sizeof(SCtgJob));
|
||||||
if (NULL == *job) {
|
if (NULL == *job) {
|
||||||
ctgError("failed to calloc, size:%d, qid:0x%" PRIx64, (int32_t)sizeof(SCtgJob), pConn->requestId);
|
ctgError("failed to calloc, size:%d,QID:0x%" PRIx64, (int32_t)sizeof(SCtgJob), pConn->requestId);
|
||||||
CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
CTG_ERR_RET(TSDB_CODE_OUT_OF_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -538,7 +538,7 @@ int32_t ctgAsyncSendMsg(SCatalog* pCtg, SRequestConnInfo* pConn, SCtgJob* pJob,
|
||||||
CTG_ERR_JRET(code);
|
CTG_ERR_JRET(code);
|
||||||
}
|
}
|
||||||
|
|
||||||
ctgDebug("ctg req msg sent, qid:0x%" PRIx64 ", msg type:%d, %s", pJob->queryId, msgType, TMSG_INFO(msgType));
|
ctgDebug("ctg req msg sent,QID:0x%" PRIx64 ", msg type:%d, %s", pJob->queryId, msgType, TMSG_INFO(msgType));
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
||||||
_return:
|
_return:
|
||||||
|
|
|
@ -1747,6 +1747,8 @@ static SColumn* createColumn(int32_t blockId, int32_t slotId, int32_t colId, SDa
|
||||||
int32_t createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
|
int32_t createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
|
||||||
int32_t code = TSDB_CODE_SUCCESS;
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
int32_t lino = 0;
|
int32_t lino = 0;
|
||||||
|
pExp->base.numOfParams = 0;
|
||||||
|
pExp->base.pParam = NULL;
|
||||||
pExp->pExpr = taosMemoryCalloc(1, sizeof(tExprNode));
|
pExp->pExpr = taosMemoryCalloc(1, sizeof(tExprNode));
|
||||||
QUERY_CHECK_NULL(pExp->pExpr, code, lino, _end, terrno);
|
QUERY_CHECK_NULL(pExp->pExpr, code, lino, _end, terrno);
|
||||||
|
|
||||||
|
@ -1787,6 +1789,7 @@ int32_t createExprFromOneNode(SExprInfo* pExp, SNode* pNode, int16_t slotId) {
|
||||||
createResSchema(pType->type, pType->bytes, slotId, pType->scale, pType->precision, pValNode->node.aliasName);
|
createResSchema(pType->type, pType->bytes, slotId, pType->scale, pType->precision, pValNode->node.aliasName);
|
||||||
pExp->base.pParam[0].type = FUNC_PARAM_TYPE_VALUE;
|
pExp->base.pParam[0].type = FUNC_PARAM_TYPE_VALUE;
|
||||||
code = nodesValueNodeToVariant(pValNode, &pExp->base.pParam[0].param);
|
code = nodesValueNodeToVariant(pValNode, &pExp->base.pParam[0].param);
|
||||||
|
QUERY_CHECK_CODE(code, lino, _end);
|
||||||
} else if (type == QUERY_NODE_FUNCTION) {
|
} else if (type == QUERY_NODE_FUNCTION) {
|
||||||
pExp->pExpr->nodeType = QUERY_NODE_FUNCTION;
|
pExp->pExpr->nodeType = QUERY_NODE_FUNCTION;
|
||||||
SFunctionNode* pFuncNode = (SFunctionNode*)pNode;
|
SFunctionNode* pFuncNode = (SFunctionNode*)pNode;
|
||||||
|
|
|
@ -601,7 +601,7 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId,
|
||||||
SExecTaskInfo** pTask = (SExecTaskInfo**)pTaskInfo;
|
SExecTaskInfo** pTask = (SExecTaskInfo**)pTaskInfo;
|
||||||
(void)taosThreadOnce(&initPoolOnce, initRefPool);
|
(void)taosThreadOnce(&initPoolOnce, initRefPool);
|
||||||
|
|
||||||
qDebug("start to create task, TID:0x%" PRIx64 " qid:0x%" PRIx64 ", vgId:%d", taskId, pSubplan->id.queryId, vgId);
|
qDebug("start to create task, TID:0x%" PRIx64 "QID:0x%" PRIx64 ", vgId:%d", taskId, pSubplan->id.queryId, vgId);
|
||||||
|
|
||||||
int32_t code = createExecTaskInfo(pSubplan, pTask, readHandle, taskId, vgId, sql, model);
|
int32_t code = createExecTaskInfo(pSubplan, pTask, readHandle, taskId, vgId, sql, model);
|
||||||
if (code != TSDB_CODE_SUCCESS || NULL == *pTask) {
|
if (code != TSDB_CODE_SUCCESS || NULL == *pTask) {
|
||||||
|
@ -630,7 +630,7 @@ int32_t qCreateExecTask(SReadHandle* readHandle, int32_t vgId, uint64_t taskId,
|
||||||
code = dsCreateDataSinker(pSinkManager, pSubplan->pDataSink, handle, pSinkParam, (*pTask)->id.str);
|
code = dsCreateDataSinker(pSinkManager, pSubplan->pDataSink, handle, pSinkParam, (*pTask)->id.str);
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug("subplan task create completed, TID:0x%" PRIx64 " qid:0x%" PRIx64, taskId, pSubplan->id.queryId);
|
qDebug("subplan task create completed, TID:0x%" PRIx64 "QID:0x%" PRIx64, taskId, pSubplan->id.queryId);
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
// if failed to add ref for all tables in this query, abort current query
|
// if failed to add ref for all tables in this query, abort current query
|
||||||
|
|
|
@ -516,6 +516,9 @@ int32_t createFillOperatorInfo(SOperatorInfo* downstream, SFillPhysiNode* pPhyFi
|
||||||
return code;
|
return code;
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
qError("%s failed at line %d since %s", __func__, lino, tstrerror(code));
|
||||||
|
}
|
||||||
if (pInfo != NULL) {
|
if (pInfo != NULL) {
|
||||||
destroyFillOperatorInfo(pInfo);
|
destroyFillOperatorInfo(pInfo);
|
||||||
}
|
}
|
||||||
|
|
|
@ -287,7 +287,7 @@ void buildTaskId(uint64_t taskId, uint64_t queryId, char* dst) {
|
||||||
memcpy(p, "TID:0x", offset);
|
memcpy(p, "TID:0x", offset);
|
||||||
offset += tintToHex(taskId, &p[offset]);
|
offset += tintToHex(taskId, &p[offset]);
|
||||||
|
|
||||||
memcpy(&p[offset], " qid:0x", 7);
|
memcpy(&p[offset], "QID:0x", 7);
|
||||||
offset += 7;
|
offset += 7;
|
||||||
offset += tintToHex(queryId, &p[offset]);
|
offset += tintToHex(queryId, &p[offset]);
|
||||||
|
|
||||||
|
|
|
@ -1012,7 +1012,7 @@ static int32_t sysTableGetGeomText(char* iGeom, int32_t nGeom, char** output, in
|
||||||
|
|
||||||
if (TSDB_CODE_SUCCESS != (code = initCtxAsText()) ||
|
if (TSDB_CODE_SUCCESS != (code = initCtxAsText()) ||
|
||||||
TSDB_CODE_SUCCESS != (code = doAsText(iGeom, nGeom, &outputWKT))) {
|
TSDB_CODE_SUCCESS != (code = doAsText(iGeom, nGeom, &outputWKT))) {
|
||||||
qError("geo text for systable failed:%s", getThreadLocalGeosCtx()->errMsg);
|
qError("geo text for systable failed:%s", getGeosErrMsg(code));
|
||||||
*output = NULL;
|
*output = NULL;
|
||||||
*nOutput = 0;
|
*nOutput = 0;
|
||||||
return code;
|
return code;
|
||||||
|
|
|
@ -1071,8 +1071,8 @@ int32_t acquireUdfFuncHandle(char *udfName, UdfcFuncHandle *pHandle) {
|
||||||
if (stubIndex != -1) {
|
if (stubIndex != -1) {
|
||||||
SUdfcFuncStub *foundStub = taosArrayGet(gUdfcProxy.udfStubs, stubIndex);
|
SUdfcFuncStub *foundStub = taosArrayGet(gUdfcProxy.udfStubs, stubIndex);
|
||||||
UdfcFuncHandle handle = foundStub->handle;
|
UdfcFuncHandle handle = foundStub->handle;
|
||||||
int64_t currUs = taosGetTimestampUs();
|
int64_t currUs = taosGetTimestampUs();
|
||||||
bool expired = (currUs - foundStub->createTime) >= 10 * 1000 * 1000;
|
bool expired = (currUs - foundStub->createTime) >= 10 * 1000 * 1000;
|
||||||
if (!expired) {
|
if (!expired) {
|
||||||
if (handle != NULL && ((SUdfcUvSession *)handle)->udfUvPipe != NULL) {
|
if (handle != NULL && ((SUdfcUvSession *)handle)->udfUvPipe != NULL) {
|
||||||
*pHandle = foundStub->handle;
|
*pHandle = foundStub->handle;
|
||||||
|
@ -1086,14 +1086,15 @@ int32_t acquireUdfFuncHandle(char *udfName, UdfcFuncHandle *pHandle) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
fnInfo("udf handle expired for %s, will setup udf. move it to expired list", udfName);
|
fnInfo("udf handle expired for %s, will setup udf. move it to expired list", udfName);
|
||||||
taosArrayRemove(gUdfcProxy.udfStubs, stubIndex);
|
if (taosArrayPush(gUdfcProxy.expiredUdfStubs, foundStub) == NULL) {
|
||||||
if(taosArrayPush(gUdfcProxy.expiredUdfStubs, foundStub) == NULL) {
|
|
||||||
fnError("acquireUdfFuncHandle: failed to push udf stub to array");
|
fnError("acquireUdfFuncHandle: failed to push udf stub to array");
|
||||||
goto _exit;
|
} else {
|
||||||
|
taosArrayRemove(gUdfcProxy.udfStubs, stubIndex);
|
||||||
|
taosArraySort(gUdfcProxy.expiredUdfStubs, compareUdfcFuncSub);
|
||||||
}
|
}
|
||||||
taosArraySort(gUdfcProxy.expiredUdfStubs, compareUdfcFuncSub);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
uv_mutex_unlock(&gUdfcProxy.udfStubsMutex);
|
||||||
*pHandle = NULL;
|
*pHandle = NULL;
|
||||||
code = doSetupUdf(udfName, pHandle);
|
code = doSetupUdf(udfName, pHandle);
|
||||||
if (code == TSDB_CODE_SUCCESS) {
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
|
@ -1102,17 +1103,20 @@ int32_t acquireUdfFuncHandle(char *udfName, UdfcFuncHandle *pHandle) {
|
||||||
stub.handle = *pHandle;
|
stub.handle = *pHandle;
|
||||||
++stub.refCount;
|
++stub.refCount;
|
||||||
stub.createTime = taosGetTimestampUs();
|
stub.createTime = taosGetTimestampUs();
|
||||||
if(taosArrayPush(gUdfcProxy.udfStubs, &stub) == NULL) {
|
uv_mutex_lock(&gUdfcProxy.udfStubsMutex);
|
||||||
|
if (taosArrayPush(gUdfcProxy.udfStubs, &stub) == NULL) {
|
||||||
fnError("acquireUdfFuncHandle: failed to push udf stub to array");
|
fnError("acquireUdfFuncHandle: failed to push udf stub to array");
|
||||||
|
uv_mutex_unlock(&gUdfcProxy.udfStubsMutex);
|
||||||
goto _exit;
|
goto _exit;
|
||||||
|
} else {
|
||||||
|
taosArraySort(gUdfcProxy.udfStubs, compareUdfcFuncSub);
|
||||||
}
|
}
|
||||||
taosArraySort(gUdfcProxy.udfStubs, compareUdfcFuncSub);
|
uv_mutex_unlock(&gUdfcProxy.udfStubsMutex);
|
||||||
} else {
|
} else {
|
||||||
*pHandle = NULL;
|
*pHandle = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
uv_mutex_unlock(&gUdfcProxy.udfStubsMutex);
|
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "geosWrapper.h"
|
#include "geosWrapper.h"
|
||||||
#include "tdef.h"
|
#include "tutil.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
typedef char (*_geosRelationFunc_t)(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2);
|
typedef char (*_geosRelationFunc_t)(GEOSContextHandle_t handle, const GEOSGeometry *g1, const GEOSGeometry *g2);
|
||||||
|
@ -23,7 +23,8 @@ typedef char (*_geosPreparedRelationFunc_t)(GEOSContextHandle_t handle, const GE
|
||||||
|
|
||||||
void geosFreeBuffer(void *buffer) {
|
void geosFreeBuffer(void *buffer) {
|
||||||
if (buffer) {
|
if (buffer) {
|
||||||
GEOSFree_r(getThreadLocalGeosCtx()->handle, buffer);
|
SGeosContext *pCtx = acquireThreadLocalGeosCtx();
|
||||||
|
if (pCtx) GEOSFree_r(pCtx->handle, buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +35,9 @@ void geosErrMsgeHandler(const char *errMsg, void *userData) {
|
||||||
|
|
||||||
int32_t initCtxMakePoint() {
|
int32_t initCtxMakePoint() {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
if (geosCtx->handle == NULL) {
|
if (geosCtx->handle == NULL) {
|
||||||
geosCtx->handle = GEOS_init_r();
|
geosCtx->handle = GEOS_init_r();
|
||||||
|
@ -59,7 +62,9 @@ int32_t initCtxMakePoint() {
|
||||||
// need to call geosFreeBuffer(*outputGeom) later
|
// need to call geosFreeBuffer(*outputGeom) later
|
||||||
int32_t doMakePoint(double x, double y, unsigned char **outputGeom, size_t *size) {
|
int32_t doMakePoint(double x, double y, unsigned char **outputGeom, size_t *size) {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
GEOSGeometry *geom = NULL;
|
GEOSGeometry *geom = NULL;
|
||||||
unsigned char *wkb = NULL;
|
unsigned char *wkb = NULL;
|
||||||
|
@ -164,7 +169,9 @@ static int32_t initWktRegex(pcre2_code **ppRegex, pcre2_match_data **ppMatchData
|
||||||
|
|
||||||
int32_t initCtxGeomFromText() {
|
int32_t initCtxGeomFromText() {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
if (geosCtx->handle == NULL) {
|
if (geosCtx->handle == NULL) {
|
||||||
geosCtx->handle = GEOS_init_r();
|
geosCtx->handle = GEOS_init_r();
|
||||||
|
@ -200,7 +207,9 @@ int32_t initCtxGeomFromText() {
|
||||||
// need to call geosFreeBuffer(*outputGeom) later
|
// need to call geosFreeBuffer(*outputGeom) later
|
||||||
int32_t doGeomFromText(const char *inputWKT, unsigned char **outputGeom, size_t *size) {
|
int32_t doGeomFromText(const char *inputWKT, unsigned char **outputGeom, size_t *size) {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
GEOSGeometry *geom = NULL;
|
GEOSGeometry *geom = NULL;
|
||||||
unsigned char *wkb = NULL;
|
unsigned char *wkb = NULL;
|
||||||
|
@ -235,7 +244,9 @@ _exit:
|
||||||
|
|
||||||
int32_t initCtxAsText() {
|
int32_t initCtxAsText() {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
if (geosCtx->handle == NULL) {
|
if (geosCtx->handle == NULL) {
|
||||||
geosCtx->handle = GEOS_init_r();
|
geosCtx->handle = GEOS_init_r();
|
||||||
|
@ -271,7 +282,9 @@ int32_t initCtxAsText() {
|
||||||
// need to call geosFreeBuffer(*outputWKT) later
|
// need to call geosFreeBuffer(*outputWKT) later
|
||||||
int32_t doAsText(const unsigned char *inputGeom, size_t size, char **outputWKT) {
|
int32_t doAsText(const unsigned char *inputGeom, size_t size, char **outputWKT) {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
GEOSGeometry *geom = NULL;
|
GEOSGeometry *geom = NULL;
|
||||||
char *wkt = NULL;
|
char *wkt = NULL;
|
||||||
|
@ -302,7 +315,9 @@ _exit:
|
||||||
|
|
||||||
int32_t initCtxRelationFunc() {
|
int32_t initCtxRelationFunc() {
|
||||||
int32_t code = TSDB_CODE_FAILED;
|
int32_t code = TSDB_CODE_FAILED;
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
if (geosCtx->handle == NULL) {
|
if (geosCtx->handle == NULL) {
|
||||||
geosCtx->handle = GEOS_init_r();
|
geosCtx->handle = GEOS_init_r();
|
||||||
|
@ -327,7 +342,9 @@ int32_t doGeosRelation(const GEOSGeometry *geom1, const GEOSPreparedGeometry *pr
|
||||||
bool swapped, char *res, _geosRelationFunc_t relationFn, _geosRelationFunc_t swappedRelationFn,
|
bool swapped, char *res, _geosRelationFunc_t relationFn, _geosRelationFunc_t swappedRelationFn,
|
||||||
_geosPreparedRelationFunc_t preparedRelationFn,
|
_geosPreparedRelationFunc_t preparedRelationFn,
|
||||||
_geosPreparedRelationFunc_t swappedPreparedRelationFn) {
|
_geosPreparedRelationFunc_t swappedPreparedRelationFn) {
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = NULL;
|
||||||
|
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
|
|
||||||
if (!preparedGeom1) {
|
if (!preparedGeom1) {
|
||||||
if (!swapped) {
|
if (!swapped) {
|
||||||
|
@ -397,11 +414,10 @@ int32_t doContainsProperly(const GEOSGeometry *geom1, const GEOSPreparedGeometry
|
||||||
// need to call destroyGeometry(outputGeom, outputPreparedGeom) later
|
// need to call destroyGeometry(outputGeom, outputPreparedGeom) later
|
||||||
int32_t readGeometry(const unsigned char *input, GEOSGeometry **outputGeom,
|
int32_t readGeometry(const unsigned char *input, GEOSGeometry **outputGeom,
|
||||||
const GEOSPreparedGeometry **outputPreparedGeom) {
|
const GEOSPreparedGeometry **outputPreparedGeom) {
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
|
||||||
|
|
||||||
if (!outputGeom) {
|
if (!outputGeom) {
|
||||||
return TSDB_CODE_FUNC_FUNTION_PARA_VALUE;
|
return TSDB_CODE_FUNC_FUNTION_PARA_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
*outputGeom = NULL;
|
*outputGeom = NULL;
|
||||||
|
|
||||||
if (outputPreparedGeom) { // it means not to generate PreparedGeometry if outputPreparedGeom is NULL
|
if (outputPreparedGeom) { // it means not to generate PreparedGeometry if outputPreparedGeom is NULL
|
||||||
|
@ -412,6 +428,8 @@ int32_t readGeometry(const unsigned char *input, GEOSGeometry **outputGeom,
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SGeosContext *geosCtx = NULL;
|
||||||
|
TAOS_CHECK_RETURN(getThreadLocalGeosCtx(&geosCtx));
|
||||||
*outputGeom = GEOSWKBReader_read_r(geosCtx->handle, geosCtx->WKBReader, varDataVal(input), varDataLen(input));
|
*outputGeom = GEOSWKBReader_read_r(geosCtx->handle, geosCtx->WKBReader, varDataVal(input), varDataLen(input));
|
||||||
if (*outputGeom == NULL) {
|
if (*outputGeom == NULL) {
|
||||||
return TSDB_CODE_FUNC_FUNTION_PARA_VALUE;
|
return TSDB_CODE_FUNC_FUNTION_PARA_VALUE;
|
||||||
|
@ -428,7 +446,8 @@ int32_t readGeometry(const unsigned char *input, GEOSGeometry **outputGeom,
|
||||||
}
|
}
|
||||||
|
|
||||||
void destroyGeometry(GEOSGeometry **geom, const GEOSPreparedGeometry **preparedGeom) {
|
void destroyGeometry(GEOSGeometry **geom, const GEOSPreparedGeometry **preparedGeom) {
|
||||||
SGeosContext *geosCtx = getThreadLocalGeosCtx();
|
SGeosContext *geosCtx = acquireThreadLocalGeosCtx();
|
||||||
|
if (!geosCtx) return;
|
||||||
|
|
||||||
if (preparedGeom && *preparedGeom) {
|
if (preparedGeom && *preparedGeom) {
|
||||||
GEOSPreparedGeom_destroy_r(geosCtx->handle, *preparedGeom);
|
GEOSPreparedGeom_destroy_r(geosCtx->handle, *preparedGeom);
|
||||||
|
|
|
@ -115,7 +115,7 @@ void callMakePointAndCompareResult(int32_t type1, void *valueArray1, TDRowValT v
|
||||||
#define MAKE_POINT_FIRST_COLUMN_VALUES {2, 3, -4}
|
#define MAKE_POINT_FIRST_COLUMN_VALUES {2, 3, -4}
|
||||||
#define MAKE_POINT_SECOND_COLUMN_VALUES {5, -6, -7}
|
#define MAKE_POINT_SECOND_COLUMN_VALUES {5, -6, -7}
|
||||||
|
|
||||||
TEST(GeomIoFuncTest, makePointFunctionTwoColumns) {
|
void geomIoFuncTestMakePointFunctionTwoColumns() {
|
||||||
const int32_t rowNum = 3;
|
const int32_t rowNum = 3;
|
||||||
SScalarParam *pExpectedResult;
|
SScalarParam *pExpectedResult;
|
||||||
TDRowValT valTypeArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
TDRowValT valTypeArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
||||||
|
@ -151,7 +151,7 @@ TEST(GeomIoFuncTest, makePointFunctionTwoColumns) {
|
||||||
destroyScalarParam(pExpectedResult, 1);
|
destroyScalarParam(pExpectedResult, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomIoFuncTest, makePointFunctionConstant) {
|
void geomIoFuncTestMakePointFunctionConstant() {
|
||||||
const int32_t rowNum = 3;
|
const int32_t rowNum = 3;
|
||||||
SScalarParam *pExpectedResult;
|
SScalarParam *pExpectedResult;
|
||||||
TDRowValT valTypeArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
TDRowValT valTypeArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
||||||
|
@ -188,7 +188,7 @@ TEST(GeomIoFuncTest, makePointFunctionConstant) {
|
||||||
destroyScalarParam(pExpectedResult, 1);
|
destroyScalarParam(pExpectedResult, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomIoFuncTest, makePointFunctionWithNull) {
|
void geomIoFuncTestMakePointFunctionWithNull() {
|
||||||
const int32_t rowNum = 3;
|
const int32_t rowNum = 3;
|
||||||
SScalarParam *pExpectedResult;
|
SScalarParam *pExpectedResult;
|
||||||
TDRowValT valTypeNormArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
TDRowValT valTypeNormArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
||||||
|
@ -244,7 +244,7 @@ TEST(GeomIoFuncTest, makePointFunctionWithNull) {
|
||||||
destroyScalarParam(pExpectedResult, 1);
|
destroyScalarParam(pExpectedResult, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomIoFuncTest, geomFromTextFunction) {
|
void geomIoFuncTestGeomFromTextFunction() {
|
||||||
const int32_t rowNum = 4;
|
const int32_t rowNum = 4;
|
||||||
char strArray[rowNum][TSDB_MAX_BINARY_LEN];
|
char strArray[rowNum][TSDB_MAX_BINARY_LEN];
|
||||||
TDRowValT valTypeNormArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
TDRowValT valTypeNormArray[rowNum] = {TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM, TD_VTYPE_NORM};
|
||||||
|
@ -293,7 +293,7 @@ TEST(GeomIoFuncTest, geomFromTextFunction) {
|
||||||
callGeomFromTextWrapper4(strArray, valTypeNormArray, 1, TSDB_CODE_FUNC_FUNTION_PARA_VALUE);
|
callGeomFromTextWrapper4(strArray, valTypeNormArray, 1, TSDB_CODE_FUNC_FUNTION_PARA_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomIoFuncTest, asTextFunction) {
|
void geomIoFuncTestAsTextFunction() {
|
||||||
// column input has been tested in geomFromTextFunction
|
// column input has been tested in geomFromTextFunction
|
||||||
|
|
||||||
TDRowValT valTypeArray[1] = {TD_VTYPE_NORM};
|
TDRowValT valTypeArray[1] = {TD_VTYPE_NORM};
|
||||||
|
@ -319,3 +319,27 @@ TEST(GeomIoFuncTest, asTextFunction) {
|
||||||
STR_TO_VARSTR(strInput, "XXX");
|
STR_TO_VARSTR(strInput, "XXX");
|
||||||
callAsTextWrapper2(TSDB_DATA_TYPE_GEOMETRY, strInput, valTypeArray, 1, TSDB_CODE_FUNC_FUNTION_PARA_VALUE);
|
callAsTextWrapper2(TSDB_DATA_TYPE_GEOMETRY, strInput, valTypeArray, 1, TSDB_CODE_FUNC_FUNTION_PARA_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void geomIoFuncTestImpl() {
|
||||||
|
geomIoFuncTestMakePointFunctionTwoColumns();
|
||||||
|
geomIoFuncTestMakePointFunctionConstant();
|
||||||
|
geomIoFuncTestMakePointFunctionWithNull();
|
||||||
|
geomIoFuncTestGeomFromTextFunction();
|
||||||
|
geomIoFuncTestAsTextFunction();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *geomIoFuncTestFunc(void *arg) {
|
||||||
|
geomIoFuncTestImpl();
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void geomIoFuncTestInThread() {
|
||||||
|
TdThread thread;
|
||||||
|
ASSERT_EQ(taosThreadCreate(&thread, nullptr, geomIoFuncTestFunc, NULL), 0);
|
||||||
|
ASSERT_EQ(taosThreadJoin(thread, nullptr), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(threadGeomFuncTest, threadFuncTest) {
|
||||||
|
geomIoFuncTestImpl();
|
||||||
|
geomIoFuncTestInThread();
|
||||||
|
}
|
|
@ -154,7 +154,7 @@ void geomRelationFuncTest(FScalarExecProcess geomRelationFunc, int8_t expectedRe
|
||||||
callGeomRelationFuncAndCompareResult(geomRelationFunc, pInput, rowNum, TSDB_CODE_FUNC_FUNTION_PARA_VALUE, 0);
|
callGeomRelationFuncAndCompareResult(geomRelationFunc, pInput, rowNum, TSDB_CODE_FUNC_FUNTION_PARA_VALUE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, intersectsFunction) {
|
void geomRelationFuncTestIntersectsFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{1, 0, 1, 1, 1, 1}, // two columns
|
{1, 0, 1, 1, 1, 1}, // two columns
|
||||||
|
@ -168,7 +168,7 @@ TEST(GeomRelationFuncTest, intersectsFunction) {
|
||||||
geomRelationFuncTest(intersectsFunction, expectedResults);
|
geomRelationFuncTest(intersectsFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, equalsFunction) {
|
void geomRelationFuncTestEqualsFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{1, 0, 0, 0, 0, 0}, // two columns
|
{1, 0, 0, 0, 0, 0}, // two columns
|
||||||
|
@ -182,7 +182,7 @@ TEST(GeomRelationFuncTest, equalsFunction) {
|
||||||
geomRelationFuncTest(equalsFunction, expectedResults);
|
geomRelationFuncTest(equalsFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, touchesFunction) {
|
void geomRelationFuncTestTouchesFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{0, 0, 1, 0, 0, 1}, // two columns
|
{0, 0, 1, 0, 0, 1}, // two columns
|
||||||
|
@ -196,7 +196,7 @@ TEST(GeomRelationFuncTest, touchesFunction) {
|
||||||
geomRelationFuncTest(touchesFunction, expectedResults);
|
geomRelationFuncTest(touchesFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, coversFunction) {
|
void geomRelationFuncTestCoversFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{1, 0, 0, 0, 0, 0}, // two columns
|
{1, 0, 0, 0, 0, 0}, // two columns
|
||||||
|
@ -210,7 +210,7 @@ TEST(GeomRelationFuncTest, coversFunction) {
|
||||||
geomRelationFuncTest(coversFunction, expectedResults);
|
geomRelationFuncTest(coversFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, containsFunction) {
|
void geomRelationFuncTestContainsFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{1, 0, 0, 0, 0, 0}, // two columns
|
{1, 0, 0, 0, 0, 0}, // two columns
|
||||||
|
@ -224,7 +224,7 @@ TEST(GeomRelationFuncTest, containsFunction) {
|
||||||
geomRelationFuncTest(containsFunction, expectedResults);
|
geomRelationFuncTest(containsFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(GeomRelationFuncTest, containsProperlyFunction) {
|
void geomRelationFuncTestContainsProperlyFunction() {
|
||||||
// 1: true, 0: false, -1: null
|
// 1: true, 0: false, -1: null
|
||||||
int8_t expectedResults[6][6] = {
|
int8_t expectedResults[6][6] = {
|
||||||
{1, 0, 0, 0, 0, 0}, // two columns
|
{1, 0, 0, 0, 0, 0}, // two columns
|
||||||
|
@ -237,3 +237,28 @@ TEST(GeomRelationFuncTest, containsProperlyFunction) {
|
||||||
|
|
||||||
geomRelationFuncTest(containsProperlyFunction, expectedResults);
|
geomRelationFuncTest(containsProperlyFunction, expectedResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void geomRelationFuncTestImpl() {
|
||||||
|
geomRelationFuncTestIntersectsFunction();
|
||||||
|
geomRelationFuncTestEqualsFunction();
|
||||||
|
geomRelationFuncTestTouchesFunction();
|
||||||
|
geomRelationFuncTestCoversFunction();
|
||||||
|
geomRelationFuncTestContainsFunction();
|
||||||
|
geomRelationFuncTestContainsProperlyFunction();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *geomRelationFuncTestFunc(void *arg) {
|
||||||
|
geomRelationFuncTestImpl();
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void geomRelationFuncTestInThread() {
|
||||||
|
TdThread thread;
|
||||||
|
ASSERT_EQ(taosThreadCreate(&thread, nullptr, geomRelationFuncTestFunc, NULL), 0);
|
||||||
|
ASSERT_EQ(taosThreadJoin(thread, nullptr), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(threadGeomRelationFuncTest, threadGeomRelationFuncTest) {
|
||||||
|
geomRelationFuncTestImpl();
|
||||||
|
geomRelationFuncTestInThread();
|
||||||
|
}
|
|
@ -117,7 +117,10 @@ void monInitMonitorFW(){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, dnodes_gauges[i], strlen(dnodes_gauges[i]), &gauge, sizeof(taos_gauge_t *));
|
if (taosHashPut(tsMonitor.metrics, dnodes_gauges[i], strlen(dnodes_gauges[i]), &gauge, sizeof(taos_gauge_t *)) !=
|
||||||
|
0) {
|
||||||
|
uError("failed to add dnode gauge at%d:%s", i, dnodes_gauges[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t dnodes_data_label_count = 5;
|
int32_t dnodes_data_label_count = 5;
|
||||||
|
@ -128,8 +131,10 @@ void monInitMonitorFW(){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, dnodes_data_gauges[i], strlen(dnodes_data_gauges[i]), &gauge,
|
if (taosHashPut(tsMonitor.metrics, dnodes_data_gauges[i], strlen(dnodes_data_gauges[i]), &gauge,
|
||||||
sizeof(taos_gauge_t *));
|
sizeof(taos_gauge_t *)) != 0) {
|
||||||
|
uError("failed to add dnode data gauge at%d:%s", i, dnodes_data_gauges[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t dnodes_log_label_count = 4;
|
int32_t dnodes_log_label_count = 4;
|
||||||
|
@ -140,8 +145,10 @@ void monInitMonitorFW(){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, dnodes_log_gauges[i], strlen(dnodes_log_gauges[i]), &gauge,
|
if (taosHashPut(tsMonitor.metrics, dnodes_log_gauges[i], strlen(dnodes_log_gauges[i]), &gauge,
|
||||||
sizeof(taos_gauge_t *));
|
sizeof(taos_gauge_t *)) != 0) {
|
||||||
|
uError("failed to add dnode log gauge at%d:%s", i, dnodes_log_gauges[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,7 +193,9 @@ void monGenClusterInfoTable(SMonInfo *pMonitor){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, metric_names[i], strlen(metric_names[i]), &gauge, sizeof(taos_gauge_t *));
|
if (taosHashPut(tsMonitor.metrics, metric_names[i], strlen(metric_names[i]), &gauge, sizeof(taos_gauge_t *)) != 0) {
|
||||||
|
uError("failed to add cluster gauge at%d:%s", i, metric_names[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
||||||
|
@ -640,8 +649,10 @@ void monGenMnodeRoleTable(SMonInfo *pMonitor){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, mnodes_role_gauges[i], strlen(mnodes_role_gauges[i]), &gauge,
|
if (taosHashPut(tsMonitor.metrics, mnodes_role_gauges[i], strlen(mnodes_role_gauges[i]), &gauge,
|
||||||
sizeof(taos_gauge_t *));
|
sizeof(taos_gauge_t *)) != 0) {
|
||||||
|
uError("failed to add mnode role gauge at%d:%s", i, mnodes_role_gauges[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
||||||
|
@ -707,8 +718,10 @@ void monGenVnodeRoleTable(SMonInfo *pMonitor){
|
||||||
if(taos_collector_registry_register_metric(gauge) == 1){
|
if(taos_collector_registry_register_metric(gauge) == 1){
|
||||||
(void)taos_counter_destroy(gauge);
|
(void)taos_counter_destroy(gauge);
|
||||||
}
|
}
|
||||||
(void)taosHashPut(tsMonitor.metrics, vnodes_role_gauges[i], strlen(vnodes_role_gauges[i]), &gauge,
|
if (taosHashPut(tsMonitor.metrics, vnodes_role_gauges[i], strlen(vnodes_role_gauges[i]), &gauge,
|
||||||
sizeof(taos_gauge_t *));
|
sizeof(taos_gauge_t *)) != 0) {
|
||||||
|
uError("failed to add vnode role gauge at%d:%s", i, vnodes_role_gauges[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
char buf[TSDB_CLUSTER_ID_LEN] = {0};
|
||||||
|
|
|
@ -132,7 +132,8 @@ int32_t monInit(const SMonCfg *pCfg) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void monInitVnode() {
|
void monInitVnode() {
|
||||||
if (tsEnableMonitor && tsMonitorFqdn[0] != 0 && tsMonitorPort != 0 && tsInsertCounter == NULL) {
|
if (!tsEnableMonitor || tsMonitorFqdn[0] == 0 || tsMonitorPort == 0) return;
|
||||||
|
if (tsInsertCounter == NULL) {
|
||||||
taos_counter_t *counter = NULL;
|
taos_counter_t *counter = NULL;
|
||||||
int32_t label_count = 7;
|
int32_t label_count = 7;
|
||||||
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
|
const char *sample_labels[] = {VNODE_METRIC_TAG_NAME_SQL_TYPE, VNODE_METRIC_TAG_NAME_CLUSTER_ID,
|
||||||
|
|
|
@ -655,7 +655,7 @@ static int32_t parseTagToken(const char** end, SToken* pToken, SSchema* pSchema,
|
||||||
|
|
||||||
code = parseGeometry(pToken, &output, &size);
|
code = parseGeometry(pToken, &output, &size);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
code = buildSyntaxErrMsg(pMsgBuf, getThreadLocalGeosCtx()->errMsg, pToken->z);
|
code = buildSyntaxErrMsg(pMsgBuf, getGeosErrMsg(code), pToken->z);
|
||||||
} else if (size + VARSTR_HEADER_SIZE > pSchema->bytes) {
|
} else if (size + VARSTR_HEADER_SIZE > pSchema->bytes) {
|
||||||
// Too long values will raise the invalid sql error message
|
// Too long values will raise the invalid sql error message
|
||||||
code = generateSyntaxErrMsg(pMsgBuf, TSDB_CODE_PAR_VALUE_TOO_LONG, pSchema->name);
|
code = generateSyntaxErrMsg(pMsgBuf, TSDB_CODE_PAR_VALUE_TOO_LONG, pSchema->name);
|
||||||
|
@ -1646,7 +1646,7 @@ static int32_t parseValueTokenImpl(SInsertParseContext* pCxt, const char** pSql,
|
||||||
|
|
||||||
code = parseGeometry(pToken, &output, &size);
|
code = parseGeometry(pToken, &output, &size);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
code = buildSyntaxErrMsg(&pCxt->msg, getThreadLocalGeosCtx()->errMsg, pToken->z);
|
code = buildSyntaxErrMsg(&pCxt->msg, getGeosErrMsg(code), pToken->z);
|
||||||
}
|
}
|
||||||
// Too long values will raise the invalid sql error message
|
// Too long values will raise the invalid sql error message
|
||||||
else if (size + VARSTR_HEADER_SIZE > pSchema->bytes) {
|
else if (size + VARSTR_HEADER_SIZE > pSchema->bytes) {
|
||||||
|
|
|
@ -745,7 +745,7 @@ int32_t insMergeTableDataCxt(SHashObj* pTableHash, SArray** pVgDataBlocks, bool
|
||||||
|
|
||||||
taosArraySort(pTableCxt->pData->aCol, insColDataComp);
|
taosArraySort(pTableCxt->pData->aCol, insColDataComp);
|
||||||
|
|
||||||
code = tColDataSortMerge(pTableCxt->pData->aCol);
|
code = tColDataSortMerge(&pTableCxt->pData->aCol);
|
||||||
} else {
|
} else {
|
||||||
// skip the table has no data to insert
|
// skip the table has no data to insert
|
||||||
// eg: import a csv without valid data
|
// eg: import a csv without valid data
|
||||||
|
|
|
@ -581,12 +581,12 @@ static bool isCharStart(char c) {
|
||||||
return strcasecmp(tsCharset, "UTF-8") == 0 ? ((c & 0xC0) != 0x80) : true;
|
return strcasecmp(tsCharset, "UTF-8") == 0 ? ((c & 0xC0) != 0x80) : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t trimHelper(char *orgStr, char* remStr, int32_t orgLen, int32_t remLen, bool trimLeft) {
|
static int32_t trimHelper(char *orgStr, char* remStr, int32_t orgLen, int32_t remLen, bool trimLeft, bool isNchar) {
|
||||||
if (trimLeft) {
|
if (trimLeft) {
|
||||||
int32_t pos = 0;
|
int32_t pos = 0;
|
||||||
for (int32_t i = 0; i < orgLen; i += remLen) {
|
for (int32_t i = 0; i < orgLen; i += remLen) {
|
||||||
if (memcmp(orgStr + i, remStr, remLen) == 0) {
|
if (memcmp(orgStr + i, remStr, remLen) == 0) {
|
||||||
if (isCharStart(orgStr[i + remLen])) {
|
if (isCharStart(orgStr[i + remLen]) || isNchar) {
|
||||||
pos = i + remLen;
|
pos = i + remLen;
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
@ -601,7 +601,7 @@ static int32_t trimHelper(char *orgStr, char* remStr, int32_t orgLen, int32_t re
|
||||||
int32_t pos = orgLen;
|
int32_t pos = orgLen;
|
||||||
for (int32_t i = orgLen - remLen; i >= 0; i -= remLen) {
|
for (int32_t i = orgLen - remLen; i >= 0; i -= remLen) {
|
||||||
if (memcmp(orgStr + i, remStr, remLen) == 0) {
|
if (memcmp(orgStr + i, remStr, remLen) == 0) {
|
||||||
if (isCharStart(orgStr[i])) {
|
if (isCharStart(orgStr[i]) || isNchar) {
|
||||||
pos = i;
|
pos = i;
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
|
@ -671,7 +671,7 @@ static int32_t tltrim(char *input, char *remInput, char *output, int32_t inputTy
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = trimHelper(orgStr, remStr, orgLen, remLen, true);
|
pos = trimHelper(orgStr, remStr, orgLen, remLen, true, inputType == TSDB_DATA_TYPE_NCHAR);
|
||||||
|
|
||||||
if (needFree) {
|
if (needFree) {
|
||||||
taosMemoryFree(remStr);
|
taosMemoryFree(remStr);
|
||||||
|
@ -735,7 +735,7 @@ static int32_t trtrim(char *input, char *remInput, char *output, int32_t inputTy
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
pos = trimHelper(orgStr, remStr, orgLen, remLen, false);
|
pos = trimHelper(orgStr, remStr, orgLen, remLen, false, inputType == TSDB_DATA_TYPE_NCHAR);
|
||||||
|
|
||||||
if (needFree) {
|
if (needFree) {
|
||||||
taosMemoryFree(remStr);
|
taosMemoryFree(remStr);
|
||||||
|
@ -769,8 +769,8 @@ static int32_t tlrtrim(char *input, char *remInput, char *output, int32_t inputT
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t leftPos = trimHelper(orgStr, remStr, orgLen, remLen, true);
|
int32_t leftPos = trimHelper(orgStr, remStr, orgLen, remLen, true, inputType == TSDB_DATA_TYPE_NCHAR);
|
||||||
int32_t rightPos = trimHelper(orgStr, remStr, orgLen, remLen, false);
|
int32_t rightPos = trimHelper(orgStr, remStr, orgLen, remLen, false, inputType == TSDB_DATA_TYPE_NCHAR);
|
||||||
|
|
||||||
if (needFree) {
|
if (needFree) {
|
||||||
taosMemoryFree(remStr);
|
taosMemoryFree(remStr);
|
||||||
|
@ -1112,12 +1112,15 @@ _return:
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t findPosBytes(char *orgStr, char *delimStr, int32_t orgLen, int32_t delimLen, int32_t charNums) {
|
static int32_t findPosBytes(char *orgStr, char *delimStr, int32_t orgLen, int32_t delimLen, int32_t charNums, bool isNchar) {
|
||||||
int32_t charCount = 0;
|
int32_t charCount = 0;
|
||||||
if (charNums > 0) {
|
if (charNums > 0) {
|
||||||
for (int32_t pos = 0; pos < orgLen; pos++) {
|
for (int32_t pos = 0; pos < orgLen; pos++) {
|
||||||
if (delimStr) {
|
if (delimStr) {
|
||||||
if (isCharStart(orgStr[pos]) && memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
if (pos + delimLen > orgLen) {
|
||||||
|
return orgLen;
|
||||||
|
}
|
||||||
|
if ((isCharStart(orgStr[pos]) || isNchar) && memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
||||||
charCount++;
|
charCount++;
|
||||||
if (charCount == charNums) {
|
if (charCount == charNums) {
|
||||||
return pos;
|
return pos;
|
||||||
|
@ -1125,7 +1128,7 @@ static int32_t findPosBytes(char *orgStr, char *delimStr, int32_t orgLen, int32_
|
||||||
pos = pos + delimLen - 1;
|
pos = pos + delimLen - 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (isCharStart(orgStr[pos])) {
|
if ((isCharStart(orgStr[pos]) || isNchar)) {
|
||||||
charCount++;
|
charCount++;
|
||||||
if (charCount == charNums) {
|
if (charCount == charNums) {
|
||||||
return pos;
|
return pos;
|
||||||
|
@ -1136,8 +1139,8 @@ static int32_t findPosBytes(char *orgStr, char *delimStr, int32_t orgLen, int32_
|
||||||
return orgLen;
|
return orgLen;
|
||||||
} else {
|
} else {
|
||||||
if (delimStr) {
|
if (delimStr) {
|
||||||
for (int32_t pos = orgLen - 1; pos >= 0; pos--) {
|
for (int32_t pos = orgLen - delimLen; pos >= 0; pos--) {
|
||||||
if (isCharStart(orgStr[pos]) && memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
if ((isCharStart(orgStr[pos]) || isNchar) && memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
||||||
charCount++;
|
charCount++;
|
||||||
if (charCount == -charNums) {
|
if (charCount == -charNums) {
|
||||||
return pos + delimLen;
|
return pos + delimLen;
|
||||||
|
@ -1147,7 +1150,7 @@ static int32_t findPosBytes(char *orgStr, char *delimStr, int32_t orgLen, int32_
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int32_t pos = orgLen - 1; pos >= 0; pos--) {
|
for (int32_t pos = orgLen - 1; pos >= 0; pos--) {
|
||||||
if (isCharStart(orgStr[pos])) {
|
if ((isCharStart(orgStr[pos]) || isNchar)) {
|
||||||
charCount++;
|
charCount++;
|
||||||
if (charCount == -charNums) {
|
if (charCount == -charNums) {
|
||||||
return pos;
|
return pos;
|
||||||
|
@ -1224,17 +1227,17 @@ int32_t substrFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
int32_t startPosBytes;
|
int32_t startPosBytes;
|
||||||
int32_t endPosBytes = len;
|
int32_t endPosBytes = len;
|
||||||
if (subPos > 0) {
|
if (subPos > 0) {
|
||||||
startPosBytes = (GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR) ? findPosBytes(varDataVal(input), NULL, varDataLen(input), -1, subPos) : (subPos - 1) * TSDB_NCHAR_SIZE;
|
startPosBytes = (GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR) ? findPosBytes(varDataVal(input), NULL, varDataLen(input), -1, subPos, false) : (subPos - 1) * TSDB_NCHAR_SIZE;
|
||||||
startPosBytes = TMIN(startPosBytes, len);
|
startPosBytes = TMIN(startPosBytes, len);
|
||||||
} else {
|
} else {
|
||||||
startPosBytes =
|
startPosBytes =
|
||||||
(GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR) ? findPosBytes(varDataVal(input), NULL, varDataLen(input), -1, subPos) : len + subPos * TSDB_NCHAR_SIZE;
|
(GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR) ? findPosBytes(varDataVal(input), NULL, varDataLen(input), -1, subPos, false) : len + subPos * TSDB_NCHAR_SIZE;
|
||||||
startPosBytes = TMAX(startPosBytes, 0);
|
startPosBytes = TMAX(startPosBytes, 0);
|
||||||
}
|
}
|
||||||
if (inputNum == 3) {
|
if (inputNum == 3) {
|
||||||
endPosBytes =
|
endPosBytes =
|
||||||
(GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR)
|
(GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_VARCHAR)
|
||||||
? startPosBytes + findPosBytes(varDataVal(input) + startPosBytes, NULL, varDataLen(input) - startPosBytes, -1, subLen + 1)
|
? startPosBytes + findPosBytes(varDataVal(input) + startPosBytes, NULL, varDataLen(input) - startPosBytes, -1, subLen + 1, false)
|
||||||
: startPosBytes + subLen * TSDB_NCHAR_SIZE;
|
: startPosBytes + subLen * TSDB_NCHAR_SIZE;
|
||||||
endPosBytes = TMIN(endPosBytes, len);
|
endPosBytes = TMIN(endPosBytes, len);
|
||||||
}
|
}
|
||||||
|
@ -1375,18 +1378,31 @@ int32_t asciiFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOut
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
char *in = colDataGetData(pInputData, i);
|
if (type == TSDB_DATA_TYPE_NCHAR) {
|
||||||
out[i] = (uint8_t)(varDataVal(in))[0];
|
char *in = varDataVal(colDataGetData(pInputData, i));
|
||||||
|
int32_t inLen = varDataLen(colDataGetData(pInputData, i));
|
||||||
|
SCL_ERR_RET(convBetweenNcharAndVarchar(varDataVal(colDataGetData(pInputData, i)), &in,
|
||||||
|
varDataLen(colDataGetData(pInputData, i)), &inLen,
|
||||||
|
TSDB_DATA_TYPE_VARBINARY));
|
||||||
|
out[i] = (uint8_t)(in)[0];
|
||||||
|
taosMemoryFree(in);
|
||||||
|
} else {
|
||||||
|
char *in = colDataGetData(pInputData, i);
|
||||||
|
out[i] = (uint8_t)(varDataVal(in))[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pOutput->numOfRows = pInput->numOfRows;
|
pOutput->numOfRows = pInput->numOfRows;
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t findPosChars(char *orgStr, char *delimStr, int32_t orgLen, int32_t delimLen, bool isUcs4) {
|
static int32_t findPosChars(char *orgStr, char *delimStr, int32_t orgLen, int32_t delimLen, bool isNchar) {
|
||||||
int32_t charCount = 0;
|
int32_t charCount = 0;
|
||||||
for (int32_t pos = 0; pos < orgLen; pos += isUcs4 ? TSDB_NCHAR_SIZE : 1) {
|
for (int32_t pos = 0; pos < orgLen; pos += isNchar ? TSDB_NCHAR_SIZE : 1) {
|
||||||
if (isUcs4 || isCharStart(orgStr[pos])) {
|
if (isNchar || isCharStart(orgStr[pos])) {
|
||||||
|
if (pos + delimLen > orgLen) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
if (memcmp(orgStr + pos, delimStr, delimLen) == 0) {
|
||||||
return charCount + 1;
|
return charCount + 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1487,19 +1503,14 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t orgType = pInputData[0]->info.type;
|
int8_t orgType = pInputData[0]->info.type;
|
||||||
int8_t fromType = pInputData[1]->info.type;
|
|
||||||
int8_t toType = pInputData[2]->info.type;
|
int8_t toType = pInputData[2]->info.type;
|
||||||
int32_t orgLength = pInputData[0]->info.bytes;
|
int32_t orgLength = pInputData[0]->info.bytes - VARSTR_HEADER_SIZE;
|
||||||
int32_t fromLength = pInputData[1]->info.bytes;
|
int32_t toLength = pInputData[2]->info.bytes - VARSTR_HEADER_SIZE;
|
||||||
int32_t toLength = pInputData[2]->info.bytes;
|
|
||||||
|
|
||||||
if (orgType == TSDB_DATA_TYPE_VARBINARY && fromType != orgType) {
|
|
||||||
fromLength = fromLength / TSDB_NCHAR_SIZE;
|
|
||||||
}
|
|
||||||
if (orgType == TSDB_DATA_TYPE_NCHAR && toType != orgType) {
|
if (orgType == TSDB_DATA_TYPE_NCHAR && toType != orgType) {
|
||||||
toLength = toLength * TSDB_NCHAR_SIZE;
|
toLength = toLength * TSDB_NCHAR_SIZE;
|
||||||
}
|
}
|
||||||
outputLen = TMAX(orgLength, orgLength + orgLength / fromLength * (toLength - fromLength));
|
outputLen = toLength == 0 ? orgLength : TMIN(TSDB_MAX_FIELD_LEN, orgLength * toLength);
|
||||||
|
|
||||||
if (GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_NULL ||
|
if (GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_NULL ||
|
||||||
GET_PARAM_TYPE(&pInput[1]) == TSDB_DATA_TYPE_NULL ||
|
GET_PARAM_TYPE(&pInput[1]) == TSDB_DATA_TYPE_NULL ||
|
||||||
|
@ -1528,8 +1539,8 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO
|
||||||
char *output = outputBuf + VARSTR_HEADER_SIZE;
|
char *output = outputBuf + VARSTR_HEADER_SIZE;
|
||||||
int32_t totalLen = 0;
|
int32_t totalLen = 0;
|
||||||
|
|
||||||
char *orgStr = varDataVal(colDataGetData(pInputData[0], i));
|
char *orgStr = varDataVal(colDataGetData(pInputData[0], colIdx1));
|
||||||
int32_t orgLen = varDataLen(colDataGetData(pInputData[0], i));
|
int32_t orgLen = varDataLen(colDataGetData(pInputData[0], colIdx1));
|
||||||
char *fromStr = varDataVal(colDataGetData(pInputData[1], colIdx2));
|
char *fromStr = varDataVal(colDataGetData(pInputData[1], colIdx2));
|
||||||
int32_t fromLen = varDataLen(colDataGetData(pInputData[1], colIdx2));
|
int32_t fromLen = varDataLen(colDataGetData(pInputData[1], colIdx2));
|
||||||
char *toStr = varDataVal(colDataGetData(pInputData[2], colIdx3));
|
char *toStr = varDataVal(colDataGetData(pInputData[2], colIdx3));
|
||||||
|
@ -1537,6 +1548,14 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO
|
||||||
bool needFreeFrom = false;
|
bool needFreeFrom = false;
|
||||||
bool needFreeTo = false;
|
bool needFreeTo = false;
|
||||||
|
|
||||||
|
if (fromLen == 0 || orgLen == 0) {
|
||||||
|
(void)memcpy(output, orgStr, orgLen);
|
||||||
|
totalLen = orgLen;
|
||||||
|
varDataSetLen(outputBuf, totalLen);
|
||||||
|
SCL_ERR_JRET(colDataSetVal(pOutputData, i, outputBuf, false));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (GET_PARAM_TYPE(&pInput[1]) != GET_PARAM_TYPE(&pInput[0])) {
|
if (GET_PARAM_TYPE(&pInput[1]) != GET_PARAM_TYPE(&pInput[0])) {
|
||||||
SCL_ERR_JRET(convBetweenNcharAndVarchar(varDataVal(colDataGetData(pInputData[1], colIdx2)), &fromStr,
|
SCL_ERR_JRET(convBetweenNcharAndVarchar(varDataVal(colDataGetData(pInputData[1], colIdx2)), &fromStr,
|
||||||
varDataLen(colDataGetData(pInputData[1], colIdx2)), &fromLen,
|
varDataLen(colDataGetData(pInputData[1], colIdx2)), &fromLen,
|
||||||
|
@ -1558,7 +1577,16 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO
|
||||||
|
|
||||||
int32_t pos = 0;
|
int32_t pos = 0;
|
||||||
while (pos < orgLen) {
|
while (pos < orgLen) {
|
||||||
if (memcmp(orgStr + pos, fromStr, fromLen) == 0) {
|
if (orgLen - pos < fromLen) {
|
||||||
|
(void)memcpy(output, orgStr + pos, orgLen - pos);
|
||||||
|
output += orgLen - pos;
|
||||||
|
totalLen += orgLen - pos;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (memcmp(orgStr + pos, fromStr, fromLen) == 0 &&
|
||||||
|
(pos + fromLen == orgLen ||
|
||||||
|
isCharStart(orgStr[pos + fromLen]) ||
|
||||||
|
GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_NCHAR)) {
|
||||||
(void)memcpy(output, toStr, toLen);
|
(void)memcpy(output, toStr, toLen);
|
||||||
output += toLen;
|
output += toLen;
|
||||||
pos += fromLen;
|
pos += fromLen;
|
||||||
|
@ -1577,6 +1605,9 @@ int32_t replaceFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pO
|
||||||
if (needFreeFrom) {
|
if (needFreeFrom) {
|
||||||
taosMemoryFree(fromStr);
|
taosMemoryFree(fromStr);
|
||||||
}
|
}
|
||||||
|
if (totalLen > TSDB_MAX_FIELD_LEN) {
|
||||||
|
SCL_ERR_JRET(TSDB_CODE_FUNC_INVALID_RES_LENGTH);
|
||||||
|
}
|
||||||
varDataSetLen(outputBuf, totalLen);
|
varDataSetLen(outputBuf, totalLen);
|
||||||
SCL_ERR_JRET(colDataSetVal(pOutputData, i, outputBuf, false));
|
SCL_ERR_JRET(colDataSetVal(pOutputData, i, outputBuf, false));
|
||||||
}
|
}
|
||||||
|
@ -1646,9 +1677,9 @@ int32_t substrIdxFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
startPosBytes = 0;
|
startPosBytes = 0;
|
||||||
endPosBytes = findPosBytes(orgStr, delimStr, orgLen, delimLen, count);
|
endPosBytes = findPosBytes(orgStr, delimStr, orgLen, delimLen, count, GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_NCHAR);
|
||||||
} else if (count < 0) {
|
} else if (count < 0) {
|
||||||
startPosBytes = findPosBytes(orgStr, delimStr, orgLen, delimLen, count);
|
startPosBytes = findPosBytes(orgStr, delimStr, orgLen, delimLen, count, GET_PARAM_TYPE(&pInput[0]) == TSDB_DATA_TYPE_NCHAR);
|
||||||
endPosBytes = orgLen;
|
endPosBytes = orgLen;
|
||||||
} else {
|
} else {
|
||||||
startPosBytes = endPosBytes = 0;
|
startPosBytes = endPosBytes = 0;
|
||||||
|
@ -1692,6 +1723,9 @@ int32_t repeatFunction(SScalarParam *pInput, int32_t inputNum, SScalarParam *pOu
|
||||||
|
|
||||||
for (int32_t i = 0; i < pInput[1].numOfRows; i++) {
|
for (int32_t i = 0; i < pInput[1].numOfRows; i++) {
|
||||||
int32_t tmpCount = 0;
|
int32_t tmpCount = 0;
|
||||||
|
if (colDataIsNull_s(pInput[1].columnData, i)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
GET_TYPED_DATA(tmpCount, int32_t, GET_PARAM_TYPE(&pInput[1]), colDataGetData(pInput[1].columnData, i));
|
GET_TYPED_DATA(tmpCount, int32_t, GET_PARAM_TYPE(&pInput[1]), colDataGetData(pInput[1].columnData, i));
|
||||||
maxCount = TMAX(maxCount, tmpCount);
|
maxCount = TMAX(maxCount, tmpCount);
|
||||||
}
|
}
|
||||||
|
@ -2926,12 +2960,13 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
double in2;
|
||||||
|
GET_TYPED_DATA(in2, double, GET_PARAM_TYPE(&pInput[1]), colDataGetData(pInputData[1], i));
|
||||||
switch (GET_PARAM_TYPE(&pInput[0])) {
|
switch (GET_PARAM_TYPE(&pInput[0])) {
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
case TSDB_DATA_TYPE_DOUBLE: {
|
||||||
double *in = (double *)pInputData[0]->pData;
|
double *in = (double *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
double result = d1(in[i], (double)in2[i]);
|
double result = d1(in[i], in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2941,9 +2976,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
float *in = (float *)pInputData[0]->pData;
|
float *in = (float *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
float *out = (float *)pOutputData->pData;
|
float *out = (float *)pOutputData->pData;
|
||||||
float result = f1(in[i], (float)in2[i]);
|
float result = f1(in[i], (float)in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2956,9 +2990,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_INT:
|
case TSDB_DATA_TYPE_INT:
|
||||||
case TSDB_DATA_TYPE_BIGINT:{
|
case TSDB_DATA_TYPE_BIGINT:{
|
||||||
int64_t *in = (int64_t *)pInputData[0]->pData;
|
int64_t *in = (int64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
int64_t *out = (int64_t *)pOutputData->pData;
|
int64_t *out = (int64_t *)pOutputData->pData;
|
||||||
int64_t result = (int64_t)d1((double)in[i], (double)in2[i]);
|
int64_t result = (int64_t)d1((double)in[i], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2967,9 +3000,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
case TSDB_DATA_TYPE_UBIGINT:{
|
case TSDB_DATA_TYPE_UBIGINT:{
|
||||||
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
uint64_t *out = (uint64_t *)pOutputData->pData;
|
uint64_t *out = (uint64_t *)pOutputData->pData;
|
||||||
uint64_t result = (uint64_t)d1((double)in[i], (double)in2[i]);
|
uint64_t result = (uint64_t)d1((double)in[i], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2984,12 +3016,13 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
double in2;
|
||||||
|
GET_TYPED_DATA(in2, double, GET_PARAM_TYPE(&pInput[1]), colDataGetData(pInputData[1], i));
|
||||||
switch (GET_PARAM_TYPE(&pInput[0])) {
|
switch (GET_PARAM_TYPE(&pInput[0])) {
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
case TSDB_DATA_TYPE_DOUBLE: {
|
||||||
double *in = (double *)pInputData[0]->pData;
|
double *in = (double *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
double result = d1(in[0], (double)in2[i]);
|
double result = d1(in[0], in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2999,9 +3032,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
float *in = (float *)pInputData[0]->pData;
|
float *in = (float *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
float *out = (float *)pOutputData->pData;
|
float *out = (float *)pOutputData->pData;
|
||||||
float result = f1(in[0], (float)in2[i]);
|
float result = f1(in[0], (float)in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3014,9 +3046,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_INT:
|
case TSDB_DATA_TYPE_INT:
|
||||||
case TSDB_DATA_TYPE_BIGINT:{
|
case TSDB_DATA_TYPE_BIGINT:{
|
||||||
int64_t *in = (int64_t *)pInputData[0]->pData;
|
int64_t *in = (int64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
int64_t *out = (int64_t *)pOutputData->pData;
|
int64_t *out = (int64_t *)pOutputData->pData;
|
||||||
int64_t result = (int64_t)d1((double)in[0], (double)in2[i]);
|
int64_t result = (int64_t)d1((double)in[0], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3025,9 +3056,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
case TSDB_DATA_TYPE_UBIGINT:{
|
case TSDB_DATA_TYPE_UBIGINT:{
|
||||||
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
uint64_t *out = (uint64_t *)pOutputData->pData;
|
uint64_t *out = (uint64_t *)pOutputData->pData;
|
||||||
uint64_t result = (uint64_t)d1((double)in[0], (double)in2[i]);
|
uint64_t result = (uint64_t)d1((double)in[0], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3043,12 +3073,13 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
double in2;
|
||||||
|
GET_TYPED_DATA(in2, double, GET_PARAM_TYPE(&pInput[1]), colDataGetData(pInputData[1], 0));
|
||||||
switch (GET_PARAM_TYPE(&pInput[0])) {
|
switch (GET_PARAM_TYPE(&pInput[0])) {
|
||||||
case TSDB_DATA_TYPE_DOUBLE: {
|
case TSDB_DATA_TYPE_DOUBLE: {
|
||||||
double *in = (double *)pInputData[0]->pData;
|
double *in = (double *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
double *out = (double *)pOutputData->pData;
|
double *out = (double *)pOutputData->pData;
|
||||||
double result = d1(in[i], (double)in2[0]);
|
double result = d1(in[i], in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3058,9 +3089,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
}
|
}
|
||||||
case TSDB_DATA_TYPE_FLOAT: {
|
case TSDB_DATA_TYPE_FLOAT: {
|
||||||
float *in = (float *)pInputData[0]->pData;
|
float *in = (float *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
float *out = (float *)pOutputData->pData;
|
float *out = (float *)pOutputData->pData;
|
||||||
float result = f1(in[i], (float)in2[0]);
|
float result = f1(in[i], in2);
|
||||||
if (isinf(result) || isnan(result)) {
|
if (isinf(result) || isnan(result)) {
|
||||||
colDataSetNULL(pOutputData, i);
|
colDataSetNULL(pOutputData, i);
|
||||||
} else {
|
} else {
|
||||||
|
@ -3073,9 +3103,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_INT:
|
case TSDB_DATA_TYPE_INT:
|
||||||
case TSDB_DATA_TYPE_BIGINT:{
|
case TSDB_DATA_TYPE_BIGINT:{
|
||||||
int64_t *in = (int64_t *)pInputData[0]->pData;
|
int64_t *in = (int64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
int64_t *out = (int64_t *)pOutputData->pData;
|
int64_t *out = (int64_t *)pOutputData->pData;
|
||||||
int64_t result = (int64_t)d1((double)in[i], (double)in2[0]);
|
int64_t result = (int64_t)d1((double)in[i], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -3084,9 +3113,8 @@ static int32_t doScalarFunction2(SScalarParam *pInput, int32_t inputNum, SScalar
|
||||||
case TSDB_DATA_TYPE_UINT:
|
case TSDB_DATA_TYPE_UINT:
|
||||||
case TSDB_DATA_TYPE_UBIGINT:{
|
case TSDB_DATA_TYPE_UBIGINT:{
|
||||||
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
uint64_t *in = (uint64_t *)pInputData[0]->pData;
|
||||||
int64_t *in2 = (int64_t *)pInputData[1]->pData;
|
|
||||||
uint64_t *out = (uint64_t *)pOutputData->pData;
|
uint64_t *out = (uint64_t *)pOutputData->pData;
|
||||||
uint64_t result = (uint64_t)d1((double)in[i], (double)in2[0]);
|
uint64_t result = (uint64_t)d1((double)in[i], in2);
|
||||||
out[i] = result;
|
out[i] = result;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -446,12 +446,12 @@ static FORCE_INLINE int32_t varToGeometry(char *buf, SScalarParam *pOut, int32_t
|
||||||
unsigned char *t = NULL;
|
unsigned char *t = NULL;
|
||||||
char *output = NULL;
|
char *output = NULL;
|
||||||
|
|
||||||
if (initCtxGeomFromText()) {
|
if ((code = initCtxGeomFromText()) != 0) {
|
||||||
sclError("failed to init geometry ctx, %s", getThreadLocalGeosCtx()->errMsg);
|
sclError("failed to init geometry ctx, %s", getGeosErrMsg(code));
|
||||||
SCL_ERR_JRET(TSDB_CODE_APP_ERROR);
|
SCL_ERR_JRET(TSDB_CODE_APP_ERROR);
|
||||||
}
|
}
|
||||||
if (doGeomFromText(buf, &t, &len)) {
|
if ((code = doGeomFromText(buf, &t, &len)) != 0) {
|
||||||
sclInfo("failed to convert text to geometry, %s", getThreadLocalGeosCtx()->errMsg);
|
sclInfo("failed to convert text to geometry, %s", getGeosErrMsg(code));
|
||||||
SCL_ERR_JRET(TSDB_CODE_SCALAR_CONVERT_ERROR);
|
SCL_ERR_JRET(TSDB_CODE_SCALAR_CONVERT_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ void streamTaskSendCheckMsg(SStreamTask* pTask) {
|
||||||
streamTaskAddReqInfo(&pTask->taskCheckInfo, req.reqId, pDispatch->taskId, pDispatch->nodeId, idstr);
|
streamTaskAddReqInfo(&pTask->taskCheckInfo, req.reqId, pDispatch->taskId, pDispatch->nodeId, idstr);
|
||||||
|
|
||||||
stDebug("s-task:%s (vgId:%d) stage:%" PRId64 " check single downstream task:0x%x(vgId:%d) ver:%" PRId64 "-%" PRId64
|
stDebug("s-task:%s (vgId:%d) stage:%" PRId64 " check single downstream task:0x%x(vgId:%d) ver:%" PRId64 "-%" PRId64
|
||||||
" window:%" PRId64 "-%" PRId64 " qid:0x%" PRIx64,
|
" window:%" PRId64 "-%" PRId64 "QID:0x%" PRIx64,
|
||||||
idstr, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, pRange->range.minVer,
|
idstr, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, pRange->range.minVer,
|
||||||
pRange->range.maxVer, pWindow->skey, pWindow->ekey, req.reqId);
|
pRange->range.maxVer, pWindow->skey, pWindow->ekey, req.reqId);
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void streamTaskSendCheckMsg(SStreamTask* pTask) {
|
||||||
streamTaskAddReqInfo(&pTask->taskCheckInfo, req.reqId, pVgInfo->taskId, pVgInfo->vgId, idstr);
|
streamTaskAddReqInfo(&pTask->taskCheckInfo, req.reqId, pVgInfo->taskId, pVgInfo->vgId, idstr);
|
||||||
|
|
||||||
stDebug("s-task:%s (vgId:%d) stage:%" PRId64
|
stDebug("s-task:%s (vgId:%d) stage:%" PRId64
|
||||||
" check downstream task:0x%x (vgId:%d) (shuffle), idx:%d, qid:0x%" PRIx64,
|
" check downstream task:0x%x (vgId:%d) (shuffle), idx:%d,QID:0x%" PRIx64,
|
||||||
idstr, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, i, req.reqId);
|
idstr, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, i, req.reqId);
|
||||||
(void)streamSendCheckMsg(pTask, &req, pVgInfo->vgId, &pVgInfo->epSet);
|
(void)streamSendCheckMsg(pTask, &req, pVgInfo->vgId, &pVgInfo->epSet);
|
||||||
}
|
}
|
||||||
|
@ -432,7 +432,7 @@ int32_t streamTaskUpdateCheckInfo(STaskCheckInfo* pInfo, int32_t taskId, int32_t
|
||||||
findCheckRspStatus(pInfo, taskId, &p);
|
findCheckRspStatus(pInfo, taskId, &p);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
if (reqId != p->reqId) {
|
if (reqId != p->reqId) {
|
||||||
stError("s-task:%s qid:0x%" PRIx64 " expected:0x%" PRIx64
|
stError("s-task:%sQID:0x%" PRIx64 " expected:0x%" PRIx64
|
||||||
" expired check-rsp recv from downstream task:0x%x, discarded",
|
" expired check-rsp recv from downstream task:0x%x, discarded",
|
||||||
id, reqId, p->reqId, taskId);
|
id, reqId, p->reqId, taskId);
|
||||||
streamMutexUnlock(&pInfo->checkInfoLock);
|
streamMutexUnlock(&pInfo->checkInfoLock);
|
||||||
|
@ -454,7 +454,7 @@ int32_t streamTaskUpdateCheckInfo(STaskCheckInfo* pInfo, int32_t taskId, int32_t
|
||||||
}
|
}
|
||||||
|
|
||||||
streamMutexUnlock(&pInfo->checkInfoLock);
|
streamMutexUnlock(&pInfo->checkInfoLock);
|
||||||
stError("s-task:%s unexpected check rsp msg, invalid downstream task:0x%x, qid:%" PRIx64 " discarded", id, taskId,
|
stError("s-task:%s unexpected check rsp msg, invalid downstream task:0x%x,QID:%" PRIx64 " discarded", id, taskId,
|
||||||
reqId);
|
reqId);
|
||||||
return TSDB_CODE_FAILED;
|
return TSDB_CODE_FAILED;
|
||||||
}
|
}
|
||||||
|
@ -541,7 +541,7 @@ void doSendCheckMsg(SStreamTask* pTask, SDownstreamStatusInfo* p) {
|
||||||
STaskDispatcherFixed* pDispatch = &pOutputInfo->fixedDispatcher;
|
STaskDispatcherFixed* pDispatch = &pOutputInfo->fixedDispatcher;
|
||||||
setCheckDownstreamReqInfo(&req, p->reqId, pDispatch->taskId, pDispatch->nodeId);
|
setCheckDownstreamReqInfo(&req, p->reqId, pDispatch->taskId, pDispatch->nodeId);
|
||||||
|
|
||||||
stDebug("s-task:%s (vgId:%d) stage:%" PRId64 " re-send check downstream task:0x%x(vgId:%d) qid:0x%" PRIx64, id,
|
stDebug("s-task:%s (vgId:%d) stage:%" PRId64 " re-send check downstream task:0x%x(vgId:%d)QID:0x%" PRIx64, id,
|
||||||
pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, req.reqId);
|
pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, req.reqId);
|
||||||
|
|
||||||
(void)streamSendCheckMsg(pTask, &req, pOutputInfo->fixedDispatcher.nodeId, &pOutputInfo->fixedDispatcher.epSet);
|
(void)streamSendCheckMsg(pTask, &req, pOutputInfo->fixedDispatcher.nodeId, &pOutputInfo->fixedDispatcher.epSet);
|
||||||
|
@ -559,7 +559,7 @@ void doSendCheckMsg(SStreamTask* pTask, SDownstreamStatusInfo* p) {
|
||||||
setCheckDownstreamReqInfo(&req, p->reqId, pVgInfo->taskId, pVgInfo->vgId);
|
setCheckDownstreamReqInfo(&req, p->reqId, pVgInfo->taskId, pVgInfo->vgId);
|
||||||
|
|
||||||
stDebug("s-task:%s (vgId:%d) stage:%" PRId64
|
stDebug("s-task:%s (vgId:%d) stage:%" PRId64
|
||||||
" re-send check downstream task:0x%x(vgId:%d) (shuffle), idx:%d qid:0x%" PRIx64,
|
" re-send check downstream task:0x%x(vgId:%d) (shuffle), idx:%dQID:0x%" PRIx64,
|
||||||
id, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, i, p->reqId);
|
id, pTask->info.nodeId, req.stage, req.downstreamTaskId, req.downstreamNodeId, i, p->reqId);
|
||||||
(void)streamSendCheckMsg(pTask, &req, pVgInfo->vgId, &pVgInfo->epSet);
|
(void)streamSendCheckMsg(pTask, &req, pVgInfo->vgId, &pVgInfo->epSet);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -586,7 +586,7 @@ int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, bool restored, SV
|
||||||
id, vgId, pStatus.name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer, pReq->checkpointVer,
|
id, vgId, pStatus.name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer, pReq->checkpointVer,
|
||||||
pInfo->checkpointTime, pReq->checkpointTs);
|
pInfo->checkpointTime, pReq->checkpointTs);
|
||||||
} else { // not in restore status, must be in checkpoint status
|
} else { // not in restore status, must be in checkpoint status
|
||||||
if (pStatus.state == TASK_STATUS__CK) {
|
if ((pStatus.state == TASK_STATUS__CK) || (pMeta->role == NODE_ROLE_FOLLOWER)) {
|
||||||
stDebug("s-task:%s vgId:%d status:%s start to update the checkpoint-info, checkpointId:%" PRId64 "->%" PRId64
|
stDebug("s-task:%s vgId:%d status:%s start to update the checkpoint-info, checkpointId:%" PRId64 "->%" PRId64
|
||||||
" checkpointVer:%" PRId64 "->%" PRId64 " checkpointTs:%" PRId64 "->%" PRId64,
|
" checkpointVer:%" PRId64 "->%" PRId64 " checkpointTs:%" PRId64 "->%" PRId64,
|
||||||
id, vgId, pStatus.name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer,
|
id, vgId, pStatus.name, pInfo->checkpointId, pReq->checkpointId, pInfo->checkpointVer,
|
||||||
|
@ -610,7 +610,7 @@ int32_t streamTaskUpdateTaskCheckpointInfo(SStreamTask* pTask, bool restored, SV
|
||||||
}
|
}
|
||||||
|
|
||||||
// update only it is in checkpoint status, or during restore procedure.
|
// update only it is in checkpoint status, or during restore procedure.
|
||||||
if (pStatus.state == TASK_STATUS__CK || (!restored)) {
|
if ((pStatus.state == TASK_STATUS__CK) || (!restored) || (pMeta->role == NODE_ROLE_FOLLOWER)) {
|
||||||
pInfo->checkpointId = pReq->checkpointId;
|
pInfo->checkpointId = pReq->checkpointId;
|
||||||
pInfo->checkpointVer = pReq->checkpointVer;
|
pInfo->checkpointVer = pReq->checkpointVer;
|
||||||
pInfo->checkpointTime = pReq->checkpointTs;
|
pInfo->checkpointTime = pReq->checkpointTs;
|
||||||
|
@ -1371,19 +1371,19 @@ int32_t deleteCheckpointFile(const char* id, const char* name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask) {
|
int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask) {
|
||||||
const char* id = pTask->id.idStr;
|
const char* id = pTask->id.idStr;
|
||||||
|
SConsenChkptInfo* pInfo = &pTask->status.consenChkptInfo;
|
||||||
|
|
||||||
streamMutexLock(&pTask->lock);
|
streamMutexLock(&pTask->lock);
|
||||||
ETaskStatus p = streamTaskGetStatus(pTask).state;
|
ETaskStatus p = streamTaskGetStatus(pTask).state;
|
||||||
|
// if (pInfo->alreadySendChkptId == true) {
|
||||||
if (pTask->status.sendConsensusChkptId == true) {
|
// stDebug("s-task:%s already start to consensus-checkpointId, not start again before it completed", id);
|
||||||
stDebug("s-task:%s already start to consensus-checkpointId, not start again before it completed", id);
|
// streamMutexUnlock(&pTask->lock);
|
||||||
streamMutexUnlock(&pTask->lock);
|
// return TSDB_CODE_SUCCESS;
|
||||||
return TSDB_CODE_SUCCESS;
|
// } else {
|
||||||
} else {
|
// pInfo->alreadySendChkptId = true;
|
||||||
pTask->status.sendConsensusChkptId = true;
|
// }
|
||||||
}
|
//
|
||||||
|
|
||||||
streamMutexUnlock(&pTask->lock);
|
streamMutexUnlock(&pTask->lock);
|
||||||
|
|
||||||
if (pTask->pBackend != NULL) {
|
if (pTask->pBackend != NULL) {
|
||||||
|
@ -1391,8 +1391,9 @@ int32_t streamTaskSendNegotiateChkptIdMsg(SStreamTask* pTask) {
|
||||||
pTask->pBackend = NULL;
|
pTask->pBackend = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pTask->status.requireConsensusChkptId = true;
|
pInfo->status = TASK_CONSEN_CHKPT_REQ;
|
||||||
stDebug("s-task:%s set the require consensus-checkpointId flag", id);
|
pInfo->statusTs = taosGetTimestampMs();
|
||||||
|
stDebug("s-task:%s set the require consensus-checkpointId flag, ts:%" PRId64, id, pInfo->statusTs);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue