[TD-5134]<fix> fix runtime error
This commit is contained in:
parent
a49c706bee
commit
c2f32ad9c1
|
@ -2766,8 +2766,7 @@ static bool isTablenameToken(SStrToken* token) {
|
||||||
SStrToken tableToken = {0};
|
SStrToken tableToken = {0};
|
||||||
|
|
||||||
extractTableNameFromToken(&tmpToken, &tableToken);
|
extractTableNameFromToken(&tmpToken, &tableToken);
|
||||||
|
return (tmpToken.n == strlen(TSQL_TBNAME_L) && strncasecmp(TSQL_TBNAME_L, tmpToken.z, tmpToken.n) == 0);
|
||||||
return (strncasecmp(TSQL_TBNAME_L, tmpToken.z, tmpToken.n) == 0 && tmpToken.n == strlen(TSQL_TBNAME_L));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t index, SStrToken* pToken) {
|
static int16_t doGetColumnIndex(SQueryInfo* pQueryInfo, int32_t index, SStrToken* pToken) {
|
||||||
|
@ -2798,7 +2797,8 @@ int32_t doGetColumnIndexByName(SStrToken* pToken, SQueryInfo* pQueryInfo, SColum
|
||||||
|
|
||||||
if (isTablenameToken(pToken)) {
|
if (isTablenameToken(pToken)) {
|
||||||
pIndex->columnIndex = TSDB_TBNAME_COLUMN_INDEX;
|
pIndex->columnIndex = TSDB_TBNAME_COLUMN_INDEX;
|
||||||
} else if (strncasecmp(pToken->z, DEFAULT_PRIMARY_TIMESTAMP_COL_NAME, pToken->n) == 0) {
|
} else if (strlen(DEFAULT_PRIMARY_TIMESTAMP_COL_NAME) == pToken->n &&
|
||||||
|
strncasecmp(pToken->z, DEFAULT_PRIMARY_TIMESTAMP_COL_NAME, pToken->n) == 0) {
|
||||||
pIndex->columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX;
|
pIndex->columnIndex = PRIMARYKEY_TIMESTAMP_COL_INDEX;
|
||||||
} else {
|
} else {
|
||||||
// not specify the table name, try to locate the table index by column name
|
// not specify the table name, try to locate the table index by column name
|
||||||
|
|
|
@ -3048,8 +3048,9 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!subAndCheckDone(tres, pParentObj, pSupporter->index)) {
|
int32_t suppIdx = pSupporter->index;
|
||||||
tscDebug("0x%"PRIx64" insert:%p,%d completed, total:%d", pParentObj->self, tres, pSupporter->index, pParentObj->subState.numOfSub);
|
if (!subAndCheckDone(tres, pParentObj, suppIdx)) {
|
||||||
|
tscDebug("0x%"PRIx64" insert:%p,%d completed, total:%d", pParentObj->self, tres, suppIdx, pParentObj->subState.numOfSub);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,7 @@ bool tscHasColumnFilter(SQueryInfo* pQueryInfo) {
|
||||||
|
|
||||||
size_t size = taosArrayGetSize(pQueryInfo->colList);
|
size_t size = taosArrayGetSize(pQueryInfo->colList);
|
||||||
for (int32_t i = 0; i < size; ++i) {
|
for (int32_t i = 0; i < size; ++i) {
|
||||||
SColumn* pCol = taosArrayGet(pQueryInfo->colList, i);
|
SColumn* pCol = taosArrayGetP(pQueryInfo->colList, i);
|
||||||
if (pCol->info.flist.numOfFilters > 0) {
|
if (pCol->info.flist.numOfFilters > 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4382,7 +4382,9 @@ int32_t tscCreateQueryFromQueryInfo(SQueryInfo* pQueryInfo, SQueryAttr* pQueryAt
|
||||||
|
|
||||||
if (pQueryAttr->fillType != TSDB_FILL_NONE) {
|
if (pQueryAttr->fillType != TSDB_FILL_NONE) {
|
||||||
pQueryAttr->fillVal = calloc(pQueryAttr->numOfOutput, sizeof(int64_t));
|
pQueryAttr->fillVal = calloc(pQueryAttr->numOfOutput, sizeof(int64_t));
|
||||||
memcpy(pQueryAttr->fillVal, pQueryInfo->fillVal, pQueryAttr->numOfOutput * sizeof(int64_t));
|
int32_t fields = tscNumOfFields(pQueryInfo);
|
||||||
|
int32_t cpySize = fields < pQueryAttr->numOfOutput ? fields : pQueryAttr->numOfOutput;
|
||||||
|
memcpy(pQueryAttr->fillVal, pQueryInfo->fillVal, cpySize * sizeof(int64_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
pQueryAttr->srcRowSize = 0;
|
pQueryAttr->srcRowSize = 0;
|
||||||
|
|
|
@ -5956,8 +5956,13 @@ SColumnInfo* extractColumnFilterInfo(SExprInfo* pExpr, int32_t numOfOutput, int3
|
||||||
pCols[i].colId = pExpr[i].base.resColId;
|
pCols[i].colId = pExpr[i].base.resColId;
|
||||||
|
|
||||||
pCols[i].flist.numOfFilters = pExpr[i].base.flist.numOfFilters;
|
pCols[i].flist.numOfFilters = pExpr[i].base.flist.numOfFilters;
|
||||||
|
if (pCols[i].flist.numOfFilters != 0) {
|
||||||
pCols[i].flist.filterInfo = calloc(pCols[i].flist.numOfFilters, sizeof(SColumnFilterInfo));
|
pCols[i].flist.filterInfo = calloc(pCols[i].flist.numOfFilters, sizeof(SColumnFilterInfo));
|
||||||
memcpy(pCols[i].flist.filterInfo, pExpr[i].base.flist.filterInfo, pCols[i].flist.numOfFilters * sizeof(SColumnFilterInfo));
|
memcpy(pCols[i].flist.filterInfo, pExpr[i].base.flist.filterInfo, pCols[i].flist.numOfFilters * sizeof(SColumnFilterInfo));
|
||||||
|
} else {
|
||||||
|
// avoid runtime error
|
||||||
|
pCols[i].flist.filterInfo = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(numOfFilter > 0);
|
assert(numOfFilter > 0);
|
||||||
|
@ -6416,10 +6421,10 @@ static SSDataBlock* hashDistinct(void* param, bool* newgroup) {
|
||||||
if (isNull(val, type)) {
|
if (isNull(val, type)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
int dummy;
|
||||||
void* res = taosHashGet(pInfo->pSet, val, bytes);
|
void* res = taosHashGet(pInfo->pSet, val, bytes);
|
||||||
if (res == NULL) {
|
if (res == NULL) {
|
||||||
taosHashPut(pInfo->pSet, val, bytes, NULL, 0);
|
taosHashPut(pInfo->pSet, val, bytes, &dummy, sizeof(dummy));
|
||||||
char* start = pResultColInfoData->pData + bytes * pInfo->pRes->info.rows;
|
char* start = pResultColInfoData->pData + bytes * pInfo->pRes->info.rows;
|
||||||
memcpy(start, val, bytes);
|
memcpy(start, val, bytes);
|
||||||
pRes->info.rows += 1;
|
pRes->info.rows += 1;
|
||||||
|
|
Loading…
Reference in New Issue