From 65ef7c626deba2d8d295ba3d39461d544b23054d Mon Sep 17 00:00:00 2001 From: wangmm0220 Date: Mon, 16 May 2022 21:05:36 +0800 Subject: [PATCH] refactor:add the configuration of child table name --- source/client/src/clientSml.c | 6 +++--- source/client/test/smlTest.cpp | 30 ++++++++++++++++-------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/source/client/src/clientSml.c b/source/client/src/clientSml.c index a18b78b501..001c947318 100644 --- a/source/client/src/clientSml.c +++ b/source/client/src/clientSml.c @@ -1183,7 +1183,7 @@ static int32_t smlParseCols(const char* data, int32_t len, SArray *cols, char *c PROCESS_SLASH(value, valueLen) //handle child table name - if(childTableNameLen != 0 && strncmp(key, tsSmlChildTableName, keyLen) == 0){ + if(childTableName && childTableNameLen != 0 && strncmp(key, tsSmlChildTableName, keyLen) == 0){ memset(childTableName, 0, TSDB_TABLE_NAME_LEN); strncpy(childTableName, value, (valueLen < TSDB_TABLE_NAME_LEN ? valueLen : TSDB_TABLE_NAME_LEN)); continue; @@ -1984,7 +1984,7 @@ static int32_t smlParseInfluxLine(SSmlHandle* info, const char* sql) { if(info->dataFormat) taosArrayDestroy(cols); return ret; } - ret = smlParseCols(elements.cols, elements.colsLen, cols, false, info->dumplicateKey, &info->msgBuf); + ret = smlParseCols(elements.cols, elements.colsLen, cols, NULL, false, info->dumplicateKey, &info->msgBuf); if(ret != TSDB_CODE_SUCCESS){ uError("SML:0x%"PRIx64" smlParseCols parse cloums fields failed", info->id); smlDestroyCols(cols); @@ -2015,7 +2015,7 @@ static int32_t smlParseInfluxLine(SSmlHandle* info, const char* sql) { } if(!hasTable){ - ret = smlParseCols(elements.tags, elements.tagsLen, (*oneTable)->tags, true, info->dumplicateKey, &info->msgBuf); + ret = smlParseCols(elements.tags, elements.tagsLen, (*oneTable)->tags, (*oneTable)->childTableName, true, info->dumplicateKey, &info->msgBuf); if(ret != TSDB_CODE_SUCCESS){ uError("SML:0x%"PRIx64" smlParseCols parse tag fields failed", info->id); return ret; diff --git a/source/client/test/smlTest.cpp b/source/client/test/smlTest.cpp index e567a0c3e8..1eb6909281 100644 --- a/source/client/test/smlTest.cpp +++ b/source/client/test/smlTest.cpp @@ -207,7 +207,7 @@ TEST(testCase, smlParseCols_Error_Test) { char *sql = (char*)taosMemoryCalloc(256, 1); memcpy(sql, data[i], len + 1); SArray *cols = taosArrayInit(8, POINTER_BYTES); - int32_t ret = smlParseCols(sql, len, cols, false, dumplicateKey, &msgBuf); + int32_t ret = smlParseCols(sql, len, cols, NULL, false, dumplicateKey, &msgBuf); ASSERT_NE(ret, TSDB_CODE_SUCCESS); taosHashClear(dumplicateKey); taosMemoryFree(sql); @@ -233,7 +233,7 @@ TEST(testCase, smlParseCols_tag_Test) { const char *data = "cbin=\"passit helloc\",cnch=L\"iisdfsf\",cbool=false,cf64=4.31f64,cf64_=8.32,cf32=8.23f32,ci8=-34i8,cu8=89u8,ci16=233i16,cu16=898u16,ci32=98289i32,cu32=12323u32,ci64=-89238i64,ci=989i,cu64=8989323u64,cbooltrue=true,cboolt=t,cboolf=f,cnch_=l\"iuwq\""; int32_t len = strlen(data); - int32_t ret = smlParseCols(data, len, cols, true, dumplicateKey, &msgBuf); + int32_t ret = smlParseCols(data, len, cols, NULL, true, dumplicateKey, &msgBuf); ASSERT_EQ(ret, TSDB_CODE_SUCCESS); int32_t size = taosArrayGetSize(cols); ASSERT_EQ(size, 19); @@ -265,7 +265,7 @@ TEST(testCase, smlParseCols_tag_Test) { len = 0; memset(msgBuf.buf, 0, msgBuf.len); taosHashClear(dumplicateKey); - ret = smlParseCols(data, len, cols, true, dumplicateKey, &msgBuf); + ret = smlParseCols(data, len, cols, NULL, true, dumplicateKey, &msgBuf); ASSERT_EQ(ret, TSDB_CODE_SUCCESS); size = taosArrayGetSize(cols); ASSERT_EQ(size, 1); @@ -298,7 +298,7 @@ TEST(testCase, smlParseCols_Test) { int32_t len = strlen(data); char *sql = (char*)taosMemoryCalloc(1024, 1); memcpy(sql, data, len + 1); - int32_t ret = smlParseCols(sql, len, cols, false, dumplicateKey, &msgBuf); + int32_t ret = smlParseCols(sql, len, cols, NULL, false, dumplicateKey, &msgBuf); ASSERT_EQ(ret, TSDB_CODE_SUCCESS); int32_t size = taosArrayGetSize(cols); ASSERT_EQ(size, 19); @@ -516,16 +516,18 @@ TEST(testCase, smlProcess_influx_Test) { int ret = smlProcess(info, (char**)sql, sizeof(sql)/sizeof(sql[0])); ASSERT_EQ(ret, 0); -// TAOS_RES *res = taos_query(taos, "select * from t_6885c584b98481584ee13dac399e173d"); -// ASSERT_NE(res, nullptr); -// int fieldNum = taos_field_count(res); -// ASSERT_EQ(fieldNum, 5); -// int rowNum = taos_affected_rows(res); -// ASSERT_EQ(rowNum, 2); -// for (int i = 0; i < rowNum; ++i) { -// TAOS_ROW rows = taos_fetch_row(res); -// } -// taos_free_result(res); + TAOS_RES *res = taos_query(taos, "select * from t_6885c584b98481584ee13dac399e173d"); + ASSERT_NE(res, nullptr); + int fieldNum = taos_field_count(res); + //ASSERT_EQ(fieldNum, 5); + printf("fieldNum:%d\n", fieldNum); + int rowNum = taos_affected_rows(res); + //ASSERT_EQ(rowNum, 2); + printf("rowNum:%d\n", rowNum); + for (int i = 0; i < rowNum; ++i) { + TAOS_ROW rows = taos_fetch_row(res); + } + taos_free_result(res); destroyRequest(request); smlDestroyInfo(info); }