enhance: tbname token optimization
This commit is contained in:
parent
1686c70a60
commit
c8767f7614
|
@ -70,7 +70,7 @@ void TestInsert(TAOS *taos, char *qstr) {
|
||||||
for (int batchIdx = 0; batchIdx < 10000; ++batchIdx) {
|
for (int batchIdx = 0; batchIdx < 10000; ++batchIdx) {
|
||||||
len = batchStart;
|
len = batchStart;
|
||||||
len += sprintf(qstr+len, " values");
|
len += sprintf(qstr+len, " values");
|
||||||
if (batchIdx % 1000 == 0)
|
if (batchIdx % 5000 == 1)
|
||||||
printf("%s %d\n", qstr, batchIdx);
|
printf("%s %d\n", qstr, batchIdx);
|
||||||
|
|
||||||
for (int rowIdx = 0; rowIdx < 100; ++ rowIdx) {
|
for (int rowIdx = 0; rowIdx < 100; ++ rowIdx) {
|
||||||
|
@ -112,8 +112,8 @@ void TestInsertStb(TAOS *taos, char *qstr) {
|
||||||
for (int batchIdx = 0; batchIdx < 10000; ++batchIdx) {
|
for (int batchIdx = 0; batchIdx < 10000; ++batchIdx) {
|
||||||
len = batchStart;
|
len = batchStart;
|
||||||
len += sprintf(qstr+len, " values");
|
len += sprintf(qstr+len, " values");
|
||||||
if (batchIdx % 1000 == 0)
|
if (batchIdx % 5000 == 1)
|
||||||
printf("%s %d\n", qstr, batchIdx);
|
printf("%s %d table %d\n", qstr, batchIdx, tblIdx);
|
||||||
|
|
||||||
for (int rowIdx = 0; rowIdx < 100; ++rowIdx) {
|
for (int rowIdx = 0; rowIdx < 100; ++rowIdx) {
|
||||||
int i = rowIdx + batchIdx * 100 + tblIdx*10000*100;
|
int i = rowIdx + batchIdx * 100 + tblIdx*10000*100;
|
||||||
|
@ -153,7 +153,7 @@ int main(int argc, char *argv[]) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
char* qstr = malloc(1024*1024);
|
char* qstr = malloc(1024*1024);
|
||||||
//TestInsert(taos, qstr);
|
TestInsert(taos, qstr);
|
||||||
TestInsertStb(taos, qstr);
|
TestInsertStb(taos, qstr);
|
||||||
free(qstr);
|
free(qstr);
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
|
|
|
@ -1574,6 +1574,32 @@ typedef union SRowsDataContext{
|
||||||
SStbRowsDataContext* pStbRowsCxt;
|
SStbRowsDataContext* pStbRowsCxt;
|
||||||
} SRowsDataContext;
|
} SRowsDataContext;
|
||||||
|
|
||||||
|
static int32_t parseTbnameToken(SInsertParseContext* pCxt, SStbRowsDataContext* pStbRowsCxt, SToken* pToken,
|
||||||
|
char* ctbName, bool* pFoundCtbName) {
|
||||||
|
*pFoundCtbName = false;
|
||||||
|
int32_t code = checkAndTrimValue(pToken, pCxt->tmpTokenBuf, &pCxt->msg);
|
||||||
|
if (code == TSDB_CODE_SUCCESS){
|
||||||
|
if (isNullValue(TSDB_DATA_TYPE_BINARY, pToken)) {
|
||||||
|
return buildInvalidOperationMsg(&pCxt->msg, "tbname can not be null value");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pToken->n > 0) {
|
||||||
|
if (pToken->n <= TSDB_TABLE_NAME_LEN - 1) {
|
||||||
|
memcpy(ctbName, pToken->z, pToken->n);
|
||||||
|
ctbName[pToken->n] = '\0';
|
||||||
|
*pFoundCtbName = true;
|
||||||
|
tNameSetDbName(&pStbRowsCxt->ctbName, pStbRowsCxt->stbName.acctId, pStbRowsCxt->stbName.dbname, strlen(pStbRowsCxt->stbName.dbname));
|
||||||
|
tNameAddTbName(&pStbRowsCxt->ctbName, ctbName, pToken->n);
|
||||||
|
} else {
|
||||||
|
return buildInvalidOperationMsg(&pCxt->msg, "tbname is too long");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return buildInvalidOperationMsg(&pCxt->msg, "tbname can not be empty");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
|
static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
|
||||||
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow,
|
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow,
|
||||||
SToken* pToken, bool *pCtbFirst) {
|
SToken* pToken, bool *pCtbFirst) {
|
||||||
|
@ -1627,19 +1653,8 @@ static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pCols->pColIndex[i] == getTbnameSchemaIndex(pStbRowsCxt->pStbMeta)) {
|
else if (pCols->pColIndex[i] == getTbnameSchemaIndex(pStbRowsCxt->pStbMeta)) {
|
||||||
SColVal tbnameVal = COL_VAL_NONE(-1, TSDB_DATA_TYPE_BINARY);
|
char ctbName[TSDB_TABLE_NAME_LEN];
|
||||||
tbnameVal.value.val = 0;
|
code = parseTbnameToken(pCxt, pStbRowsCxt, pToken, ctbName, &bFoundTbName);
|
||||||
code = parseValueToken(pCxt, ppSql, pToken, (SSchema*)tGetTbnameColumnSchema(),
|
|
||||||
getTableInfo(pStbRowsCxt->pStbMeta).precision, &tbnameVal);
|
|
||||||
if (code == TSDB_CODE_SUCCESS && COL_VAL_IS_VALUE(&tbnameVal) && tbnameVal.value.nData>0) {
|
|
||||||
tNameSetDbName(&pStbRowsCxt->ctbName, pStbRowsCxt->stbName.acctId, pStbRowsCxt->stbName.dbname, strlen(pStbRowsCxt->stbName.dbname));
|
|
||||||
char ctbName[TSDB_TABLE_NAME_LEN];
|
|
||||||
memcpy(ctbName, tbnameVal.value.pData, tbnameVal.value.nData);
|
|
||||||
ctbName[tbnameVal.value.nData] = '\0';
|
|
||||||
tNameAddTbName(&pStbRowsCxt->ctbName, ctbName, tbnameVal.value.nData);
|
|
||||||
bFoundTbName = true;
|
|
||||||
}
|
|
||||||
taosMemoryFreeClear(tbnameVal.value.pData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code == TSDB_CODE_SUCCESS && i < pCols->numOfBound - 1) {
|
if (code == TSDB_CODE_SUCCESS && i < pCols->numOfBound - 1) {
|
||||||
|
|
Loading…
Reference in New Issue