[TD-5134]<fix> fix runtime error
This commit is contained in:
parent
3050211e5c
commit
2a107511f7
|
@ -4812,7 +4812,7 @@ int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSq
|
||||||
|
|
||||||
int32_t type = 0;
|
int32_t type = 0;
|
||||||
if ((ret = getQueryCondExpr(&pSql->cmd, pQueryInfo, pExpr, &condExpr, &type, (*pExpr)->tokenId)) != TSDB_CODE_SUCCESS) {
|
if ((ret = getQueryCondExpr(&pSql->cmd, pQueryInfo, pExpr, &condExpr, &type, (*pExpr)->tokenId)) != TSDB_CODE_SUCCESS) {
|
||||||
return ret;
|
goto PARSE_WHERE_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
tSqlExprCompact(pExpr);
|
tSqlExprCompact(pExpr);
|
||||||
|
@ -4822,17 +4822,17 @@ int32_t validateWhereNode(SQueryInfo* pQueryInfo, tSqlExpr** pExpr, SSqlObj* pSq
|
||||||
|
|
||||||
// 1. check if it is a join query
|
// 1. check if it is a join query
|
||||||
if ((ret = validateJoinExpr(&pSql->cmd, pQueryInfo, &condExpr)) != TSDB_CODE_SUCCESS) {
|
if ((ret = validateJoinExpr(&pSql->cmd, pQueryInfo, &condExpr)) != TSDB_CODE_SUCCESS) {
|
||||||
return ret;
|
goto PARSE_WHERE_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. get the query time range
|
// 2. get the query time range
|
||||||
if ((ret = getTimeRangeFromExpr(&pSql->cmd, pQueryInfo, condExpr.pTimewindow)) != TSDB_CODE_SUCCESS) {
|
if ((ret = getTimeRangeFromExpr(&pSql->cmd, pQueryInfo, condExpr.pTimewindow)) != TSDB_CODE_SUCCESS) {
|
||||||
return ret;
|
goto PARSE_WHERE_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. get the tag query condition
|
// 3. get the tag query condition
|
||||||
if ((ret = getTagQueryCondExpr(&pSql->cmd, pQueryInfo, &condExpr, pExpr)) != TSDB_CODE_SUCCESS) {
|
if ((ret = getTagQueryCondExpr(&pSql->cmd, pQueryInfo, &condExpr, pExpr)) != TSDB_CODE_SUCCESS) {
|
||||||
return ret;
|
goto PARSE_WHERE_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. get the table name query condition
|
// 4. get the table name query condition
|
||||||
|
@ -7707,11 +7707,18 @@ int32_t loadAllTableMeta(SSqlObj* pSql, struct SSqlInfo* pInfo) {
|
||||||
taosArrayPush(pVgroupList, &t);
|
taosArrayPush(pVgroupList, &t);
|
||||||
}
|
}
|
||||||
|
|
||||||
STableMeta* pMeta = tscTableMetaDup(pTableMeta);
|
//STableMeta* pMeta = tscTableMetaDup(pTableMeta);
|
||||||
STableMetaVgroupInfo p = { .pTableMeta = pMeta };
|
//STableMetaVgroupInfo p = { .pTableMeta = pMeta };
|
||||||
|
|
||||||
|
//const char* px = tNameGetTableName(pname);
|
||||||
|
//taosHashPut(pCmd->pTableMetaMap, px, strlen(px), &p, sizeof(STableMetaVgroupInfo));
|
||||||
|
// avoid mem leak, may should update pTableMeta
|
||||||
const char* px = tNameGetTableName(pname);
|
const char* px = tNameGetTableName(pname);
|
||||||
taosHashPut(pCmd->pTableMetaMap, px, strlen(px), &p, sizeof(STableMetaVgroupInfo));
|
if (taosHashGet(pCmd->pTableMetaMap, px, strlen(px)) == NULL) {
|
||||||
|
STableMeta* pMeta = tscTableMetaDup(pTableMeta);
|
||||||
|
STableMetaVgroupInfo p = { .pTableMeta = pMeta, .pVgroupInfo = NULL};
|
||||||
|
taosHashPut(pCmd->pTableMetaMap, px, strlen(px), &p, sizeof(STableMetaVgroupInfo));
|
||||||
|
}
|
||||||
} else { // add to the retrieve table meta array list.
|
} else { // add to the retrieve table meta array list.
|
||||||
char* t = strdup(name);
|
char* t = strdup(name);
|
||||||
taosArrayPush(plist, &t);
|
taosArrayPush(plist, &t);
|
||||||
|
@ -8161,7 +8168,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
|
||||||
|
|
||||||
// in case of join query, time range is required.
|
// in case of join query, time range is required.
|
||||||
if (QUERY_IS_JOIN_QUERY(pQueryInfo->type)) {
|
if (QUERY_IS_JOIN_QUERY(pQueryInfo->type)) {
|
||||||
int64_t timeRange = ABS(pQueryInfo->window.skey - pQueryInfo->window.ekey);
|
uint64_t timeRange = (uint64_t)pQueryInfo->window.ekey - pQueryInfo->window.skey;
|
||||||
if (timeRange == 0 && pQueryInfo->window.skey == 0) {
|
if (timeRange == 0 && pQueryInfo->window.skey == 0) {
|
||||||
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
|
return invalidOperationMsg(tscGetErrorMsgPayload(pCmd), msg3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2064,6 +2064,7 @@ int tscProcessMultiTableMetaRsp(SSqlObj *pSql) {
|
||||||
STableMeta* pTableMeta = tscCreateTableMetaFromMsg(pMetaMsg);
|
STableMeta* pTableMeta = tscCreateTableMetaFromMsg(pMetaMsg);
|
||||||
if (!tIsValidSchema(pTableMeta->schema, pTableMeta->tableInfo.numOfColumns, pTableMeta->tableInfo.numOfTags)) {
|
if (!tIsValidSchema(pTableMeta->schema, pTableMeta->tableInfo.numOfColumns, pTableMeta->tableInfo.numOfTags)) {
|
||||||
tscError("0x%"PRIx64" invalid table meta from mnode, name:%s", pSql->self, pMetaMsg->tableFname);
|
tscError("0x%"PRIx64" invalid table meta from mnode, name:%s", pSql->self, pMetaMsg->tableFname);
|
||||||
|
tfree(pTableMeta);
|
||||||
taosHashCleanup(pSet);
|
taosHashCleanup(pSet);
|
||||||
taosReleaseRef(tscObjRef, pParentSql->self);
|
taosReleaseRef(tscObjRef, pParentSql->self);
|
||||||
return TSDB_CODE_TSC_INVALID_VALUE;
|
return TSDB_CODE_TSC_INVALID_VALUE;
|
||||||
|
@ -2105,6 +2106,10 @@ int tscProcessMultiTableMetaRsp(SSqlObj *pSql) {
|
||||||
assert(p != NULL);
|
assert(p != NULL);
|
||||||
|
|
||||||
int32_t size = 0;
|
int32_t size = 0;
|
||||||
|
if (p->pVgroupInfo!= NULL) {
|
||||||
|
tscVgroupInfoClear(p->pVgroupInfo);
|
||||||
|
//tfree(p->pTableMeta);
|
||||||
|
}
|
||||||
p->pVgroupInfo = createVgroupInfoFromMsg(pMsg, &size, pSql->self);
|
p->pVgroupInfo = createVgroupInfoFromMsg(pMsg, &size, pSql->self);
|
||||||
pMsg += size;
|
pMsg += size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,7 +419,9 @@ static void tscDestroyJoinSupporter(SJoinSupporter* pSupporter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// tscFieldInfoClear(&pSupporter->fieldsInfo);
|
// tscFieldInfoClear(&pSupporter->fieldsInfo);
|
||||||
|
if (pSupporter->fieldsInfo.internalField != NULL) {
|
||||||
|
taosArrayDestroy(pSupporter->fieldsInfo.internalField);
|
||||||
|
}
|
||||||
if (pSupporter->pTSBuf != NULL) {
|
if (pSupporter->pTSBuf != NULL) {
|
||||||
tsBufDestroy(pSupporter->pTSBuf);
|
tsBufDestroy(pSupporter->pTSBuf);
|
||||||
pSupporter->pTSBuf = NULL;
|
pSupporter->pTSBuf = NULL;
|
||||||
|
@ -433,7 +435,8 @@ static void tscDestroyJoinSupporter(SJoinSupporter* pSupporter) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pSupporter->pVgroupTables != NULL) {
|
if (pSupporter->pVgroupTables != NULL) {
|
||||||
taosArrayDestroy(pSupporter->pVgroupTables);
|
//taosArrayDestroy(pSupporter->pVgroupTables);
|
||||||
|
tscFreeVgroupTableInfo(pSupporter->pVgroupTables);
|
||||||
pSupporter->pVgroupTables = NULL;
|
pSupporter->pVgroupTables = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -892,7 +895,9 @@ static int32_t getIntersectionOfTableTuple(SQueryInfo* pQueryInfo, SSqlObj* pPar
|
||||||
tscDebug("Join %d - num:%d", i, p->num);
|
tscDebug("Join %d - num:%d", i, p->num);
|
||||||
|
|
||||||
// sort according to the tag valu
|
// sort according to the tag valu
|
||||||
qsort(p->pIdTagList, p->num, p->tagSize, tagValCompar);
|
if (p->pIdTagList != NULL) {
|
||||||
|
qsort(p->pIdTagList, p->num, p->tagSize, tagValCompar);
|
||||||
|
}
|
||||||
|
|
||||||
if (!checkForDuplicateTagVal(pColSchema, p, pParentSql)) {
|
if (!checkForDuplicateTagVal(pColSchema, p, pParentSql)) {
|
||||||
for (int32_t j = 0; j <= i; j++) {
|
for (int32_t j = 0; j <= i; j++) {
|
||||||
|
|
Loading…
Reference in New Issue