fix:add test cases for escape in schemaless

This commit is contained in:
wangmm0220 2023-04-20 15:54:19 +08:00
parent b1561c95c3
commit 8e8a3b268b
1 changed files with 15 additions and 13 deletions

View File

@ -452,25 +452,27 @@ static int32_t smlParseColKv(SSmlHandle *info, char **sql, char *sqlEnd, SSmlLin
return TSDB_CODE_SML_INVALID_DATA; return TSDB_CODE_SML_INVALID_DATA;
} }
SSmlKv kv = {.key = key, .keyLen = keyLen, .value = value, .length = valueLen};
int32_t ret = smlParseValue(&kv, &info->msgBuf);
if (ret != TSDB_CODE_SUCCESS) {
smlBuildInvalidDataMsg(&info->msgBuf, "smlParseValue error", value);
return ret;
}
if (keyEscaped){ if (keyEscaped){
char *tmp = (char*)taosMemoryMalloc(keyLen); char *tmp = (char*)taosMemoryMalloc(keyLen);
memcpy(tmp, key, keyLen); memcpy(tmp, key, keyLen);
PROCESS_SLASH_IN_TAG_FIELD_KEY(tmp, keyLen); PROCESS_SLASH_IN_TAG_FIELD_KEY(tmp, keyLen);
key = tmp; kv.key = tmp;
} kv.keyEscaped = keyEscaped;
if (valueEscaped){
char *tmp = (char*)taosMemoryMalloc(valueLen);
memcpy(tmp, value, valueLen);
PROCESS_SLASH_IN_FIELD_VALUE(tmp, valueLen);
value = tmp;
} }
SSmlKv kv = {.key = key, .keyLen = keyLen, .value = value, .length = valueLen, .keyEscaped = keyEscaped, .valueEscaped = valueEscaped}; if (valueEscaped){
int32_t ret = smlParseValue(&kv, &info->msgBuf); char *tmp = (char*)taosMemoryMalloc(kv.length);
if (ret != TSDB_CODE_SUCCESS) { memcpy(tmp, kv.value, kv.length);
smlBuildInvalidDataMsg(&info->msgBuf, "smlParseValue error", value); PROCESS_SLASH_IN_FIELD_VALUE(tmp, kv.length);
freeSSmlKv(&kv); kv.value = tmp;
return ret; kv.valueEscaped = valueEscaped;
} }
if (info->dataFormat) { if (info->dataFormat) {