fix: refactor
This commit is contained in:
parent
0c33a3e60e
commit
a28b3a6e3f
|
@ -1640,17 +1640,23 @@ static int32_t getStbRowValues(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pS
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
|
static int32_t processCtbAutoCreationAndCtbMeta(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, SStbRowsDataContext* pStbRowsCxt) {
|
||||||
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken) {
|
int32_t code = TSDB_CODE_SUCCESS;
|
||||||
int32_t code = getStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pGotRow, pToken);
|
|
||||||
if (code != TSDB_CODE_SUCCESS || !*pGotRow) {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pStbRowsCxt->pTagCond) {
|
if (pStbRowsCxt->pTagCond) {
|
||||||
code = checkSubtablePrivilege(pStbRowsCxt->aTagVals, pStbRowsCxt->aTagNames, &pStbRowsCxt->pTagCond);
|
code = checkSubtablePrivilege(pStbRowsCxt->aTagVals, pStbRowsCxt->aTagNames, &pStbRowsCxt->pTagCond);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pStbRowsCxt->pCreateCtbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
||||||
|
if (pStbRowsCxt->pCreateCtbReq == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
|
insBuildCreateTbReq(pStbRowsCxt->pCreateCtbReq, pStbRowsCxt->ctbName.tname, pStbRowsCxt->pTag, pStbRowsCxt->pStbMeta->uid,
|
||||||
|
pStbRowsCxt->stbName.tname, pStbRowsCxt->aTagNames, getNumOfTags(pStbRowsCxt->pStbMeta),
|
||||||
|
TSDB_DEFAULT_TABLE_TTL);
|
||||||
|
pStbRowsCxt->pTag = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (code == TSDB_CODE_SUCCESS) {
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
collectUseTable(&pStbRowsCxt->ctbName, pStmt->pTableNameHashObj);
|
collectUseTable(&pStbRowsCxt->ctbName, pStmt->pTableNameHashObj);
|
||||||
|
|
||||||
|
@ -1675,16 +1681,36 @@ static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pSt
|
||||||
taosHashPut(pStmt->pSubTableHashObj, ctbFName, strlen(ctbFName), &pBackup, POINTER_BYTES);
|
taosHashPut(pStmt->pSubTableHashObj, ctbFName, strlen(ctbFName), &pBackup, POINTER_BYTES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
pStbRowsCxt->pCreateCtbReq = taosMemoryCalloc(1, sizeof(SVCreateTbReq));
|
static void clearStbRowsDataContext(SStbRowsDataContext* pStbRowsCxt) {
|
||||||
if (pStbRowsCxt->pCreateCtbReq == NULL) {
|
taosArrayClear(pStbRowsCxt->aTagNames);
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
for (int i = 0; i < taosArrayGetSize(pStbRowsCxt->aTagVals); ++i) {
|
||||||
|
STagVal* p = (STagVal*)taosArrayGet(pStbRowsCxt->aTagVals, i);
|
||||||
|
if (IS_VAR_DATA_TYPE(p->type)) {
|
||||||
|
taosMemoryFreeClear(p->pData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
taosArrayClear(pStbRowsCxt->aTagVals);
|
||||||
|
taosArrayClear(pStbRowsCxt->aColVals);
|
||||||
|
tTagFree(pStbRowsCxt->pTag);
|
||||||
|
pStbRowsCxt->pTag = NULL;
|
||||||
|
pStbRowsCxt->pCtbMeta->uid = 0;
|
||||||
|
pStbRowsCxt->pCtbMeta->vgId = 0;
|
||||||
|
tdDestroySVCreateTbReq(pStbRowsCxt->pCreateCtbReq);
|
||||||
|
taosMemoryFreeClear(pStbRowsCxt->pCreateCtbReq);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pStmt, const char** ppSql,
|
||||||
|
SStbRowsDataContext* pStbRowsCxt, bool* pGotRow, SToken* pToken) {
|
||||||
|
int32_t code = getStbRowValues(pCxt, pStmt, ppSql, pStbRowsCxt, pGotRow, pToken);
|
||||||
|
if (code != TSDB_CODE_SUCCESS || !*pGotRow) {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
if (code == TSDB_CODE_SUCCESS) {
|
if (code == TSDB_CODE_SUCCESS) {
|
||||||
insBuildCreateTbReq(pStbRowsCxt->pCreateCtbReq, pStbRowsCxt->ctbName.tname, pStbRowsCxt->pTag, pStbRowsCxt->pStbMeta->uid,
|
code = processCtbAutoCreationAndCtbMeta(pCxt, pStmt, pStbRowsCxt);
|
||||||
pStbRowsCxt->stbName.tname, pStbRowsCxt->aTagNames, getNumOfTags(pStbRowsCxt->pStbMeta),
|
|
||||||
TSDB_DEFAULT_TABLE_TTL);
|
|
||||||
pStbRowsCxt->pTag = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
STableDataCxt* pTableDataCxt = NULL;
|
STableDataCxt* pTableDataCxt = NULL;
|
||||||
|
@ -1702,29 +1728,7 @@ static int32_t parseOneStbRow(SInsertParseContext* pCxt, SVnodeModifyOpStmt* pSt
|
||||||
*pGotRow = true;
|
*pGotRow = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
taosArrayClear(pStbRowsCxt->aTagNames);
|
clearStbRowsDataContext(pStbRowsCxt);
|
||||||
for (int i = 0; i < taosArrayGetSize(pStbRowsCxt->aTagVals); ++i) {
|
|
||||||
STagVal* p = (STagVal*)taosArrayGet(pStbRowsCxt->aTagVals, i);
|
|
||||||
if (IS_VAR_DATA_TYPE(p->type)) {
|
|
||||||
taosMemoryFreeClear(p->pData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
taosArrayClear(pStbRowsCxt->aTagVals);
|
|
||||||
taosArrayClear(pStbRowsCxt->aColVals);
|
|
||||||
tTagFree(pStbRowsCxt->pTag);
|
|
||||||
pStbRowsCxt->pTag = NULL;
|
|
||||||
pStbRowsCxt->pCtbMeta->uid = 0;
|
|
||||||
pStbRowsCxt->pCtbMeta->vgId = 0;
|
|
||||||
tdDestroySVCreateTbReq(pStbRowsCxt->pCreateCtbReq);
|
|
||||||
taosMemoryFreeClear(pStbRowsCxt->pCreateCtbReq);
|
|
||||||
// child meta , vgroupid, check privilege
|
|
||||||
// refer to parInsertSml.c
|
|
||||||
// create or reuse table data context from tbName
|
|
||||||
// init submit data
|
|
||||||
// build create table request, refer to parseTagsClauseImpl
|
|
||||||
// build row and check table data order, refer to parseOneRow
|
|
||||||
|
|
||||||
// clear the values, etc
|
|
||||||
|
|
||||||
return TSDB_CODE_SUCCESS;
|
return TSDB_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue