refactor:add schemaless test cases
This commit is contained in:
parent
26155b9511
commit
07a02b25b1
|
@ -117,8 +117,8 @@ typedef struct {
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
|
|
||||||
static uint64_t linesSmlHandleId = 0;
|
static uint64_t linesSmlHandleId = 0;
|
||||||
static const char* TS = "ts";
|
static const char* TS = "_ts";
|
||||||
static const char* TAG = "tagNone";
|
static const char* TAG = "_tagNone";
|
||||||
|
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
|
|
||||||
|
@ -350,13 +350,26 @@ static int32_t smlApplySchemaAction(SSmlHandle* info, SSchemaAction* action) {
|
||||||
int n = sprintf(result, "create stable %s (", action->createSTable.sTableName);
|
int n = sprintf(result, "create stable %s (", action->createSTable.sTableName);
|
||||||
char* pos = result + n; int freeBytes = capacity - n;
|
char* pos = result + n; int freeBytes = capacity - n;
|
||||||
|
|
||||||
|
size_t size = taosHashGetSize(action->createSTable.fields);
|
||||||
|
SArray *cols = taosArrayInit(size, POINTER_BYTES);
|
||||||
SSmlKv **kv = taosHashIterate(action->createSTable.fields, NULL);
|
SSmlKv **kv = taosHashIterate(action->createSTable.fields, NULL);
|
||||||
while(kv){
|
while(kv){
|
||||||
smlBuildColumnDescription(*kv, pos, freeBytes, &outBytes);
|
if(strncmp((*kv)->key, TS, strlen(TS)) == 0 && (*kv)->type == TSDB_DATA_TYPE_TIMESTAMP){
|
||||||
pos += outBytes; freeBytes -= outBytes;
|
taosArrayInsert(cols, 0, kv);
|
||||||
*pos = ','; ++pos; --freeBytes;
|
}else{
|
||||||
|
taosArrayPush(cols, kv);
|
||||||
|
}
|
||||||
kv = taosHashIterate(action->createSTable.fields, kv);
|
kv = taosHashIterate(action->createSTable.fields, kv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < taosArrayGetSize(cols); i++){
|
||||||
|
SSmlKv *kvNew = taosArrayGetP(cols, i);
|
||||||
|
smlBuildColumnDescription(kvNew, pos, freeBytes, &outBytes);
|
||||||
|
pos += outBytes; freeBytes -= outBytes;
|
||||||
|
*pos = ','; ++pos; --freeBytes;
|
||||||
|
}
|
||||||
|
taosArrayDestroy(cols);
|
||||||
|
|
||||||
--pos; ++freeBytes;
|
--pos; ++freeBytes;
|
||||||
|
|
||||||
outBytes = snprintf(pos, freeBytes, ") tags (");
|
outBytes = snprintf(pos, freeBytes, ") tags (");
|
||||||
|
@ -419,7 +432,7 @@ static int32_t smlModifyDBSchemas(SSmlHandle* info) {
|
||||||
|
|
||||||
code = catalogGetSTableMeta(info->pCatalog, info->taos->pAppInfo->pTransporter, &ep, &pName, &pTableMeta);
|
code = catalogGetSTableMeta(info->pCatalog, info->taos->pAppInfo->pTransporter, &ep, &pName, &pTableMeta);
|
||||||
|
|
||||||
if (code == TSDB_CODE_TDB_INVALID_TABLE_ID) {
|
if (code == TSDB_CODE_TDB_INVALID_TABLE_ID || code == TSDB_CODE_MND_INVALID_STB) {
|
||||||
SSchemaAction schemaAction = {0};
|
SSchemaAction schemaAction = {0};
|
||||||
schemaAction.action = SCHEMA_ACTION_CREATE_STABLE;
|
schemaAction.action = SCHEMA_ACTION_CREATE_STABLE;
|
||||||
memcpy(schemaAction.createSTable.sTableName, superTable, superTableLen);
|
memcpy(schemaAction.createSTable.sTableName, superTable, superTableLen);
|
||||||
|
|
|
@ -456,6 +456,12 @@ TEST(testCase, smlParseLine_Test) {
|
||||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||||
ASSERT_NE(taos, NULL);
|
ASSERT_NE(taos, NULL);
|
||||||
|
|
||||||
|
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 = createRequest(taos, NULL, NULL, TSDB_SQL_INSERT);
|
SRequestObj *request = createRequest(taos, NULL, NULL, TSDB_SQL_INSERT);
|
||||||
ASSERT_NE(request, NULL);
|
ASSERT_NE(request, NULL);
|
||||||
|
|
||||||
|
@ -467,9 +473,10 @@ 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_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,fleet=North,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,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"
|
||||||
};
|
};
|
||||||
for (int i = 0; i < 3; i++) {
|
smlInsertLines(info, sql, 3);
|
||||||
smlParseLine(info, sql[i]);
|
// for (int i = 0; i < 3; i++) {
|
||||||
}
|
// smlParseLine(info, sql[i]);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
// TEST(testCase, smlParseTS_Test) {
|
// TEST(testCase, smlParseTS_Test) {
|
||||||
|
|
|
@ -1624,10 +1624,6 @@ static int32_t smlParseTags(SArray *cols, SKVRowBuilder *tagsBuilder, SParsedDat
|
||||||
int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SHashObj *colsHash, SArray *cols, bool format,
|
int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SHashObj *colsHash, SArray *cols, bool format,
|
||||||
STableMeta *pTableMeta, char *msgBuf, int16_t msgBufLen) {
|
STableMeta *pTableMeta, char *msgBuf, int16_t msgBufLen) {
|
||||||
SMsgBuf pBuf = {.buf = msgBuf, .len = msgBufLen};
|
SMsgBuf pBuf = {.buf = msgBuf, .len = msgBufLen};
|
||||||
int32_t rowNum = taosArrayGetSize(cols);
|
|
||||||
if(rowNum <= 0) {
|
|
||||||
return buildInvalidOperationMsg(&pBuf, "cols size <= 0");
|
|
||||||
}
|
|
||||||
|
|
||||||
SSmlExecHandle *smlHandle = (SSmlExecHandle *)handle;
|
SSmlExecHandle *smlHandle = (SSmlExecHandle *)handle;
|
||||||
SSchema* pTagsSchema = getTableTagSchema(pTableMeta);
|
SSchema* pTagsSchema = getTableTagSchema(pTableMeta);
|
||||||
|
@ -1679,6 +1675,10 @@ int32_t smlBindData(void *handle, SArray *tags, SArray *colsFormat, SHashObj *co
|
||||||
|
|
||||||
initRowBuilder(&pDataBlock->rowBuilder, pDataBlock->pTableMeta->sversion, &pDataBlock->boundColumnInfo);
|
initRowBuilder(&pDataBlock->rowBuilder, pDataBlock->pTableMeta->sversion, &pDataBlock->boundColumnInfo);
|
||||||
|
|
||||||
|
int32_t rowNum = format ? taosArrayGetSize(colsFormat) : taosArrayGetSize(cols);
|
||||||
|
if(rowNum <= 0) {
|
||||||
|
return buildInvalidOperationMsg(&pBuf, "cols size <= 0");
|
||||||
|
}
|
||||||
ret = allocateMemForSize(pDataBlock, extendedRowSize * rowNum);
|
ret = allocateMemForSize(pDataBlock, extendedRowSize * rowNum);
|
||||||
if(ret != TSDB_CODE_SUCCESS){
|
if(ret != TSDB_CODE_SUCCESS){
|
||||||
buildInvalidOperationMsg(&pBuf, "allocate memory error");
|
buildInvalidOperationMsg(&pBuf, "allocate memory error");
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#include "taoserror.h"
|
#include "taoserror.h"
|
||||||
#include "tutil.h"
|
#include "tutil.h"
|
||||||
|
|
||||||
#ifndef USE_UV
|
#ifndef USEf_UV
|
||||||
typedef struct SFdObj {
|
typedef struct SFdObj {
|
||||||
void * signature;
|
void * signature;
|
||||||
TdSocketPtr pSocket; // TCP socket FD
|
TdSocketPtr pSocket; // TCP socket FD
|
||||||
|
|
Loading…
Reference in New Issue