From 8d559b531622bcd1242ef930f5ef0c259795d45e Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 27 Sep 2021 15:50:57 +0800 Subject: [PATCH] TD-6129 add tag-> where logic --- src/query/src/qFilter.c | 1 + src/tsdb/src/tsdbRead.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/query/src/qFilter.c b/src/query/src/qFilter.c index 471c6a9167..d8e1d5ac5d 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 f5cc4499fe..66c8719f86 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); -- GitLab