<fix>[query]: fix filter caused taosd crash.td-14566.
This commit is contained in:
parent
cf9e0be1c9
commit
8a62f5fa73
|
@ -4604,22 +4604,21 @@ SOperatorInfo* createExchangeOperatorInfo(const SNodeList* pSources, SSDataBlock
|
|||
goto _error;
|
||||
}
|
||||
|
||||
size_t size = pBlock->info.numOfCols;
|
||||
pInfo->pResult = pBlock;
|
||||
pInfo->pResult = pBlock;
|
||||
pInfo->seqLoadData = true;
|
||||
|
||||
tsem_init(&pInfo->ready, 0, 0);
|
||||
|
||||
pOperator->name = "ExchangeOperator";
|
||||
pOperator->name = "ExchangeOperator";
|
||||
pOperator->operatorType = QUERY_NODE_PHYSICAL_PLAN_EXCHANGE;
|
||||
pOperator->blockingOptr = false;
|
||||
pOperator->status = OP_NOT_OPENED;
|
||||
pOperator->info = pInfo;
|
||||
pOperator->numOfOutput = size;
|
||||
pOperator->pTaskInfo = pTaskInfo;
|
||||
pOperator->_openFn = prepareLoadRemoteData; // assign a dummy function.
|
||||
pOperator->getNextFn = doLoadRemoteData;
|
||||
pOperator->closeFn = destroyExchangeOperatorInfo;
|
||||
pOperator->status = OP_NOT_OPENED;
|
||||
pOperator->info = pInfo;
|
||||
pOperator->numOfOutput = pBlock->info.numOfCols;
|
||||
pOperator->pTaskInfo = pTaskInfo;
|
||||
pOperator->_openFn = prepareLoadRemoteData; // assign a dummy function.
|
||||
pOperator->getNextFn = doLoadRemoteData;
|
||||
pOperator->closeFn = destroyExchangeOperatorInfo;
|
||||
|
||||
#if 1
|
||||
{ // todo refactor
|
||||
|
|
|
@ -124,6 +124,7 @@ static void recordNewGroupKeys(SArray* pGroupCols, SArray* pGroupColVals, SSData
|
|||
if (colDataIsNull(pColInfoData, pBlock->info.rows, rowIndex, pColAgg)) {
|
||||
pkey->isNull = true;
|
||||
} else {
|
||||
pkey->isNull = false;
|
||||
char* val = colDataGetData(pColInfoData, rowIndex);
|
||||
if (IS_VAR_DATA_TYPE(pkey->type)) {
|
||||
memcpy(pkey->pData, val, varDataTLen(val));
|
||||
|
|
|
@ -1787,12 +1787,14 @@ int32_t fltInitValFieldData(SFilterInfo *info) {
|
|||
// fi->data = null; use fi->desc as data, because json value is variable, so use tVariant (fi->desc)
|
||||
}
|
||||
|
||||
if(type != TSDB_DATA_TYPE_JSON){
|
||||
if(type != TSDB_DATA_TYPE_JSON) {
|
||||
if (dType->type == type) {
|
||||
assignVal(fi->data, nodesGetValueFromNode(var), dType->bytes, type);
|
||||
} else {
|
||||
SScalarParam out = {.columnData = taosMemoryCalloc(1, sizeof(SColumnInfoData))};
|
||||
out.columnData->info.type = type;
|
||||
out.columnData->info.bytes = tDataTypes[type].bytes;
|
||||
ASSERT(!IS_VAR_DATA_TYPE(type));
|
||||
|
||||
// todo refactor the convert
|
||||
int32_t code = doConvertDataType(var, &out);
|
||||
|
@ -2946,8 +2948,8 @@ bool filterExecuteImplRange(void *pinfo, int32_t numOfRows, int8_t** p, SColumnD
|
|||
|
||||
for (int32_t i = 0; i < numOfRows; ++i) {
|
||||
void *colData = colDataGetData((SColumnInfoData *)info->cunits[0].colData, i);
|
||||
|
||||
if (colData == NULL || colDataIsNull((SColumnInfoData *)info->cunits[0].colData, 0, i, NULL)) {
|
||||
SColumnInfoData* pData = info->cunits[0].colData;
|
||||
if (colData == NULL || colDataIsNull_s(pData, i)) {
|
||||
all = false;
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue