From ee88b16ad2c9e928b201e5c16a0f91328cceae15 Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 19 Dec 2022 09:38:12 +0800 Subject: [PATCH] fix:enable multi type for telnet --- source/client/inc/clientSml.h | 1 + source/client/src/clientSmlLine.c | 2 +- source/client/src/clientSmlTelnet.c | 2 +- tests/system-test/2-query/sml.py | 13 +++++++------ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/source/client/inc/clientSml.h b/source/client/inc/clientSml.h index e43d2a9177..8cae1fb1e8 100644 --- a/source/client/inc/clientSml.h +++ b/source/client/inc/clientSml.h @@ -219,6 +219,7 @@ STableMeta* smlGetMeta(SSmlHandle *info, const void* measure, int32_t meas int32_t is_same_child_table_telnet(const void *a, const void *b); int64_t smlParseOpenTsdbTime(SSmlHandle *info, const char *data, int32_t len); int32_t smlClearForRerun(SSmlHandle *info); +int32_t smlParseValue(SSmlKv *pVal, SSmlMsgBuf *msg); int32_t smlParseInfluxString(SSmlHandle *info, char *sql, char *sqlEnd, SSmlLineInfo *elements); int32_t smlParseTelnetString(SSmlHandle *info, char *sql, char *sqlEnd, SSmlLineInfo *elements); diff --git a/source/client/src/clientSmlLine.c b/source/client/src/clientSmlLine.c index dc05d7aa39..f56ad34fc5 100644 --- a/source/client/src/clientSmlLine.c +++ b/source/client/src/clientSmlLine.c @@ -120,7 +120,7 @@ static int64_t smlParseInfluxTime(SSmlHandle *info, const char *data, int32_t le return ts; } -static int32_t smlParseValue(SSmlKv *pVal, SSmlMsgBuf *msg) { +int32_t smlParseValue(SSmlKv *pVal, SSmlMsgBuf *msg) { if (pVal->value[0] == '"'){ // binary if (pVal->length >= 2 && pVal->value[pVal->length - 1] == '"') { pVal->type = TSDB_DATA_TYPE_BINARY; diff --git a/source/client/src/clientSmlTelnet.c b/source/client/src/clientSmlTelnet.c index 7862fe54f6..e6574d030b 100644 --- a/source/client/src/clientSmlTelnet.c +++ b/source/client/src/clientSmlTelnet.c @@ -283,7 +283,7 @@ int32_t smlParseTelnetString(SSmlHandle *info, char *sql, char *sqlEnd, SSmlLine } SSmlKv kv = {.key = VALUE, .keyLen = VALUE_LEN, .value = elements->cols, .length = (size_t)elements->colsLen}; - if (smlParseNumber(&kv, &info->msgBuf)) { + if (smlParseValue(&kv, &info->msgBuf)) { kv.length = (int16_t)tDataTypes[kv.type].bytes; }else{ return TSDB_CODE_TSC_INVALID_VALUE; diff --git a/tests/system-test/2-query/sml.py b/tests/system-test/2-query/sml.py index b764edebd7..60c29e8f22 100644 --- a/tests/system-test/2-query/sml.py +++ b/tests/system-test/2-query/sml.py @@ -76,13 +76,14 @@ class TDTestCase: tdSql.query(f"select * from {dbname}.`sys.cpu.nice` order by _ts") tdSql.checkRows(2) tdSql.checkData(0, 1, 9.000000000) - tdSql.checkData(0, 2, "lga") - tdSql.checkData(0, 3, "web02") - tdSql.checkData(0, 4, None) + tdSql.checkData(0, 2, "web02") + tdSql.checkData(0, 3, None) + tdSql.checkData(0, 4, "lga") + tdSql.checkData(1, 1, 18.000000000) - tdSql.checkData(1, 2, "lga") - tdSql.checkData(1, 3, "web01") - tdSql.checkData(1, 4, "t1") + tdSql.checkData(1, 2, "web01") + tdSql.checkData(1, 3, "t1") + tdSql.checkData(0, 4, "lga") tdSql.query(f"select * from {dbname}.macylr") tdSql.checkRows(2)