refactor: add telnet and json protocol for schemaless
This commit is contained in:
parent
f6889f4b5f
commit
167f40811d
|
@ -75,7 +75,7 @@ int32_t qCreateSName(SName* pName, const char* pTableName, int32_t acctId, char*
|
|||
|
||||
void* smlInitHandle(SQuery* pQuery);
|
||||
void smlDestroyHandle(void* pHandle);
|
||||
int32_t smlBindData(void* handle, SArray* tags, SArray* colsFormat, SArray* colsSchema, SArray* cols, bool format,
|
||||
int32_t smlBindData(void* handle, SArray* tags, SArray* colsSchema, SArray* cols, bool format,
|
||||
STableMeta* pTableMeta, char* tableName, char* msgBuf, int16_t msgBufLen);
|
||||
int32_t smlBuildOutput(void* handle, SHashObj* pVgHash);
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -33,7 +33,7 @@ int main(int argc, char **argv) {
|
|||
return RUN_ALL_TESTS();
|
||||
}
|
||||
|
||||
TEST(testCase, smlParseString_Test) {
|
||||
TEST(testCase, smlParseInfluxString_Test) {
|
||||
char msg[256] = {0};
|
||||
SSmlMsgBuf msgBuf;
|
||||
msgBuf.buf = msg;
|
||||
|
@ -42,7 +42,7 @@ TEST(testCase, smlParseString_Test) {
|
|||
|
||||
// case 1
|
||||
char *sql = "st,t1=3,t2=4,t3=t3 c1=3i64,c3=\"passit hello,c1=2\",c2=false,c4=4f64 1626006833639000000 ,32,c=3";
|
||||
int ret = smlParseString(sql, &elements, &msgBuf);
|
||||
int ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_EQ(ret, 0);
|
||||
ASSERT_EQ(elements.measure, sql);
|
||||
ASSERT_EQ(elements.measureLen, strlen("st"));
|
||||
|
@ -60,13 +60,13 @@ TEST(testCase, smlParseString_Test) {
|
|||
// case 2 false
|
||||
sql = "st,t1=3,t2=4,t3=t3 c1=3i64,c3=\"passit hello,c1=2,c2=false,c4=4f64 1626006833639000000";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_NE(ret, 0);
|
||||
|
||||
// case 3 false
|
||||
sql = "st, t1=3,t2=4,t3=t3 c1=3i64,c3=\"passit hello,c1=2,c2=false,c4=4f64 1626006833639000000";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_EQ(ret, 0);
|
||||
ASSERT_EQ(elements.cols, sql + elements.measureTagsLen + 2);
|
||||
ASSERT_EQ(elements.colsLen, strlen("t1=3,t2=4,t3=t3"));
|
||||
|
@ -74,7 +74,7 @@ TEST(testCase, smlParseString_Test) {
|
|||
// case 4 tag is null
|
||||
sql = "st, c1=3i64,c3=\"passit hello,c1=2\",c2=false,c4=4f64 1626006833639000000";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_EQ(ret, 0);
|
||||
ASSERT_EQ(elements.measure, sql);
|
||||
ASSERT_EQ(elements.measureLen, strlen("st"));
|
||||
|
@ -92,7 +92,7 @@ TEST(testCase, smlParseString_Test) {
|
|||
// case 5 tag is null
|
||||
sql = " st c1=3i64,c3=\"passit hello,c1=2\",c2=false,c4=4f64 1626006833639000000 ";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
sql++;
|
||||
ASSERT_EQ(ret, 0);
|
||||
ASSERT_EQ(elements.measure, sql);
|
||||
|
@ -111,13 +111,13 @@ TEST(testCase, smlParseString_Test) {
|
|||
// case 6
|
||||
sql = " st c1=3i64,c3=\"passit hello,c1=2\",c2=false,c4=4f64 ";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_EQ(ret, 0);
|
||||
|
||||
// case 7
|
||||
sql = " st , ";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
sql++;
|
||||
ASSERT_EQ(ret, 0);
|
||||
ASSERT_EQ(elements.cols, sql + elements.measureTagsLen + 3);
|
||||
|
@ -126,7 +126,7 @@ TEST(testCase, smlParseString_Test) {
|
|||
// case 8 false
|
||||
sql = ", st , ";
|
||||
memset(&elements, 0, sizeof(SSmlLineInfo));
|
||||
ret = smlParseString(sql, &elements, &msgBuf);
|
||||
ret = smlParseInfluxString(sql, &elements, &msgBuf);
|
||||
ASSERT_NE(ret, 0);
|
||||
}
|
||||
|
||||
|
@ -467,7 +467,7 @@ TEST(testCase, smlParseCols_Test) {
|
|||
taosHashCleanup(dumplicateKey);
|
||||
}
|
||||
|
||||
TEST(testCase, smlParseLine_Test) {
|
||||
TEST(testCase, smlProcess_influx_Test) {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
ASSERT_NE(taos, nullptr);
|
||||
|
||||
|
@ -483,7 +483,7 @@ TEST(testCase, smlParseLine_Test) {
|
|||
SSmlHandle *info = smlBuildSmlInfo(taos, request, TSDB_SML_LINE_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS, true);
|
||||
ASSERT_NE(info, nullptr);
|
||||
|
||||
const char *sql[9] = {
|
||||
const char *sql[11] = {
|
||||
"readings,name=truck_0,fleet=South,driver=Trish,model=H-2,device_version=v2.3 load_capacity=1500,fuel_capacity=150,nominal_fuel_consumption=12,latitude=52.31854,longitude=4.72037,elevation=124,velocity=0,heading=221,grade=0 1451606400000000000",
|
||||
"readings,name=truck_0,fleet=South,driver=Trish,model=H-2,device_version=v2.3 load_capacity=1500,fuel_capacity=150,nominal_fuel_consumption=12,latitude=52.31854,longitude=4.72037,elevation=124,velocity=0,heading=221,grade=0,fuel_consumption=25 1451607400000000000",
|
||||
"readings,name=truck_0,fleet=South,driver=Trish,model=H-2,device_version=v2.3 load_capacity=1500,fuel_capacity=150,nominal_fuel_consumption=12,latitude=52.31854,longitude=4.72037,elevation=124,heading=221,grade=0,fuel_consumption=25 1451608400000000000",
|
||||
|
@ -492,14 +492,33 @@ TEST(testCase, smlParseLine_Test) {
|
|||
"readings,name=truck_1,fleet=South,driver=Albert,model=F-150,device_version=v1.5 load_capacity=2000,fuel_capacity=200,nominal_fuel_consumption=15,latitude=72.45258,longitude=68.83761,elevation=255,velocity=0,heading=181,grade=0,fuel_consumption=25 1451606400000000000",
|
||||
"readings,name=truck_2,driver=Derek,model=F-150,device_version=v1.5 load_capacity=2000,fuel_capacity=200,nominal_fuel_consumption=15,latitude=24.5208,longitude=28.09377,elevation=428,velocity=0,heading=304,grade=0,fuel_consumption=25 1451606400000000000",
|
||||
"readings,name=truck_2,fleet=North,driver=Derek,model=F-150 load_capacity=2000,fuel_capacity=200,nominal_fuel_consumption=15,latitude=24.5208,longitude=28.09377,elevation=428,velocity=0,heading=304,grade=0,fuel_consumption=25 1451609400000000000",
|
||||
"readings,fleet=South,name=truck_0,driver=Trish,model=H-2,device_version=v2.3 fuel_consumption=25,grade=0 1451629400000000000"
|
||||
"readings,fleet=South,name=truck_0,driver=Trish,model=H-2,device_version=v2.3 fuel_consumption=25,grade=0 1451629400000000000",
|
||||
"stable,t1=t1,t2=t2,t3=t3 c1=1,c2=2,c3=3,c4=4 1451629500000000000",
|
||||
"stable,t2=t2,t1=t1,t3=t3 c1=1,c3=3,c4=4 1451629600000000000"
|
||||
};
|
||||
smlInsertLines(info, (char**)sql, 9);
|
||||
// for (int i = 0; i < 3; i++) {
|
||||
// smlParseLine(info, sql[i]);
|
||||
// }
|
||||
smlProcess(info, (char**)sql, 11);
|
||||
|
||||
TAOS_RES *res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
int fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 11);
|
||||
int rowNum = taos_affected_rows(res);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
|
||||
res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 4);
|
||||
rowNum = taos_affected_rows(res);
|
||||
ASSERT_EQ(rowNum, 2);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
}
|
||||
|
||||
// different types
|
||||
TEST(testCase, smlParseLine_error_Test) {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
ASSERT_NE(taos, nullptr);
|
||||
|
@ -520,24 +539,251 @@ TEST(testCase, smlParseLine_error_Test) {
|
|||
"measure,t1=3 c1=8",
|
||||
"measure,t2=3 c1=8u8"
|
||||
};
|
||||
int ret = smlInsertLines(info, (char **)sql, 2);
|
||||
int ret = smlProcess(info, (char **)sql, 2);
|
||||
ASSERT_NE(ret, 0);
|
||||
}
|
||||
|
||||
// TEST(testCase, smlParseTS_Test) {
|
||||
// char msg[256] = {0};
|
||||
// SSmlMsgBuf msgBuf;
|
||||
// msgBuf.buf = msg;
|
||||
// msgBuf.len = 256;
|
||||
// SSmlLineInfo elements = {0};
|
||||
//
|
||||
// SSmlHandle* info = smlBuildSmlInfo(taos, request, protocol, precision, dataFormat);
|
||||
// if(!info){
|
||||
// return (TAOS_RES*)request;
|
||||
// }
|
||||
// ret = smlParseTS(info, elements.timestamp, elements.timestampLen, cols);
|
||||
// if(ret != TSDB_CODE_SUCCESS){
|
||||
// uError("SML:0x%"PRIx64" smlParseTS failed", info->id);
|
||||
// return ret;
|
||||
// }
|
||||
// }
|
||||
TEST(testCase, smlGetTimestampLen_Test) {
|
||||
uint8_t len = smlGetTimestampLen(0);
|
||||
ASSERT_EQ(len, 1);
|
||||
|
||||
len = smlGetTimestampLen(1);
|
||||
ASSERT_EQ(len, 1);
|
||||
|
||||
len = smlGetTimestampLen(10);
|
||||
ASSERT_EQ(len, 2);
|
||||
|
||||
len = smlGetTimestampLen(390);
|
||||
ASSERT_EQ(len, 3);
|
||||
|
||||
len = smlGetTimestampLen(-1);
|
||||
ASSERT_EQ(len, 1);
|
||||
|
||||
len = smlGetTimestampLen(-10);
|
||||
ASSERT_EQ(len, 2);
|
||||
|
||||
len = smlGetTimestampLen(-390);
|
||||
ASSERT_EQ(len, 3);
|
||||
}
|
||||
|
||||
TEST(testCase, smlProcess_telnet_Test) {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
ASSERT_NE(taos, nullptr);
|
||||
|
||||
TAOS_RES* pRes = taos_query(taos, "create database if not exists sml_db");
|
||||
taos_free_result(pRes);
|
||||
|
||||
pRes = taos_query(taos, "use sml_db");
|
||||
taos_free_result(pRes);
|
||||
|
||||
SRequestObj *request = (SRequestObj *)createRequest((STscObj*)taos, NULL, NULL, TSDB_SQL_INSERT);
|
||||
ASSERT_NE(request, nullptr);
|
||||
|
||||
SSmlHandle *info = smlBuildSmlInfo(taos, request, TSDB_SML_TELNET_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS, true);
|
||||
ASSERT_NE(info, nullptr);
|
||||
|
||||
const char *sql[11] = {
|
||||
"sys.if.bytes.out 1479496100 1.3E3 host=web01 interface=eth0"
|
||||
"sys.if.bytes.out 1479496200 1.3E3 interface=eth0 host=web01 ",
|
||||
"sys.if.bytes.out 1479496300 1.3E3 network=tcp"
|
||||
"sys.procs.running 1479496400 42 host=web01",
|
||||
};
|
||||
int ret = smlProcess(info, (char**)sql, 11);
|
||||
ASSERT_EQ(ret, 0);
|
||||
|
||||
TAOS_RES *res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
int fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 11);
|
||||
int rowNum = taos_affected_rows(res);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
|
||||
res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 4);
|
||||
rowNum = taos_affected_rows(res);
|
||||
ASSERT_EQ(rowNum, 2);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(testCase, smlProcess_json_Test) {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
ASSERT_NE(taos, nullptr);
|
||||
|
||||
TAOS_RES* pRes = taos_query(taos, "create database if not exists sml_db");
|
||||
taos_free_result(pRes);
|
||||
|
||||
pRes = taos_query(taos, "use sml_db");
|
||||
taos_free_result(pRes);
|
||||
|
||||
SRequestObj *request = (SRequestObj *)createRequest((STscObj*)taos, NULL, NULL, TSDB_SQL_INSERT);
|
||||
ASSERT_NE(request, nullptr);
|
||||
|
||||
SSmlHandle *info = smlBuildSmlInfo(taos, request, TSDB_SML_LINE_PROTOCOL, TSDB_SML_TIMESTAMP_NANO_SECONDS, true);
|
||||
ASSERT_NE(info, nullptr);
|
||||
|
||||
const char *sql = "[\n"
|
||||
" {\n"
|
||||
" \"metric\": \"sys.cpu.nice\",\n"
|
||||
" \"timestamp\": 1346846400,\n"
|
||||
" \"value\": 18,\n"
|
||||
" \"tags\": {\n"
|
||||
" \"host\": \"web01\",\n"
|
||||
" \"dc\": \"lga\"\n"
|
||||
" }\n"
|
||||
" },\n"
|
||||
" {\n"
|
||||
" \"metric\": \"sys.cpu.nice\",\n"
|
||||
" \"timestamp\": 1346846400,\n"
|
||||
" \"value\": 9,\n"
|
||||
" \"tags\": {\n"
|
||||
" \"host\": \"web02\",\n"
|
||||
" \"dc\": \"lga\"\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
"]";
|
||||
smlProcess(info, (char**)sql, 11);
|
||||
|
||||
TAOS_RES *res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
int fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 11);
|
||||
int rowNum = taos_affected_rows(res);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
|
||||
res = taos_query(taos, "select * from");
|
||||
ASSERT_NE(res, nullptr);
|
||||
fieldNum = taos_field_count(res);
|
||||
ASSERT_EQ(fieldNum, 4);
|
||||
rowNum = taos_affected_rows(res);
|
||||
ASSERT_EQ(rowNum, 2);
|
||||
for (int i = 0; i < rowNum; ++i) {
|
||||
TAOS_ROW rows = taos_fetch_row(res);
|
||||
}
|
||||
|
||||
sql = "{\n"
|
||||
" \"metric\": \"meter_current\",\n"
|
||||
" \"timestamp\": {\n"
|
||||
" \"value\" : 1346846400,\n"
|
||||
" \"type\" : \"s\"\n"
|
||||
" },\n"
|
||||
" \"value\": {\n"
|
||||
" \"value\" : 10.3,\n"
|
||||
" \"type\" : \"i64\"\n"
|
||||
" },\n"
|
||||
" \"tags\": {\n"
|
||||
" \"groupid\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"bigint\"\n"
|
||||
" },\n"
|
||||
" \"location\": { \n"
|
||||
" \"value\" : \"北京\",\n"
|
||||
" \"type\" : \"nchar\"\n"
|
||||
" },\n"
|
||||
" \"id\": \"d1001\"\n"
|
||||
" }\n"
|
||||
"}";
|
||||
smlProcess(info, (char**)sql, 11);
|
||||
|
||||
sql = "{\n"
|
||||
" \"metric\": \"meter_current\",\n"
|
||||
" \"timestamp\": {\n"
|
||||
" \"value\" : 1346846400,\n"
|
||||
" \"type\" : \"s\"\n"
|
||||
" },\n"
|
||||
" \"value\": {\n"
|
||||
" \"value\" : 10.3,\n"
|
||||
" \"type\" : \"i64\"\n"
|
||||
" },\n"
|
||||
" \"tags\": {\n"
|
||||
" \"t1\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"bigint\"\n"
|
||||
" },\n"
|
||||
" \"t2\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"int\"\n"
|
||||
" },\n"
|
||||
" \"t3\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"i16\"\n"
|
||||
" },\n"
|
||||
" \"t4\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"i8\"\n"
|
||||
" },\n"
|
||||
" \"t5\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"f32\"\n"
|
||||
" },\n"
|
||||
" \"t6\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"double\"\n"
|
||||
" },\n"
|
||||
" \"t7\": { \n"
|
||||
" \"value\" : \"8323\",\n"
|
||||
" \"type\" : \"binary\"\n"
|
||||
" },\n"
|
||||
" \"t8\": { \n"
|
||||
" \"value\" : \"北京\",\n"
|
||||
" \"type\" : \"nchar\"\n"
|
||||
" },\n"
|
||||
" \"t9\": { \n"
|
||||
" \"value\" : true,\n"
|
||||
" \"type\" : \"bool\"\n"
|
||||
" },\n"
|
||||
" \"id\": \"d1001\"\n"
|
||||
" }\n"
|
||||
"}";
|
||||
smlProcess(info, (char**)sql, 11);
|
||||
|
||||
sql = "{\n"
|
||||
" \"metric\": \"meter_current\",\n"
|
||||
" \"timestamp\": {\n"
|
||||
" \"value\" : 1346846400000,\n"
|
||||
" \"type\" : \"ms\"\n"
|
||||
" },\n"
|
||||
" \"value\": \"ni\",\n"
|
||||
" \"tags\": {\n"
|
||||
" \"t1\": { \n"
|
||||
" \"value\" : 20,\n"
|
||||
" \"type\" : \"i64\"\n"
|
||||
" },\n"
|
||||
" \"t2\": { \n"
|
||||
" \"value\" : 25,\n"
|
||||
" \"type\" : \"i32\"\n"
|
||||
" },\n"
|
||||
" \"t3\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"smallint\"\n"
|
||||
" },\n"
|
||||
" \"t4\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"tinyint\"\n"
|
||||
" },\n"
|
||||
" \"t5\": { \n"
|
||||
" \"value\" : 2,\n"
|
||||
" \"type\" : \"float\"\n"
|
||||
" },\n"
|
||||
" \"t6\": { \n"
|
||||
" \"value\" : 0.2,\n"
|
||||
" \"type\" : \"f64\"\n"
|
||||
" },\n"
|
||||
" \"t7\": \"nsj\",\n"
|
||||
" \"t8\": { \n"
|
||||
" \"value\" : \"北京\",\n"
|
||||
" \"type\" : \"nchar\"\n"
|
||||
" },\n"
|
||||
" \"t9\": false,\n"
|
||||
" \"id\": \"d1001\"\n"
|
||||
" }\n"
|
||||
"}";
|
||||
smlProcess(info, (char**)sql, 11);
|
||||
}
|
||||
|
|
|
@ -1652,7 +1652,7 @@ static int32_t smlBuildTagRow(SArray *cols, SKVRowBuilder *tagsBuilder, SParsedD
|
|||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *colsSchema, SArray *cols, bool format,
|
||||
int32_t smlBindData(void *handle, SArray *tags, SArray *colsSchema, SArray *cols, bool format,
|
||||
STableMeta *pTableMeta, char *tableName, char *msgBuf, int16_t msgBufLen) {
|
||||
SMsgBuf pBuf = {.buf = msgBuf, .len = msgBufLen};
|
||||
|
||||
|
@ -1695,7 +1695,7 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols
|
|||
|
||||
initRowBuilder(&pDataBlock->rowBuilder, pDataBlock->pTableMeta->sversion, &pDataBlock->boundColumnInfo);
|
||||
|
||||
int32_t rowNum = format ? taosArrayGetSize(colsFormat) : taosArrayGetSize(cols);
|
||||
int32_t rowNum = taosArrayGetSize(cols);
|
||||
if(rowNum <= 0) {
|
||||
return buildInvalidOperationMsg(&pBuf, "cols size <= 0");
|
||||
}
|
||||
|
@ -1707,13 +1707,10 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SArray *cols
|
|||
for (int32_t r = 0; r < rowNum; ++r) {
|
||||
STSRow* row = (STSRow*)(pDataBlock->pData + pDataBlock->size); // skip the SSubmitBlk header
|
||||
tdSRowResetBuf(pBuilder, row);
|
||||
void *rowData = NULL;
|
||||
void *rowData = taosArrayGetP(cols, r);
|
||||
size_t rowDataSize = 0;
|
||||
if(format){
|
||||
rowData = taosArrayGetP(colsFormat, r);
|
||||
rowDataSize = taosArrayGetSize(rowData);
|
||||
}else{
|
||||
rowData = taosArrayGetP(cols, r);
|
||||
}
|
||||
|
||||
// 1. set the parsed value from sql string
|
||||
|
|
Loading…
Reference in New Issue