From 6c26b6230f7741fd8dfcefcdd4f85e21a40ac325 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Thu, 19 May 2022 17:57:14 +0800 Subject: [PATCH] fea:add select json logic --- source/client/src/clientImpl.c | 3 +-- source/libs/executor/src/scanoperator.c | 8 ++++---- source/libs/scalar/src/sclvector.c | 1 + 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/client/src/clientImpl.c b/source/client/src/clientImpl.c index 21960c5854..0f4e14bbd0 100644 --- a/source/client/src/clientImpl.c +++ b/source/client/src/clientImpl.c @@ -832,8 +832,7 @@ static char* parseTagDatatoJson(void *p){ goto end; } cJSON_AddItemToObject(json, tagJsonKey, value); - } - else{ + }else{ ASSERT(0); } diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 0a815b2092..d88b0dc57e 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -1467,7 +1467,6 @@ static SSDataBlock* doTagScan(SOperatorInfo* pOperator) { STR_TO_VARSTR(str, mr.me.name); colDataAppend(pDst, count, str, false); } else { // it is a tag value - const char* p = NULL; if(pDst->info.type == TSDB_DATA_TYPE_JSON){ const uint8_t *tmp = mr.me.ctbEntry.pTags; char *data = taosMemoryCalloc(kvRowLen(tmp) + 1, 1); @@ -1477,11 +1476,12 @@ static SSDataBlock* doTagScan(SOperatorInfo* pOperator) { } *data = TSDB_DATA_TYPE_JSON; memcpy(data+1, tmp, kvRowLen(tmp)); - p = data; + colDataAppend(pDst, count, data, false); + taosMemoryFree(data); }else{ - p = metaGetTableTagVal(&mr.me, pExprInfo[j].base.pParam[0].pCol->colId); + const char* p = metaGetTableTagVal(&mr.me, pExprInfo[j].base.pParam[0].pCol->colId); + colDataAppend(pDst, count, p, (p == NULL)); } - colDataAppend(pDst, count, p, (p == NULL)); } } diff --git a/source/libs/scalar/src/sclvector.c b/source/libs/scalar/src/sclvector.c index b01724a7b7..c357b438c2 100644 --- a/source/libs/scalar/src/sclvector.c +++ b/source/libs/scalar/src/sclvector.c @@ -923,6 +923,7 @@ static void doReleaseVec(SColumnInfoData* pCol, int32_t type) { } char *getJsonValue(char *json, char *key){ + json++; // jump type int16_t cols = kvRowNCols(json); for (int i = 0; i < cols; ++i) { SColIdx *pColIdx = kvRowColIdxAt(json, i);