diff --git a/src/client/src/tscUtil.c b/src/client/src/tscUtil.c index b443f1f5b147c6fadd73774b97d5068568b466a2..49248d335ee19501fb719ac8958f4c5cc2d251a6 100644 --- a/src/client/src/tscUtil.c +++ b/src/client/src/tscUtil.c @@ -5697,26 +5697,16 @@ int8_t jsonType2DbType(double data, int jsonType){ } void* getJsonTagValue(STable* pTable, char* key, int32_t keyLen, int16_t* retColId){ - if(TABLE_TYPE(pTable) == TSDB_CHILD_TABLE){ - STable* superTable= pTable->pSuper; - SArray** data = (SArray**)taosHashGet(superTable->jsonKeyMap, key, keyLen); - if(data == NULL) return NULL; - JsonMapValue jmvalue = {pTable, 0}; - JsonMapValue* p = taosArraySearch(*data, &jmvalue, tsdbCompareJsonMapValue, TD_EQ); - if (p == NULL) return NULL; - int16_t colId = p->colId + 1; - if(retColId) *retColId = p->colId; - return tdGetKVRowValOfCol(pTable->tagVal, colId); - }else if(TABLE_TYPE(pTable) == TSDB_SUPER_TABLE){ - SArray** data = (SArray**)taosHashGet(pTable->jsonKeyMap, key, keyLen); - if(data == NULL) return NULL; - if(taosArrayGetSize(*data) == 0) return NULL; - JsonMapValue* p = taosArrayGet(*data, 0); - int16_t colId = p->colId + 1; - if(retColId) *retColId = p->colId; - return tdGetKVRowValOfCol(((STable*)(p->table))->tagVal, colId); - } - return NULL; + assert(TABLE_TYPE(pTable) == TSDB_CHILD_TABLE); + STable* superTable= pTable->pSuper; + SArray** data = (SArray**)taosHashGet(superTable->jsonKeyMap, key, keyLen); + if(data == NULL) return NULL; + JsonMapValue jmvalue = {pTable, 0}; + JsonMapValue* p = taosArraySearch(*data, &jmvalue, tsdbCompareJsonMapValue, TD_EQ); + if (p == NULL) return NULL; + int16_t colId = p->colId + 1; + if(retColId) *retColId = p->colId; + return tdGetKVRowValOfCol(pTable->tagVal, colId); } // get key from json->'key' diff --git a/src/query/src/qFilter.c b/src/query/src/qFilter.c index b92953a5068bbee302be3e0c405c11367a655418..d0eb45a150a8f5a9b02b175284929e7882205245 100644 --- a/src/query/src/qFilter.c +++ b/src/query/src/qFilter.c @@ -2951,7 +2951,7 @@ static FORCE_INLINE bool filterExecuteImplIsNull(void *pinfo, int32_t numOfRows, uint32_t uidx = info->groups[0].unitIdxs[0]; void *colData = (char *)info->cunits[uidx].colData + info->cunits[uidx].dataSize * i; if(info->cunits[uidx].dataType == TSDB_DATA_TYPE_JSON){ - colData += CHAR_BYTES; + if(colData) colData += CHAR_BYTES; } (*p)[i] = ((colData == NULL) || isNull(colData, info->cunits[uidx].dataType)); if ((*p)[i] == 0) { @@ -2977,7 +2977,7 @@ static FORCE_INLINE bool filterExecuteImplNotNull(void *pinfo, int32_t numOfRows uint32_t uidx = info->groups[0].unitIdxs[0]; void *colData = (char *)info->cunits[uidx].colData + info->cunits[uidx].dataSize * i; if(info->cunits[uidx].dataType == TSDB_DATA_TYPE_JSON){ - colData += CHAR_BYTES; + if(colData) colData += CHAR_BYTES; } (*p)[i] = ((colData != NULL) && !isNull(colData, info->cunits[uidx].dataType)); if ((*p)[i] == 0) {