fix:cols error because delete json cols value

This commit is contained in:
wangmm0220 2023-01-28 10:33:00 +08:00
parent 0f1f239425
commit b493b8d2e1
4 changed files with 16 additions and 3 deletions

View File

@ -184,6 +184,7 @@ typedef struct {
SSmlLineInfo *lines; // element is SSmlLineInfo SSmlLineInfo *lines; // element is SSmlLineInfo
bool parseJsonByLib; bool parseJsonByLib;
SArray *tagJsonArray; SArray *tagJsonArray;
SArray *valueJsonArray;
// //
SArray *preLineTagKV; SArray *preLineTagKV;

View File

@ -1072,6 +1072,12 @@ void smlDestroyInfo(SSmlHandle *info) {
} }
taosArrayDestroy(info->tagJsonArray); taosArrayDestroy(info->tagJsonArray);
for (int i = 0; i < taosArrayGetSize(info->valueJsonArray); i++) {
cJSON *value = (cJSON *)taosArrayGetP(info->valueJsonArray, i);
cJSON_Delete(value);
}
taosArrayDestroy(info->valueJsonArray);
taosArrayDestroy(info->preLineTagKV); taosArrayDestroy(info->preLineTagKV);
taosArrayDestroy(info->maxTagKVs); taosArrayDestroy(info->maxTagKVs);
taosArrayDestroy(info->preLineColKV); taosArrayDestroy(info->preLineColKV);
@ -1111,6 +1117,7 @@ SSmlHandle *smlBuildSmlInfo(TAOS *taos) {
info->dataFormat = true; info->dataFormat = true;
info->tagJsonArray = taosArrayInit(8, POINTER_BYTES); info->tagJsonArray = taosArrayInit(8, POINTER_BYTES);
info->valueJsonArray = taosArrayInit(8, POINTER_BYTES);
info->preLineTagKV = taosArrayInit(8, sizeof(SSmlKv)); info->preLineTagKV = taosArrayInit(8, sizeof(SSmlKv));
info->maxTagKVs = taosArrayInit(8, sizeof(SSmlKv)); info->maxTagKVs = taosArrayInit(8, sizeof(SSmlKv));
info->preLineColKV = taosArrayInit(8, sizeof(SSmlKv)); info->preLineColKV = taosArrayInit(8, sizeof(SSmlKv));

View File

@ -1155,15 +1155,18 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
char tmp = elements->cols[elements->colsLen]; char tmp = elements->cols[elements->colsLen];
elements->cols[elements->colsLen] = '\0'; elements->cols[elements->colsLen] = '\0';
cJSON* valueJson = cJSON_Parse(elements->cols); cJSON* valueJson = cJSON_Parse(elements->cols);
if (unlikely(valueJson == NULL)) {
uError("SML:0x%" PRIx64 " parse json cols failed:%s", info->id, elements->cols);
return TSDB_CODE_TSC_INVALID_JSON;
}
taosArrayPush(info->tagJsonArray, &valueJson);
ret = smlParseValueFromJSONObj(valueJson, &kv); ret = smlParseValueFromJSONObj(valueJson, &kv);
if (ret != TSDB_CODE_SUCCESS) { if (ret != TSDB_CODE_SUCCESS) {
uError("SML:Failed to parse value from JSON Obj:%s", elements->cols); uError("SML:Failed to parse value from JSON Obj:%s", elements->cols);
elements->cols[elements->colsLen] = tmp; elements->cols[elements->colsLen] = tmp;
cJSON_Delete(valueJson);
return TSDB_CODE_TSC_INVALID_VALUE; return TSDB_CODE_TSC_INVALID_VALUE;
} }
elements->cols[elements->colsLen] = tmp; elements->cols[elements->colsLen] = tmp;
cJSON_Delete(valueJson);
}else if(smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS){ }else if(smlParseValue(&kv, &info->msgBuf) != TSDB_CODE_SUCCESS){
uError("SML:cols invalidate:%s", elements->cols); uError("SML:cols invalidate:%s", elements->cols);
return TSDB_CODE_TSC_INVALID_VALUE; return TSDB_CODE_TSC_INVALID_VALUE;
@ -1176,7 +1179,7 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
cJSON* tagsJson = cJSON_Parse(elements->tags); cJSON* tagsJson = cJSON_Parse(elements->tags);
*(elements->tags + elements->tagsLen) = tmp; *(elements->tags + elements->tagsLen) = tmp;
if (unlikely(tagsJson == NULL)) { if (unlikely(tagsJson == NULL)) {
uError("SML:0x%" PRIx64 " parse json failed:%s", info->id, elements->tags); uError("SML:0x%" PRIx64 " parse json tag failed:%s", info->id, elements->tags);
return TSDB_CODE_TSC_INVALID_JSON; return TSDB_CODE_TSC_INVALID_JSON;
} }

View File

@ -29,6 +29,7 @@ class TDSimClient:
self.testCluster = False self.testCluster = False
self.path = path self.path = path
self.cfgDict = { self.cfgDict = {
"fqdn": "localhost",
"numOfLogLines": "100000000", "numOfLogLines": "100000000",
"locale": "en_US.UTF-8", "locale": "en_US.UTF-8",
"charset": "UTF-8", "charset": "UTF-8",
@ -119,6 +120,7 @@ class TDDnode:
self.asan = False self.asan = False
self.remoteIP = "" self.remoteIP = ""
self.cfgDict = { self.cfgDict = {
"fqdn": "localhost",
"monitor": "0", "monitor": "0",
"maxShellConns": "30000", "maxShellConns": "30000",
"locale": "en_US.UTF-8", "locale": "en_US.UTF-8",