Merge pull request #9531 from taosdata/feature/3.0_liaohj
Feature/3.0 liaohj
This commit is contained in:
commit
b0aee696f0
|
@ -462,3 +462,31 @@ TEST(testCase, show_table_Test) {
|
||||||
taos_free_result(pRes);
|
taos_free_result(pRes);
|
||||||
taos_close(pConn);
|
taos_close(pConn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TEST(testCase, create_multiple_tables) {
|
||||||
|
// TAOS* pConn = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||||
|
// assert(pConn != NULL);
|
||||||
|
//
|
||||||
|
// TAOS_RES* pRes = taos_query(pConn, "use abc1");
|
||||||
|
// taos_free_result(pRes);
|
||||||
|
//
|
||||||
|
// pRes = taos_query(pConn, "create table t_2 using st1 tags(1) t_3 using st2 tags(2)");
|
||||||
|
// if (taos_errno(pRes) != 0) {
|
||||||
|
// printf("failed to show vgroups, reason:%s\n", taos_errstr(pRes));
|
||||||
|
// taos_free_result(pRes);
|
||||||
|
// ASSERT_TRUE(false);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// TAOS_ROW pRow = NULL;
|
||||||
|
// TAOS_FIELD* pFields = taos_fetch_fields(pRes);
|
||||||
|
// int32_t numOfFields = taos_num_fields(pRes);
|
||||||
|
//
|
||||||
|
// char str[512] = {0};
|
||||||
|
// while((pRow = taos_fetch_row(pRes)) != NULL) {
|
||||||
|
// int32_t code = taos_print_row(str, pRow, pFields, numOfFields);
|
||||||
|
// printf("%s\n", str);
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// taos_free_result(pRes);
|
||||||
|
// taos_close(pConn);
|
||||||
|
//}
|
||||||
|
|
|
@ -207,7 +207,10 @@ static void *mndBuildCreateStbMsg(SMnode *pMnode, SVgObj *pVgroup, SStbObj *pStb
|
||||||
SMsgHead * pMsgHead;
|
SMsgHead * pMsgHead;
|
||||||
|
|
||||||
req.ver = 0;
|
req.ver = 0;
|
||||||
req.name = pStb->name;
|
SName name = {0};
|
||||||
|
tNameFromString(&name, pStb->name, T_NAME_ACCT|T_NAME_DB|T_NAME_TABLE);
|
||||||
|
|
||||||
|
req.name = (char*) tNameGetTableName(&name);
|
||||||
req.ttl = 0;
|
req.ttl = 0;
|
||||||
req.keep = 0;
|
req.keep = 0;
|
||||||
req.type = TD_SUPER_TABLE;
|
req.type = TD_SUPER_TABLE;
|
||||||
|
|
|
@ -136,7 +136,7 @@ static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg) {
|
||||||
|
|
||||||
metaCloseTbCursor(pCur);
|
metaCloseTbCursor(pCur);
|
||||||
|
|
||||||
int32_t rowLen = (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE) + 8 + 4 + (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE) + 8 + 4;
|
int32_t rowLen = (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE) + 8 + 2 + (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE) + 8 + 4;
|
||||||
int32_t numOfTables = (int32_t) taosArrayGetSize(pArray);
|
int32_t numOfTables = (int32_t) taosArrayGetSize(pArray);
|
||||||
|
|
||||||
int32_t payloadLen = rowLen * numOfTables;
|
int32_t payloadLen = rowLen * numOfTables;
|
||||||
|
@ -150,7 +150,7 @@ static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg) {
|
||||||
char* n = taosArrayGetP(pArray, i);
|
char* n = taosArrayGetP(pArray, i);
|
||||||
STR_TO_VARSTR(p, n);
|
STR_TO_VARSTR(p, n);
|
||||||
|
|
||||||
p += rowLen;
|
p += (TSDB_TABLE_NAME_LEN + VARSTR_HEADER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
pFetchRsp->numOfRows = htonl(numOfTables);
|
pFetchRsp->numOfRows = htonl(numOfTables);
|
||||||
|
|
|
@ -125,7 +125,6 @@ typedef struct SCreatedTableInfo {
|
||||||
SArray *pTagNames; // create by using super table, tag name
|
SArray *pTagNames; // create by using super table, tag name
|
||||||
SArray *pTagVals; // create by using super table, tag value
|
SArray *pTagVals; // create by using super table, tag value
|
||||||
char *fullname; // table full name
|
char *fullname; // table full name
|
||||||
STagData tagdata; // true tag data, super table full name is in STagData
|
|
||||||
int8_t igExist; // ignore if exists
|
int8_t igExist; // ignore if exists
|
||||||
} SCreatedTableInfo;
|
} SCreatedTableInfo;
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ cmd ::= COMPACT VNODES IN LP exprlist(Y) RP. { setCompactVnodeSql(pInfo, TSDB
|
||||||
// And "ids" is an identifer-or-string.
|
// And "ids" is an identifer-or-string.
|
||||||
%type ids {SToken}
|
%type ids {SToken}
|
||||||
ids(A) ::= ID(X). {A = X; }
|
ids(A) ::= ID(X). {A = X; }
|
||||||
ids(A) ::= STRING(X). {A = X; }
|
//ids(A) ::= STRING(X). {A = X; }
|
||||||
|
|
||||||
%type ifexists {SToken}
|
%type ifexists {SToken}
|
||||||
ifexists(X) ::= IF EXISTS. { X.n = 1;}
|
ifexists(X) ::= IF EXISTS. { X.n = 1;}
|
||||||
|
|
|
@ -692,7 +692,6 @@ void freeCreateTableInfo(void* p) {
|
||||||
taosArrayDestroy(pInfo->pTagNames);
|
taosArrayDestroy(pInfo->pTagNames);
|
||||||
taosArrayDestroyEx(pInfo->pTagVals, freeItem);
|
taosArrayDestroyEx(pInfo->pTagVals, freeItem);
|
||||||
tfree(pInfo->fullname);
|
tfree(pInfo->fullname);
|
||||||
tfree(pInfo->tagdata.data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, int32_t type) {
|
SSqlInfo* setSqlInfo(SSqlInfo *pInfo, void *pSqlExprInfo, SToken *pTableName, int32_t type) {
|
||||||
|
|
|
@ -363,7 +363,6 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* p
|
||||||
// too long tag values will return invalid sql, not be truncated automatically
|
// too long tag values will return invalid sql, not be truncated automatically
|
||||||
SSchema* pTagSchema = getTableTagSchema(pSuperTableMeta);
|
SSchema* pTagSchema = getTableTagSchema(pSuperTableMeta);
|
||||||
STableComInfo tinfo = getTableInfo(pSuperTableMeta);
|
STableComInfo tinfo = getTableInfo(pSuperTableMeta);
|
||||||
STagData* pTag = &pCreateTableInfo->tagdata;
|
|
||||||
|
|
||||||
SKVRowBuilder kvRowBuilder = {0};
|
SKVRowBuilder kvRowBuilder = {0};
|
||||||
if (tdInitKVRowBuilder(&kvRowBuilder) < 0) {
|
if (tdInitKVRowBuilder(&kvRowBuilder) < 0) {
|
||||||
|
@ -463,22 +462,6 @@ int32_t doCheckForCreateCTable(SSqlInfo* pInfo, SParseBasicCtx* pCtx, SMsgBuf* p
|
||||||
SSchema* pSchema = &pTagSchema[i];
|
SSchema* pSchema = &pTagSchema[i];
|
||||||
SToken* pItem = taosArrayGet(pValList, i);
|
SToken* pItem = taosArrayGet(pValList, i);
|
||||||
|
|
||||||
if (pSchema->type == TSDB_DATA_TYPE_BINARY || pSchema->type == TSDB_DATA_TYPE_NCHAR) {
|
|
||||||
if (pItem->n > pSchema->bytes) {
|
|
||||||
tdDestroyKVRowBuilder(&kvRowBuilder);
|
|
||||||
return buildInvalidOperationMsg(pMsgBuf, msg3);
|
|
||||||
}
|
|
||||||
} else if (pSchema->type == TSDB_DATA_TYPE_TIMESTAMP) {
|
|
||||||
// if (pItem->pVar.nType == TSDB_DATA_TYPE_BINARY) {
|
|
||||||
//// code = convertTimestampStrToInt64(&(pItem->pVar), tinfo.precision);
|
|
||||||
// if (code != TSDB_CODE_SUCCESS) {
|
|
||||||
// return buildInvalidOperationMsg(pMsgBuf, msg4);
|
|
||||||
// }
|
|
||||||
// } else if (pItem->pVar.nType == TSDB_DATA_TYPE_TIMESTAMP) {
|
|
||||||
// pItem->pVar.i = convertTimePrecision(pItem->pVar.i, TSDB_TIME_PRECISION_NANO, tinfo.precision);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
|
char tmpTokenBuf[TSDB_MAX_TAGS_LEN] = {0};
|
||||||
SKvParam param = {.builder = &kvRowBuilder, .schema = pSchema};
|
SKvParam param = {.builder = &kvRowBuilder, .schema = pSchema};
|
||||||
|
|
||||||
|
|
|
@ -571,7 +571,9 @@ void setColumn(SColumn* pColumn, uint64_t uid, const char* tableName, int8_t fla
|
||||||
pColumn->info.type = pSchema->type;
|
pColumn->info.type = pSchema->type;
|
||||||
|
|
||||||
if (tableName != NULL) {
|
if (tableName != NULL) {
|
||||||
snprintf(pColumn->name, tListLen(pColumn->name), "%s.%s", tableName, pSchema->name);
|
char n[TSDB_COL_NAME_LEN + 1 + TSDB_TABLE_NAME_LEN] = {0};
|
||||||
|
snprintf(n, tListLen(n), "%s.%s", tableName, pSchema->name);
|
||||||
|
tstrncpy(pColumn->name, n, tListLen(pColumn->name));
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(pColumn->name, pSchema->name, tListLen(pColumn->name));
|
tstrncpy(pColumn->name, pSchema->name, tListLen(pColumn->name));
|
||||||
}
|
}
|
||||||
|
@ -586,7 +588,10 @@ SColumn createColumn(uint64_t uid, const char* tableName, int8_t flag, const SSc
|
||||||
c.info.type = pSchema->type;
|
c.info.type = pSchema->type;
|
||||||
|
|
||||||
if (tableName != NULL) {
|
if (tableName != NULL) {
|
||||||
snprintf(c.name, tListLen(c.name), "%s.%s", tableName, pSchema->name);
|
char n[TSDB_COL_NAME_LEN + 1 + TSDB_TABLE_NAME_LEN] = {0};
|
||||||
|
snprintf(n, tListLen(n), "%s.%s", tableName, pSchema->name);
|
||||||
|
|
||||||
|
tstrncpy(c.name, n, tListLen(c.name));
|
||||||
} else {
|
} else {
|
||||||
tstrncpy(c.name, pSchema->name, tListLen(c.name));
|
tstrncpy(c.name, pSchema->name, tListLen(c.name));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue