Merge pull request #20460 from taosdata/fix/TS-2828
fix:use table suid in taosx to avoid suid is not same for using suid
This commit is contained in:
commit
c08d25bb24
|
@ -776,12 +776,37 @@ static int32_t taosDropStb(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCatalog* pCatalog = NULL;
|
||||||
|
code = catalogGetHandle(pRequest->pTscObj->pAppInfo->clusterId, &pCatalog);
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
SRequestConnInfo conn = {.pTrans = pRequest->pTscObj->pAppInfo->pTransporter,
|
||||||
|
.requestId = pRequest->requestId,
|
||||||
|
.requestObjRefId = pRequest->self,
|
||||||
|
.mgmtEps = getEpSet_s(&pRequest->pTscObj->pAppInfo->mgmtEp)};
|
||||||
|
SName pName = {0};
|
||||||
|
toName(pRequest->pTscObj->acctId, pRequest->pDb, req.name, &pName);
|
||||||
|
STableMeta *pTableMeta = NULL;
|
||||||
|
code = catalogGetTableMeta(pCatalog, &conn, &pName, &pTableMeta);
|
||||||
|
if (code == TSDB_CODE_PAR_TABLE_NOT_EXIST){
|
||||||
|
code = TSDB_CODE_SUCCESS;
|
||||||
|
taosMemoryFreeClear(pTableMeta);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
uError("taosCreateTable:catalogGetTableMeta failed. table name: %s", req.name);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
pReq.suid = pTableMeta->uid;
|
||||||
|
taosMemoryFreeClear(pTableMeta);
|
||||||
|
|
||||||
// build drop stable
|
// build drop stable
|
||||||
pReq.igNotExists = true;
|
pReq.igNotExists = true;
|
||||||
pReq.source = TD_REQ_FROM_TAOX;
|
pReq.source = TD_REQ_FROM_TAOX;
|
||||||
pReq.suid = processSuid(req.suid, pRequest->pDb);
|
// pReq.suid = processSuid(req.suid, pRequest->pDb);
|
||||||
|
|
||||||
uDebug("taosDropStb name:%s suid:%"PRId64" processSuid:%"PRId64, req.name, req.suid, pReq.suid);
|
uDebug("taosDropStb name:%s suid:%"PRId64" new suid:%"PRId64, req.name, req.suid, pReq.suid);
|
||||||
STscObj* pTscObj = pRequest->pTscObj;
|
STscObj* pTscObj = pRequest->pTscObj;
|
||||||
SName tableName = {0};
|
SName tableName = {0};
|
||||||
tNameExtractFullName(toName(pTscObj->acctId, pRequest->pDb, req.name, &tableName), pReq.name);
|
tNameExtractFullName(toName(pTscObj->acctId, pRequest->pDb, req.name, &tableName), pReq.name);
|
||||||
|
@ -806,7 +831,7 @@ static int32_t taosDropStb(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
launchQueryImpl(pRequest, &pQuery, true, NULL);
|
launchQueryImpl(pRequest, &pQuery, true, NULL);
|
||||||
|
|
||||||
if (pRequest->code == TSDB_CODE_SUCCESS) {
|
if (pRequest->code == TSDB_CODE_SUCCESS) {
|
||||||
SCatalog* pCatalog = NULL;
|
// SCatalog* pCatalog = NULL;
|
||||||
catalogGetHandle(pTscObj->pAppInfo->clusterId, &pCatalog);
|
catalogGetHandle(pTscObj->pAppInfo->clusterId, &pCatalog);
|
||||||
catalogRemoveTableMeta(pCatalog, &tableName);
|
catalogRemoveTableMeta(pCatalog, &tableName);
|
||||||
}
|
}
|
||||||
|
@ -900,15 +925,15 @@ static int32_t taosCreateTable(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
STableMeta* pTableMeta = NULL;
|
STableMeta* pTableMeta = NULL;
|
||||||
SName sName = {0};
|
SName sName = {0};
|
||||||
tb_uid_t oldSuid = pCreateReq->ctb.suid;
|
tb_uid_t oldSuid = pCreateReq->ctb.suid;
|
||||||
pCreateReq->ctb.suid = processSuid(pCreateReq->ctb.suid, pRequest->pDb);
|
// pCreateReq->ctb.suid = processSuid(pCreateReq->ctb.suid, pRequest->pDb);
|
||||||
uDebug("taosCreateTable name:%s sname:%s suid:%"PRId64" processSuid:%"PRId64, pCreateReq->name, pCreateReq->ctb.stbName, pCreateReq->ctb.suid, oldSuid);
|
|
||||||
|
|
||||||
toName(pTscObj->acctId, pRequest->pDb, pCreateReq->ctb.stbName, &sName);
|
toName(pTscObj->acctId, pRequest->pDb, pCreateReq->ctb.stbName, &sName);
|
||||||
code = catalogGetTableMeta(pCatalog, &conn, &sName, &pTableMeta);
|
code = catalogGetTableMeta(pCatalog, &conn, &sName, &pTableMeta);
|
||||||
if (code != TSDB_CODE_SUCCESS) {
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
uError("taosCreateTable:catalogGetTableMeta failed. table name: %s", pCreateReq->ctb.stbName);
|
uError("taosCreateTable:catalogGetTableMeta failed. table name: %s", pCreateReq->ctb.stbName);
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
pCreateReq->ctb.suid = pTableMeta->uid;
|
||||||
|
uDebug("taosCreateTable name:%s sname:%s suid:%"PRId64" new suid:%"PRId64, pCreateReq->name, pCreateReq->ctb.stbName, oldSuid, pCreateReq->ctb.suid);
|
||||||
|
|
||||||
for (int32_t i = 0; i < taosArrayGetSize(pCreateReq->ctb.tagName); i++) {
|
for (int32_t i = 0; i < taosArrayGetSize(pCreateReq->ctb.tagName); i++) {
|
||||||
char* tName = taosArrayGet(pCreateReq->ctb.tagName, i);
|
char* tName = taosArrayGet(pCreateReq->ctb.tagName, i);
|
||||||
|
@ -1041,8 +1066,7 @@ static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
for (int32_t iReq = 0; iReq < req.nReqs; iReq++) {
|
for (int32_t iReq = 0; iReq < req.nReqs; iReq++) {
|
||||||
pDropReq = req.pReqs + iReq;
|
pDropReq = req.pReqs + iReq;
|
||||||
pDropReq->igNotExists = true;
|
pDropReq->igNotExists = true;
|
||||||
pDropReq->suid = processSuid(pDropReq->suid, pRequest->pDb);
|
// pDropReq->suid = processSuid(pDropReq->suid, pRequest->pDb);
|
||||||
uDebug("taosDropTable name:%s suid:%"PRId64" processSuid:%"PRId64, pDropReq->name, pDropReq->suid, pDropReq->suid);
|
|
||||||
|
|
||||||
SVgroupInfo pInfo = {0};
|
SVgroupInfo pInfo = {0};
|
||||||
SName pName = {0};
|
SName pName = {0};
|
||||||
|
@ -1052,6 +1076,22 @@ static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
STableMeta *pTableMeta = NULL;
|
||||||
|
code = catalogGetTableMeta(pCatalog, &conn, &pName, &pTableMeta);
|
||||||
|
if (code == TSDB_CODE_PAR_TABLE_NOT_EXIST){
|
||||||
|
code = TSDB_CODE_SUCCESS;
|
||||||
|
taosMemoryFreeClear(pTableMeta);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (code != TSDB_CODE_SUCCESS) {
|
||||||
|
uError("taosDropTable:catalogGetTableMeta failed. table name: %s", pDropReq->name);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
tb_uid_t oldSuid = pDropReq->suid;
|
||||||
|
pDropReq->suid = pTableMeta->suid;
|
||||||
|
taosMemoryFreeClear(pTableMeta);
|
||||||
|
uDebug("taosDropTable name:%s suid:%"PRId64" new suid:%"PRId64, pDropReq->name, oldSuid, pDropReq->suid);
|
||||||
|
|
||||||
taosArrayPush(pRequest->tableList, &pName);
|
taosArrayPush(pRequest->tableList, &pName);
|
||||||
SVgroupDropTableBatch* pTableBatch = taosHashGet(pVgroupHashmap, &pInfo.vgId, sizeof(pInfo.vgId));
|
SVgroupDropTableBatch* pTableBatch = taosHashGet(pVgroupHashmap, &pInfo.vgId, sizeof(pInfo.vgId));
|
||||||
if (pTableBatch == NULL) {
|
if (pTableBatch == NULL) {
|
||||||
|
@ -1066,6 +1106,9 @@ static int32_t taosDropTable(TAOS* taos, void* meta, int32_t metaLen) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (taosHashGetSize(pVgroupHashmap) == 0){
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
SArray* pBufArray = serializeVgroupsDropTableBatch(pVgroupHashmap);
|
SArray* pBufArray = serializeVgroupsDropTableBatch(pVgroupHashmap);
|
||||||
if (NULL == pBufArray) {
|
if (NULL == pBufArray) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
@ -1673,7 +1716,7 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
|
||||||
}
|
}
|
||||||
if (strcmp(tbName, pCreateReq.name) == 0) {
|
if (strcmp(tbName, pCreateReq.name) == 0) {
|
||||||
cloneSVreateTbReq(&pCreateReq, &pCreateReqDst);
|
cloneSVreateTbReq(&pCreateReq, &pCreateReqDst);
|
||||||
pCreateReqDst->ctb.suid = processSuid(pCreateReqDst->ctb.suid, pRequest->pDb);
|
// pCreateReqDst->ctb.suid = processSuid(pCreateReqDst->ctb.suid, pRequest->pDb);
|
||||||
tDecoderClear(&decoderTmp);
|
tDecoderClear(&decoderTmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1706,6 +1749,7 @@ static int32_t tmqWriteRawMetaDataImpl(TAOS* taos, void* data, int32_t dataLen)
|
||||||
if (pCreateReqDst) {
|
if (pCreateReqDst) {
|
||||||
pTableMeta->vgId = vg.vgId;
|
pTableMeta->vgId = vg.vgId;
|
||||||
pTableMeta->uid = pCreateReqDst->uid;
|
pTableMeta->uid = pCreateReqDst->uid;
|
||||||
|
pCreateReqDst->ctb.suid = pTableMeta->suid;
|
||||||
}
|
}
|
||||||
void* hData = taosHashGet(pVgHash, &vg.vgId, sizeof(vg.vgId));
|
void* hData = taosHashGet(pVgHash, &vg.vgId, sizeof(vg.vgId));
|
||||||
if (hData == NULL) {
|
if (hData == NULL) {
|
||||||
|
|
Loading…
Reference in New Issue