[TD-5534]<fix>:fix the coverity medium risk of client
This commit is contained in:
parent
eaed6da8ce
commit
3e96e64521
|
@ -493,9 +493,6 @@ void tscTableMetaCallBack(void *param, TAOS_RES *res, int code) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosReleaseRef(tscObjRef, pSql->self);
|
|
||||||
return;
|
|
||||||
|
|
||||||
_error:
|
_error:
|
||||||
pRes->code = code;
|
pRes->code = code;
|
||||||
tscAsyncResultOnError(pSql);
|
tscAsyncResultOnError(pSql);
|
||||||
|
|
|
@ -851,15 +851,19 @@ static int32_t tscProcessServStatus(SSqlObj *pSql) {
|
||||||
SSqlObj* pHb = (SSqlObj*)taosAcquireRef(tscObjRef, pObj->hbrid);
|
SSqlObj* pHb = (SSqlObj*)taosAcquireRef(tscObjRef, pObj->hbrid);
|
||||||
if (pHb != NULL) {
|
if (pHb != NULL) {
|
||||||
pSql->res.code = pHb->res.code;
|
pSql->res.code = pHb->res.code;
|
||||||
taosReleaseRef(tscObjRef, pObj->hbrid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSql->res.code == TSDB_CODE_RPC_NETWORK_UNAVAIL) {
|
if (pSql->res.code == TSDB_CODE_RPC_NETWORK_UNAVAIL) {
|
||||||
|
taosReleaseRef(tscObjRef, pObj->hbrid);
|
||||||
return pSql->res.code;
|
return pSql->res.code;
|
||||||
}
|
}
|
||||||
|
|
||||||
pSql->res.code = checkForOnlineNode(pHb);
|
if (pHb != NULL) {
|
||||||
|
pSql->res.code = checkForOnlineNode(pHb);
|
||||||
|
}
|
||||||
|
|
||||||
if (pSql->res.code == TSDB_CODE_RPC_NETWORK_UNAVAIL) {
|
if (pSql->res.code == TSDB_CODE_RPC_NETWORK_UNAVAIL) {
|
||||||
|
taosReleaseRef(tscObjRef, pObj->hbrid);
|
||||||
return pSql->res.code;
|
return pSql->res.code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2105,7 +2105,7 @@ static void parseFileSendDataBlock(void *param, TAOS_RES *tres, int32_t numOfRow
|
||||||
pParentSql->fp = pParentSql->fetchFp;
|
pParentSql->fp = pParentSql->fetchFp;
|
||||||
|
|
||||||
// all data has been sent to vnode, call user function
|
// all data has been sent to vnode, call user function
|
||||||
int32_t v = (code != TSDB_CODE_SUCCESS) ? code : (int32_t)pParentSql->res.numOfRows;
|
int32_t v = (int32_t)pParentSql->res.numOfRows;
|
||||||
(*pParentSql->fp)(pParentSql->param, pParentSql, v);
|
(*pParentSql->fp)(pParentSql->param, pParentSql, v);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -438,10 +438,6 @@ int32_t loadTableMeta(TAOS* taos, char* tableName, SSmlSTableSchema* schema) {
|
||||||
char fullTableName[TSDB_TABLE_FNAME_LEN] = {0};
|
char fullTableName[TSDB_TABLE_FNAME_LEN] = {0};
|
||||||
memset(fullTableName, 0, tListLen(fullTableName));
|
memset(fullTableName, 0, tListLen(fullTableName));
|
||||||
tNameExtractFullName(&sname, fullTableName);
|
tNameExtractFullName(&sname, fullTableName);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
tscFreeSqlObj(pSql);
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
tscFreeSqlObj(pSql);
|
tscFreeSqlObj(pSql);
|
||||||
|
|
||||||
schema->tags = taosArrayInit(8, sizeof(SSchema));
|
schema->tags = taosArrayInit(8, sizeof(SSchema));
|
||||||
|
|
|
@ -1773,7 +1773,9 @@ int taos_stmt_close(TAOS_STMT* stmt) {
|
||||||
}
|
}
|
||||||
tscDestroyDataBlock(pStmt->mtb.lastBlock, rmMeta);
|
tscDestroyDataBlock(pStmt->mtb.lastBlock, rmMeta);
|
||||||
pStmt->mtb.pTableBlockHashList = tscDestroyBlockHashTable(pStmt->mtb.pTableBlockHashList, rmMeta);
|
pStmt->mtb.pTableBlockHashList = tscDestroyBlockHashTable(pStmt->mtb.pTableBlockHashList, rmMeta);
|
||||||
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
if (pStmt->pSql){
|
||||||
|
taosHashCleanup(pStmt->pSql->cmd.insertParam.pTableBlockHashList);
|
||||||
|
}
|
||||||
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
pStmt->pSql->cmd.insertParam.pTableBlockHashList = NULL;
|
||||||
taosArrayDestroy(pStmt->mtb.tags);
|
taosArrayDestroy(pStmt->mtb.tags);
|
||||||
tfree(pStmt->mtb.sqlstr);
|
tfree(pStmt->mtb.sqlstr);
|
||||||
|
|
|
@ -6860,7 +6860,8 @@ static int32_t doAddGroupbyColumnsOnDemand(SSqlCmd* pCmd, SQueryInfo* pQueryInfo
|
||||||
tagSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
|
tagSchema = tscGetTableTagSchema(pTableMetaInfo->pTableMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
SSchema* s = NULL;
|
SSchema tmp = {.type = 0, .name = "", .colId = 0, .bytes = 0};
|
||||||
|
SSchema* s = &tmp;
|
||||||
|
|
||||||
for (int32_t i = 0; i < pQueryInfo->groupbyExpr.numOfGroupCols; ++i) {
|
for (int32_t i = 0; i < pQueryInfo->groupbyExpr.numOfGroupCols; ++i) {
|
||||||
SColIndex* pColIndex = taosArrayGet(pQueryInfo->groupbyExpr.columnInfo, i);
|
SColIndex* pColIndex = taosArrayGet(pQueryInfo->groupbyExpr.columnInfo, i);
|
||||||
|
@ -6870,7 +6871,9 @@ static int32_t doAddGroupbyColumnsOnDemand(SSqlCmd* pCmd, SQueryInfo* pQueryInfo
|
||||||
s = tGetTbnameColumnSchema();
|
s = tGetTbnameColumnSchema();
|
||||||
} else {
|
} else {
|
||||||
if (TSDB_COL_IS_TAG(pColIndex->flag)) {
|
if (TSDB_COL_IS_TAG(pColIndex->flag)) {
|
||||||
s = &tagSchema[colIndex];
|
if(tagSchema){
|
||||||
|
s = &tagSchema[colIndex];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
s = &pSchema[colIndex];
|
s = &pSchema[colIndex];
|
||||||
}
|
}
|
||||||
|
@ -8276,17 +8279,16 @@ static int32_t doLoadAllTableMeta(SSqlObj* pSql, SQueryInfo* pQueryInfo, SSqlNod
|
||||||
|
|
||||||
const char* name = tNameGetTableName(&pTableMetaInfo->name);
|
const char* name = tNameGetTableName(&pTableMetaInfo->name);
|
||||||
STableMetaVgroupInfo* p = taosHashGet(pCmd->pTableMetaMap, name, strlen(name));
|
STableMetaVgroupInfo* p = taosHashGet(pCmd->pTableMetaMap, name, strlen(name));
|
||||||
|
if(!p){
|
||||||
|
tscError("taosHashGet meta null. name:%s", name);
|
||||||
|
return TSDB_CODE_TSC_APP_ERROR;
|
||||||
|
}
|
||||||
pTableMetaInfo->pTableMeta = tscTableMetaDup(p->pTableMeta);
|
pTableMetaInfo->pTableMeta = tscTableMetaDup(p->pTableMeta);
|
||||||
assert(pTableMetaInfo->pTableMeta != NULL);
|
assert(pTableMetaInfo->pTableMeta != NULL);
|
||||||
|
|
||||||
if (p->pVgroupInfo != NULL) {
|
if (p->pVgroupInfo != NULL) {
|
||||||
pTableMetaInfo->vgroupList = tscVgroupsInfoDup(p->pVgroupInfo);
|
pTableMetaInfo->vgroupList = tscVgroupsInfoDup(p->pVgroupInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
|
|
|
@ -691,7 +691,9 @@ static char *doSerializeTableInfo(SQueryTableMsg *pQueryMsg, SSqlObj *pSql, STab
|
||||||
tscDumpEpSetFromVgroupInfo(&pSql->epSet, &vgroupInfo);
|
tscDumpEpSetFromVgroupInfo(&pSql->epSet, &vgroupInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
pSql->epSet.inUse = rand()%pSql->epSet.numOfEps;
|
if (pSql->epSet.numOfEps > 0){
|
||||||
|
pSql->epSet.inUse = rand()%pSql->epSet.numOfEps;
|
||||||
|
}
|
||||||
pQueryMsg->head.vgId = htonl(vgId);
|
pQueryMsg->head.vgId = htonl(vgId);
|
||||||
|
|
||||||
STableIdInfo *pTableIdInfo = (STableIdInfo *)pMsg;
|
STableIdInfo *pTableIdInfo = (STableIdInfo *)pMsg;
|
||||||
|
@ -968,7 +970,7 @@ int tscBuildQueryMsg(SSqlObj *pSql, SSqlInfo *pInfo) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query.numOfTags > 0) {
|
if (query.numOfTags > 0 && query.tagColList != NULL) {
|
||||||
for (int32_t i = 0; i < query.numOfTags; ++i) {
|
for (int32_t i = 0; i < query.numOfTags; ++i) {
|
||||||
SColumnInfo* pTag = &query.tagColList[i];
|
SColumnInfo* pTag = &query.tagColList[i];
|
||||||
|
|
||||||
|
@ -2351,6 +2353,9 @@ int tscProcessSTableVgroupRsp(SSqlObj *pSql) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!pInfo){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
int32_t size = 0;
|
int32_t size = 0;
|
||||||
pInfo->vgroupList = createVgroupInfoFromMsg(pMsg, &size, pSql->self);
|
pInfo->vgroupList = createVgroupInfoFromMsg(pMsg, &size, pSql->self);
|
||||||
pMsg += size;
|
pMsg += size;
|
||||||
|
|
|
@ -271,7 +271,7 @@ static void tscProcessStreamRetrieveResult(void *param, TAOS_RES *res, int numOf
|
||||||
|
|
||||||
if (pSql == NULL || numOfRows < 0) {
|
if (pSql == NULL || numOfRows < 0) {
|
||||||
int64_t retryDelayTime = tscGetRetryDelayTime(pStream, pStream->interval.sliding, pStream->precision);
|
int64_t retryDelayTime = tscGetRetryDelayTime(pStream, pStream->interval.sliding, pStream->precision);
|
||||||
tscError("0x%"PRIx64" stream:%p, retrieve data failed, code:0x%08x, retry in %" PRId64 " ms", pSql->self, pStream, numOfRows, retryDelayTime);
|
tscError("stream:%p, retrieve data failed, code:0x%08x, retry in %" PRId64 " ms", pStream, numOfRows, retryDelayTime);
|
||||||
|
|
||||||
tscSetRetryTimer(pStream, pStream->pSql, retryDelayTime);
|
tscSetRetryTimer(pStream, pStream->pSql, retryDelayTime);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -2723,6 +2723,9 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* pSql) {
|
static void tscAllDataRetrievedFromDnode(SRetrieveSupport *trsupport, SSqlObj* pSql) {
|
||||||
|
if (trsupport->pExtMemBuffer == NULL){
|
||||||
|
return;
|
||||||
|
}
|
||||||
int32_t idx = trsupport->subqueryIndex;
|
int32_t idx = trsupport->subqueryIndex;
|
||||||
SSqlObj * pParentSql = trsupport->pParentSql;
|
SSqlObj * pParentSql = trsupport->pParentSql;
|
||||||
tOrderDescriptor *pDesc = trsupport->pOrderDescriptor;
|
tOrderDescriptor *pDesc = trsupport->pOrderDescriptor;
|
||||||
|
|
|
@ -275,16 +275,6 @@ bool tscIsProjectionQuery(SQueryInfo* pQueryInfo) {
|
||||||
f != TSDB_FUNC_DERIVATIVE) {
|
f != TSDB_FUNC_DERIVATIVE) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (f < 0) {
|
|
||||||
SUdfInfo* pUdfInfo = taosArrayGet(pQueryInfo->pUdfInfo, -1 * f - 1);
|
|
||||||
if (pUdfInfo->funcType == TSDB_UDF_TYPE_AGGREGATE) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -3420,7 +3410,7 @@ STableMetaInfo* tscAddTableMetaInfo(SQueryInfo* pQueryInfo, SName* name, STableM
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pTagCols != NULL) {
|
if (pTagCols != NULL && pTableMetaInfo->pTableMeta != NULL) {
|
||||||
tscColumnListCopy(pTableMetaInfo->tagColList, pTagCols, pTableMetaInfo->pTableMeta->id.uid);
|
tscColumnListCopy(pTableMetaInfo->tagColList, pTagCols, pTableMetaInfo->pTableMeta->id.uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3851,7 +3841,8 @@ void executeQuery(SSqlObj* pSql, SQueryInfo* pQueryInfo) {
|
||||||
SSqlObj* pNew = (SSqlObj*)calloc(1, sizeof(SSqlObj));
|
SSqlObj* pNew = (SSqlObj*)calloc(1, sizeof(SSqlObj));
|
||||||
if (pNew == NULL) {
|
if (pNew == NULL) {
|
||||||
terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
|
terrno = TSDB_CODE_TSC_OUT_OF_MEMORY;
|
||||||
// return NULL;
|
tscError("pNew == NULL, out of memory");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pNew->pTscObj = pSql->pTscObj;
|
pNew->pTscObj = pSql->pTscObj;
|
||||||
|
@ -4339,7 +4330,7 @@ uint32_t tscGetTableMetaSize(STableMeta* pTableMeta) {
|
||||||
assert(pTableMeta != NULL);
|
assert(pTableMeta != NULL);
|
||||||
|
|
||||||
int32_t totalCols = 0;
|
int32_t totalCols = 0;
|
||||||
if (pTableMeta->tableInfo.numOfColumns >= 0 && pTableMeta->tableInfo.numOfTags >= 0) {
|
if (pTableMeta->tableInfo.numOfColumns >= 0) {
|
||||||
totalCols = pTableMeta->tableInfo.numOfColumns + pTableMeta->tableInfo.numOfTags;
|
totalCols = pTableMeta->tableInfo.numOfColumns + pTableMeta->tableInfo.numOfTags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ typedef struct STableComInfo {
|
||||||
typedef struct STableMeta {
|
typedef struct STableMeta {
|
||||||
int32_t vgId;
|
int32_t vgId;
|
||||||
STableId id;
|
STableId id;
|
||||||
uint8_t tableType;
|
int8_t tableType;
|
||||||
char sTableName[TSDB_TABLE_FNAME_LEN]; // super table name
|
char sTableName[TSDB_TABLE_FNAME_LEN]; // super table name
|
||||||
uint64_t suid; // super table id
|
uint64_t suid; // super table id
|
||||||
int16_t sversion;
|
int16_t sversion;
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include "tcompare.h"
|
#include "tcompare.h"
|
||||||
#include "tscompression.h"
|
#include "tscompression.h"
|
||||||
#include "qScript.h"
|
#include "qScript.h"
|
||||||
|
#include "tscLog.h"
|
||||||
|
|
||||||
#define IS_MASTER_SCAN(runtime) ((runtime)->scanFlag == MASTER_SCAN)
|
#define IS_MASTER_SCAN(runtime) ((runtime)->scanFlag == MASTER_SCAN)
|
||||||
#define IS_REVERSE_SCAN(runtime) ((runtime)->scanFlag == REVERSE_SCAN)
|
#define IS_REVERSE_SCAN(runtime) ((runtime)->scanFlag == REVERSE_SCAN)
|
||||||
|
@ -750,7 +751,7 @@ static int32_t getNumOfRowsInTimeWindow(SQueryRuntimeEnv* pRuntimeEnv, SDataBloc
|
||||||
int32_t step = GET_FORWARD_DIRECTION_FACTOR(order);
|
int32_t step = GET_FORWARD_DIRECTION_FACTOR(order);
|
||||||
|
|
||||||
if (QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
if (QUERY_IS_ASC_QUERY(pQueryAttr)) {
|
||||||
if (ekey < pDataBlockInfo->window.ekey) {
|
if (ekey < pDataBlockInfo->window.ekey && pPrimaryColumn) {
|
||||||
num = getForwardStepsInBlock(pDataBlockInfo->rows, searchFn, ekey, startPos, order, pPrimaryColumn);
|
num = getForwardStepsInBlock(pDataBlockInfo->rows, searchFn, ekey, startPos, order, pPrimaryColumn);
|
||||||
if (updateLastKey) { // update the last key
|
if (updateLastKey) { // update the last key
|
||||||
item->lastKey = pPrimaryColumn[startPos + (num - 1)] + step;
|
item->lastKey = pPrimaryColumn[startPos + (num - 1)] + step;
|
||||||
|
@ -762,7 +763,7 @@ static int32_t getNumOfRowsInTimeWindow(SQueryRuntimeEnv* pRuntimeEnv, SDataBloc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else { // desc
|
} else { // desc
|
||||||
if (ekey > pDataBlockInfo->window.skey) {
|
if (ekey > pDataBlockInfo->window.skey && pPrimaryColumn) {
|
||||||
num = getForwardStepsInBlock(pDataBlockInfo->rows, searchFn, ekey, startPos, order, pPrimaryColumn);
|
num = getForwardStepsInBlock(pDataBlockInfo->rows, searchFn, ekey, startPos, order, pPrimaryColumn);
|
||||||
if (updateLastKey) { // update the last key
|
if (updateLastKey) { // update the last key
|
||||||
item->lastKey = pPrimaryColumn[startPos - (num - 1)] + step;
|
item->lastKey = pPrimaryColumn[startPos - (num - 1)] + step;
|
||||||
|
@ -1299,6 +1300,10 @@ static void doWindowBorderInterpolation(SOperatorInfo* pOperatorInfo, SSDataBloc
|
||||||
assert(pBlock != NULL);
|
assert(pBlock != NULL);
|
||||||
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pQueryAttr->order.order);
|
int32_t step = GET_FORWARD_DIRECTION_FACTOR(pQueryAttr->order.order);
|
||||||
|
|
||||||
|
if (pBlock->pDataBlock == NULL){
|
||||||
|
tscError("pBlock->pDataBlock == NULL");
|
||||||
|
return;
|
||||||
|
}
|
||||||
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, 0);
|
SColumnInfoData *pColInfo = taosArrayGet(pBlock->pDataBlock, 0);
|
||||||
|
|
||||||
TSKEY *tsCols = (TSKEY *)(pColInfo->pData);
|
TSKEY *tsCols = (TSKEY *)(pColInfo->pData);
|
||||||
|
@ -7540,7 +7545,7 @@ SGroupbyExpr *createGroupbyExprFromMsg(SQueryTableMsg *pQueryMsg, SColIndex *pCo
|
||||||
|
|
||||||
int32_t doCreateFilterInfo(SColumnInfo* pCols, int32_t numOfCols, int32_t numOfFilterCols, SSingleColumnFilterInfo** pFilterInfo, uint64_t qId) {
|
int32_t doCreateFilterInfo(SColumnInfo* pCols, int32_t numOfCols, int32_t numOfFilterCols, SSingleColumnFilterInfo** pFilterInfo, uint64_t qId) {
|
||||||
*pFilterInfo = calloc(1, sizeof(SSingleColumnFilterInfo) * numOfFilterCols);
|
*pFilterInfo = calloc(1, sizeof(SSingleColumnFilterInfo) * numOfFilterCols);
|
||||||
if (pFilterInfo == NULL) {
|
if (*pFilterInfo == NULL) {
|
||||||
return TSDB_CODE_QRY_OUT_OF_MEMORY;
|
return TSDB_CODE_QRY_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ static SQueryNode* createQueryNode(int32_t type, const char* name, SQueryNode**
|
||||||
pNode->info.type = type;
|
pNode->info.type = type;
|
||||||
pNode->info.name = strdup(name);
|
pNode->info.name = strdup(name);
|
||||||
|
|
||||||
if (pTableInfo->id.uid != 0) { // it is a true table
|
if (pTableInfo->id.uid != 0 && pTableInfo->tableName) { // it is a true table
|
||||||
pNode->tableInfo.id = pTableInfo->id;
|
pNode->tableInfo.id = pTableInfo->id;
|
||||||
pNode->tableInfo.tableName = strdup(pTableInfo->tableName);
|
pNode->tableInfo.tableName = strdup(pTableInfo->tableName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,8 +78,9 @@ static char* doDecompressData(void* data, int32_t srcSize, int32_t *dst, SDiskba
|
||||||
}
|
}
|
||||||
|
|
||||||
*dst = tsDecompressString(data, srcSize, 1, pResultBuf->assistBuf, pResultBuf->pageSize, ONE_STAGE_COMP, NULL, 0);
|
*dst = tsDecompressString(data, srcSize, 1, pResultBuf->assistBuf, pResultBuf->pageSize, ONE_STAGE_COMP, NULL, 0);
|
||||||
|
if (*dst > 0) {
|
||||||
memcpy(data, pResultBuf->assistBuf, *dst);
|
memcpy(data, pResultBuf->assistBuf, *dst);
|
||||||
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -377,9 +377,11 @@ ScriptEnv* getScriptEnvFromPool() {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
SListNode *pNode = tdListPopHead(pool->scriptEnvs);
|
SListNode *pNode = tdListPopHead(pool->scriptEnvs);
|
||||||
tdListNodeGetData(pool->scriptEnvs, pNode, (void *)(&pEnv));
|
if (pNode){
|
||||||
listNodeFree(pNode);
|
tdListNodeGetData(pool->scriptEnvs, pNode, (void *)(&pEnv));
|
||||||
|
listNodeFree(pNode);
|
||||||
|
}
|
||||||
|
|
||||||
pool->cSize--;
|
pool->cSize--;
|
||||||
pthread_mutex_unlock(&pool->mutex);
|
pthread_mutex_unlock(&pool->mutex);
|
||||||
return pEnv;
|
return pEnv;
|
||||||
|
|
|
@ -142,14 +142,17 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optrType == TK_NULL) {
|
if (optrType == TK_NULL) {
|
||||||
pToken->type = TSDB_DATA_TYPE_NULL;
|
if (pToken){
|
||||||
tVariantCreate(&pSqlExpr->value, pToken);
|
pToken->type = TSDB_DATA_TYPE_NULL;
|
||||||
|
tVariantCreate(&pSqlExpr->value, pToken);
|
||||||
|
}
|
||||||
pSqlExpr->tokenId = optrType;
|
pSqlExpr->tokenId = optrType;
|
||||||
pSqlExpr->type = SQL_NODE_VALUE;
|
pSqlExpr->type = SQL_NODE_VALUE;
|
||||||
} else if (optrType == TK_INTEGER || optrType == TK_STRING || optrType == TK_FLOAT || optrType == TK_BOOL) {
|
} else if (optrType == TK_INTEGER || optrType == TK_STRING || optrType == TK_FLOAT || optrType == TK_BOOL) {
|
||||||
toTSDBType(pToken->type);
|
if (pToken) {
|
||||||
|
toTSDBType(pToken->type);
|
||||||
tVariantCreate(&pSqlExpr->value, pToken);
|
tVariantCreate(&pSqlExpr->value, pToken);
|
||||||
|
}
|
||||||
pSqlExpr->tokenId = optrType;
|
pSqlExpr->tokenId = optrType;
|
||||||
pSqlExpr->type = SQL_NODE_VALUE;
|
pSqlExpr->type = SQL_NODE_VALUE;
|
||||||
} else if (optrType == TK_NOW) {
|
} else if (optrType == TK_NOW) {
|
||||||
|
@ -162,9 +165,11 @@ tSqlExpr *tSqlExprCreateIdValue(SStrToken *pToken, int32_t optrType) {
|
||||||
} else if (optrType == TK_VARIABLE) {
|
} else if (optrType == TK_VARIABLE) {
|
||||||
// use nanosecond by default
|
// use nanosecond by default
|
||||||
// TODO set value after getting database precision
|
// TODO set value after getting database precision
|
||||||
int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, TSDB_TIME_PRECISION_NANO);
|
if (pToken) {
|
||||||
if (ret != TSDB_CODE_SUCCESS) {
|
int32_t ret = parseAbsoluteDuration(pToken->z, pToken->n, &pSqlExpr->value.i64, TSDB_TIME_PRECISION_NANO);
|
||||||
terrno = TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
|
if (ret != TSDB_CODE_SUCCESS) {
|
||||||
|
terrno = TSDB_CODE_TSC_SQL_SYNTAX_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pSqlExpr->flags |= 1 << EXPR_FLAG_NS_TIMESTAMP;
|
pSqlExpr->flags |= 1 << EXPR_FLAG_NS_TIMESTAMP;
|
||||||
|
@ -340,8 +345,9 @@ static FORCE_INLINE int32_t tStrTokenCompare(SStrToken* left, SStrToken* right)
|
||||||
return (left->type == right->type && left->n == right->n && strncasecmp(left->z, right->z, left->n) == 0) ? 0 : 1;
|
return (left->type == right->type && left->n == right->n && strncasecmp(left->z, right->z, left->n) == 0) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this function is not used for temporary
|
||||||
int32_t tSqlExprCompare(tSqlExpr *left, tSqlExpr *right) {
|
int32_t tSqlExprCompare(tSqlExpr *left, tSqlExpr *right) {
|
||||||
if ((left == NULL && right) || (left && right == NULL)) {
|
if ((left == NULL && right) || (left && right == NULL) || (left == NULL && right == NULL)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ SSchema* tscGetColumnSchemaById(STableMeta* pTableMeta, int16_t colId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg) {
|
STableMeta* tscCreateTableMetaFromMsg(STableMetaMsg* pTableMetaMsg) {
|
||||||
assert(pTableMetaMsg != NULL && pTableMetaMsg->numOfColumns >= 2 && pTableMetaMsg->numOfTags >= 0);
|
assert(pTableMetaMsg != NULL && pTableMetaMsg->numOfColumns >= 2);
|
||||||
|
|
||||||
int32_t schemaSize = (pTableMetaMsg->numOfColumns + pTableMetaMsg->numOfTags) * sizeof(SSchema);
|
int32_t schemaSize = (pTableMetaMsg->numOfColumns + pTableMetaMsg->numOfTags) * sizeof(SSchema);
|
||||||
STableMeta* pTableMeta = calloc(1, sizeof(STableMeta) + schemaSize);
|
STableMeta* pTableMeta = calloc(1, sizeof(STableMeta) + schemaSize);
|
||||||
|
|
|
@ -261,7 +261,7 @@ int32_t qRetrieveQueryResultInfo(qinfo_t qinfo, bool* buildRes, void* pRspContex
|
||||||
SQInfo *pQInfo = (SQInfo *)qinfo;
|
SQInfo *pQInfo = (SQInfo *)qinfo;
|
||||||
|
|
||||||
if (pQInfo == NULL || !isValidQInfo(pQInfo)) {
|
if (pQInfo == NULL || !isValidQInfo(pQInfo)) {
|
||||||
qError("QInfo:0x%"PRIx64" invalid qhandle", pQInfo->qId);
|
qError("QInfo invalid qhandle");
|
||||||
return TSDB_CODE_QRY_INVALID_QHANDLE;
|
return TSDB_CODE_QRY_INVALID_QHANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ typedef struct {
|
||||||
#define listNEles(l) (l)->numOfEles
|
#define listNEles(l) (l)->numOfEles
|
||||||
#define listEleSize(l) (l)->eleSize
|
#define listEleSize(l) (l)->eleSize
|
||||||
#define isListEmpty(l) ((l)->numOfEles == 0)
|
#define isListEmpty(l) ((l)->numOfEles == 0)
|
||||||
#define listNodeFree(n) free(n);
|
#define listNodeFree(n) free(n)
|
||||||
|
|
||||||
SList * tdListNew(int eleSize);
|
SList * tdListNew(int eleSize);
|
||||||
void * tdListFree(SList *list);
|
void * tdListFree(SList *list);
|
||||||
|
|
Loading…
Reference in New Issue