diff --git a/src/query/src/qFilter.c b/src/query/src/qFilter.c index 471c6a9167117a0b2eca5726043508d3984a1bc7..d8e1d5ac5d06db15d28fe68cf5470e178a8addac 100644 --- a/src/query/src/qFilter.c +++ b/src/query/src/qFilter.c @@ -860,6 +860,7 @@ int32_t filterAddFieldFromNode(SFilterInfo *info, tExprNode *node, SFilterFieldI if(node->nodeType == TSQL_NODE_EXPR && node->_node.optr == TSDB_RELATION_ARROW){ // json tag -> operation type = FLD_TYPE_COLUMN; assert(node->_node.pRight->pVal->nLen < TSDB_COL_NAME_LEN); + memset(node->_node.pLeft->pSchema->name, 0, TSDB_COL_NAME_LEN); strncpy(node->_node.pLeft->pSchema->name, node->_node.pRight->pVal->pz, node->_node.pRight->pVal->nLen); v = node->pSchema; node->pSchema = NULL; diff --git a/src/tsdb/src/tsdbRead.c b/src/tsdb/src/tsdbRead.c index f5cc4499fe4ee2005c8b6b024f8cdc74cb28aa54..66c8719f86269d71ddd05fbee6b14edf6dcd2804 100644 --- a/src/tsdb/src/tsdbRead.c +++ b/src/tsdb/src/tsdbRead.c @@ -4109,7 +4109,20 @@ static void queryByJsonTag(STable* pTable, void* filterInfo, SArray* res){ SFilterField* fi = &info->fields[FLD_TYPE_COLUMN].fields[i]; SSchema* sch = fi->desc; if (sch-> colId == TSDB_TBNAME_COLUMN_INDEX) continue; - SArray** data = (SArray**)taosHashGet(pTable->jsonKeyMap, sch->name, strlen(sch->name)); + int32_t outLen = 0; + char* key = NULL; + if(JSON_TYPE_NCHAR){ + char tagKey[256] = {0}; + if (!taosMbsToUcs4(sch->name, strlen(sch->name), tagKey, 256, &outLen)) { + tsdbError("json key to ucs4 error:%s|%s", strerror(errno), sch->name); + return; + } + key = tagKey; + }else{ + key = sch->name; + outLen = strlen(sch->name); + } + SArray** data = (SArray**)taosHashGet(pTable->jsonKeyMap, key, outLen); if(data == NULL) continue; if(tabList == NULL) { tabList = taosArrayDup(*data);