This commit is contained in:
wangjiaming0909 2023-11-24 17:16:59 +08:00
parent 6324d1293a
commit 08fc9170f5
2 changed files with 39 additions and 33 deletions

View File

@ -1376,29 +1376,27 @@ static void mndCancelRetrieveIdx(SMnode *pMnode, void *pIter) {
taosMemoryFree(p); taosMemoryFree(p);
} }
static void initSMAObj(SSmaObj *pSma, const SMCreateSmaReq *pCreateReq, const SStbObj *pStb, const SDbObj *pDb) { static void initSMAObj(SCreateTSMACxt* pCxt) {
memcpy(pSma->name, pCreateReq->name, TSDB_TABLE_FNAME_LEN); memcpy(pCxt->pSma->name, pCxt->pCreateSmaReq->name, TSDB_TABLE_FNAME_LEN);
memcpy(pSma->stb, pStb->name, TSDB_TABLE_FNAME_LEN); memcpy(pCxt->pSma->stb, pCxt->pSrcStb->name, TSDB_TABLE_FNAME_LEN);
memcpy(pSma->db, pDb->name, TSDB_DB_FNAME_LEN); memcpy(pCxt->pSma->db, pCxt->pDb->name, TSDB_DB_FNAME_LEN);
pSma->createdTime = taosGetTimestampMs(); pCxt->pSma->createdTime = taosGetTimestampMs();
pSma->uid = mndGenerateUid(pCreateReq->name, TSDB_TABLE_FNAME_LEN); pCxt->pSma->uid = mndGenerateUid(pCxt->pCreateSmaReq->name, TSDB_TABLE_FNAME_LEN);
char resultTbName[TSDB_TABLE_FNAME_LEN + 16] = {0}; memcpy(pCxt->pSma->dstTbName, pCxt->targetStbFullName, TSDB_TABLE_FNAME_LEN);
snprintf(resultTbName, TSDB_TABLE_FNAME_LEN + 16, "%s_td_tsma_rst_tb", pCreateReq->name); pCxt->pSma->dstTbUid = mndGenerateUid(pCxt->pSma->dstTbName, TSDB_TABLE_FNAME_LEN);
memcpy(pSma->dstTbName, resultTbName, TSDB_TABLE_FNAME_LEN); pCxt->pSma->stbUid = pCxt->pSrcStb->uid;
pSma->dstTbUid = mndGenerateUid(pSma->dstTbName, TSDB_TABLE_FNAME_LEN); pCxt->pSma->dbUid = pCxt->pDb->uid;
pSma->stbUid = pStb->uid; pCxt->pSma->interval = pCxt->pCreateSmaReq->interval;
pSma->dbUid = pDb->uid; pCxt->pSma->intervalUnit = pCxt->pCreateSmaReq->intervalUnit;
pSma->interval = pCreateReq->interval; pCxt->pSma->timezone = tsTimezone;
pSma->intervalUnit = pCreateReq->intervalUnit;
pSma->timezone = tsTimezone;
pSma->exprLen = pCreateReq->exprLen; pCxt->pSma->exprLen = pCxt->pCreateSmaReq->exprLen;
pSma->sqlLen = pCreateReq->sqlLen; pCxt->pSma->sqlLen = pCxt->pCreateSmaReq->sqlLen;
pSma->astLen = pCreateReq->astLen; pCxt->pSma->astLen = pCxt->pCreateSmaReq->astLen;
pSma->expr = pCreateReq->expr; pCxt->pSma->expr = pCxt->pCreateSmaReq->expr;
pSma->sql = pCreateReq->sql; pCxt->pSma->sql = pCxt->pCreateSmaReq->sql;
pSma->ast = pCreateReq->ast; pCxt->pSma->ast = pCxt->pCreateSmaReq->ast;
} }
static void initStreamObj(SStreamObj *pStream, const char *streamName, const SMCreateSmaReq *pCreateReq, static void initStreamObj(SStreamObj *pStream, const char *streamName, const SMCreateSmaReq *pCreateReq,
@ -1540,7 +1538,7 @@ static int32_t mndCreateTSMA(SCreateTSMACxt *pCxt) {
SMDropStreamReq dropStreamReq = {0}; SMDropStreamReq dropStreamReq = {0};
pCxt->pSma = &sma; pCxt->pSma = &sma;
initSMAObj(&sma, pCxt->pCreateSmaReq, pCxt->pSrcStb, pCxt->pDb); initSMAObj(pCxt);
pCxt->pCreateStreamReq = &createStreamReq; pCxt->pCreateStreamReq = &createStreamReq;
pCxt->pDropStreamReq = &dropStreamReq; pCxt->pDropStreamReq = &dropStreamReq;
mndCreateTSMABuildCreateStreamReq(pCxt); mndCreateTSMABuildCreateStreamReq(pCxt);
@ -1560,6 +1558,13 @@ _OVER:
return code; return code;
} }
static void mndTSMAGenerateOutputName(const char* tsmaName, char* streamName, char* targetStbName) {
SName smaName;
tNameFromString(&smaName, tsmaName, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
sprintf(streamName, "%d.%s", smaName.acctId, smaName.tname);
snprintf(targetStbName, TSDB_TABLE_FNAME_LEN, "%s_tsma_res_stb", tsmaName);
}
static int32_t mndProcessCreateTSMAReq(SRpcMsg* pReq) { static int32_t mndProcessCreateTSMAReq(SRpcMsg* pReq) {
#ifdef WINDOWS #ifdef WINDOWS
terrno = TSDB_CODE_MND_INVALID_PLATFORM; terrno = TSDB_CODE_MND_INVALID_PLATFORM;
@ -1592,10 +1597,7 @@ static int32_t mndProcessCreateTSMAReq(SRpcMsg* pReq) {
char streamName[TSDB_TABLE_FNAME_LEN] = {0}; char streamName[TSDB_TABLE_FNAME_LEN] = {0};
char streamTargetStbFullName[TSDB_TABLE_FNAME_LEN] = {0}; char streamTargetStbFullName[TSDB_TABLE_FNAME_LEN] = {0};
SName smaName; mndTSMAGenerateOutputName(createReq.name, streamName, streamTargetStbFullName);
tNameFromString(&smaName, createReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
sprintf(streamName, "%d.%s", smaName.acctId, smaName.tname);
snprintf(streamTargetStbFullName, TSDB_TABLE_FNAME_LEN, "%s.tsma_result_stb", createReq.name);
SStbObj *pTargetStb = mndAcquireStb(pMnode, streamTargetStbFullName); SStbObj *pTargetStb = mndAcquireStb(pMnode, streamTargetStbFullName);
if (pTargetStb) { if (pTargetStb) {
@ -1740,10 +1742,7 @@ static int32_t mndProcessDropTSMAReq(SRpcMsg* pReq) {
char streamName[TSDB_TABLE_FNAME_LEN] = {0}; char streamName[TSDB_TABLE_FNAME_LEN] = {0};
char streamTargetStbFullName[TSDB_TABLE_FNAME_LEN] = {0}; char streamTargetStbFullName[TSDB_TABLE_FNAME_LEN] = {0};
SName smaName; mndTSMAGenerateOutputName(dropReq.name, streamName, streamTargetStbFullName);
tNameFromString(&smaName, dropReq.name, T_NAME_ACCT | T_NAME_DB | T_NAME_TABLE);
sprintf(streamName, "%d.%s", smaName.acctId, smaName.tname);
snprintf(streamTargetStbFullName, TSDB_TABLE_FNAME_LEN, "%s.tsma_result_stb", dropReq.name);
SStbObj* pStb = mndAcquireStb(pMnode, streamTargetStbFullName); SStbObj* pStb = mndAcquireStb(pMnode, streamTargetStbFullName);

View File

@ -7456,6 +7456,7 @@ static int32_t addWstartToSampleProjects(SNodeList* pProjectionList) {
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
strcpy(pFunc->functionName, "_wstart"); strcpy(pFunc->functionName, "_wstart");
strcpy(pFunc->node.userAlias, "_wstart");
return nodesListPushFront(pProjectionList, (SNode*)pFunc); return nodesListPushFront(pProjectionList, (SNode*)pFunc);
} }
@ -7465,6 +7466,7 @@ static int32_t addWendToSampleProjects(SNodeList* pProjectionList) {
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
strcpy(pFunc->functionName, "_wend"); strcpy(pFunc->functionName, "_wend");
strcpy(pFunc->node.userAlias, "_wend");
return nodesListAppend(pProjectionList, (SNode*)pFunc); return nodesListAppend(pProjectionList, (SNode*)pFunc);
} }
@ -7474,6 +7476,7 @@ static int32_t addWdurationToSampleProjects(SNodeList* pProjectionList) {
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
strcpy(pFunc->functionName, "_wduration"); strcpy(pFunc->functionName, "_wduration");
strcpy(pFunc->node.userAlias, "_wduration");
return nodesListAppend(pProjectionList, (SNode*)pFunc); return nodesListAppend(pProjectionList, (SNode*)pFunc);
} }
@ -10377,9 +10380,10 @@ static int32_t buildTSMAAst(STranslateContext* pCxt, SCreateTSMAStmt* pStmt, SMC
if (TSDB_CODE_SUCCESS == code) { if (TSDB_CODE_SUCCESS == code) {
// append partition by tbname // append partition by tbname
SNode* pTbnameFunc = createTbnameFunction(); SFunctionNode* pTbnameFunc = (SFunctionNode*)createTbnameFunction();
if (pTbnameFunc) { if (pTbnameFunc) {
nodesListMakeAppend(&info.pPartitionByList, pTbnameFunc); sprintf(pTbnameFunc->node.userAlias, "tbname");
nodesListMakeAppend(&info.pPartitionByList, (SNode*)pTbnameFunc);
} else { } else {
code = TSDB_CODE_OUT_OF_MEMORY; code = TSDB_CODE_OUT_OF_MEMORY;
} }
@ -10405,7 +10409,7 @@ static int32_t buildTSMAAst(STranslateContext* pCxt, SCreateTSMAStmt* pStmt, SMC
return code; return code;
} }
static char* defaultTSMAFuncs[4] = {"MAX", "MIN", "SUM", "COUNT"}; static char* defaultTSMAFuncs[4] = {"max", "min", "sum", "count"};
static int32_t static int32_t
translateTSMAFuncs(STranslateContext * pCxt, SCreateTSMAStmt* pStmt, STableMeta* pTableMeta) { translateTSMAFuncs(STranslateContext * pCxt, SCreateTSMAStmt* pStmt, STableMeta* pTableMeta) {
@ -10456,6 +10460,9 @@ translateTSMAFuncs(STranslateContext * pCxt, SCreateTSMAStmt* pStmt, STableMeta*
nodesDestroyList(pTSMAFuncs); nodesDestroyList(pTSMAFuncs);
return TSDB_CODE_OUT_OF_MEMORY; return TSDB_CODE_OUT_OF_MEMORY;
} }
// TODO what if exceeds the max size
snprintf(pFunc->node.userAlias, TSDB_COL_NAME_LEN, "%s(%s)", pFunc->functionName,
((SColumnNode*)pNode2)->colName);
} }
} }
nodesDestroyList(pStmt->pOptions->pFuncs); nodesDestroyList(pStmt->pOptions->pFuncs);