drop super table
This commit is contained in:
parent
50f0f992f6
commit
9d2df35316
|
@ -72,44 +72,61 @@ _err:
|
||||||
}
|
}
|
||||||
|
|
||||||
int metaDropSTable(SMeta *pMeta, int64_t verison, SVDropStbReq *pReq) {
|
int metaDropSTable(SMeta *pMeta, int64_t verison, SVDropStbReq *pReq) {
|
||||||
SMetaReader mr = {0};
|
TDBC *pNameIdxc = NULL;
|
||||||
|
TDBC *pUidIdxc = NULL;
|
||||||
|
TDBC *pCtbIdxc = NULL;
|
||||||
|
SCtbIdxKey *pCtbIdxKey;
|
||||||
|
const void *pKey = NULL;
|
||||||
|
int nKey;
|
||||||
|
const void *pData = NULL;
|
||||||
|
int nData;
|
||||||
|
int c, ret;
|
||||||
|
|
||||||
// validate req
|
// prepare uid idx cursor
|
||||||
metaReaderInit(&mr, pMeta, 0);
|
tdbDbcOpen(pMeta->pUidIdx, &pUidIdxc, &pMeta->txn);
|
||||||
if (metaGetTableEntryByUid(&mr, pReq->suid) < 0) {
|
ret = tdbDbcMoveTo(pUidIdxc, &pReq->suid, sizeof(tb_uid_t), &c);
|
||||||
terrno = TSDB_CODE_VND_TABLE_NOT_EXIST;
|
if (ret < 0 || c != 0) {
|
||||||
|
terrno = TSDB_CODE_VND_TB_NOT_EXIST;
|
||||||
|
tdbDbcClose(pUidIdxc);
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
// do drop
|
// prepare name idx cursor
|
||||||
// drop from pTbDb
|
tdbDbcOpen(pMeta->pNameIdx, &pNameIdxc, &pMeta->txn);
|
||||||
// drop from pSkmDb
|
ret = tdbDbcMoveTo(pNameIdxc, pReq->name, strlen(pReq->name) + 1, &c);
|
||||||
// drop from pUidIdx
|
if (ret < 0 || c != 0) {
|
||||||
// drop from pNameIdx
|
ASSERT(0);
|
||||||
// {
|
}
|
||||||
// TDBC *pDbc1 = NULL;
|
|
||||||
// void *pKey = NULL;
|
|
||||||
// void *pVal = NULL;
|
|
||||||
// int kLen = 0;
|
|
||||||
// int vLen = 0;
|
|
||||||
// int ret = 0;
|
|
||||||
|
|
||||||
// // drop from pCtbIdx
|
tdbDbcDelete(pUidIdxc);
|
||||||
// ret = tdbDbcOpen(pMeta->pCtbIdx, &pDbc1);
|
tdbDbcDelete(pNameIdxc);
|
||||||
// tdbDbcMoveTo(pDbc1, &pReq->suid, sizeof(pReq->suid), NULL /*cmpr*/, 0 /*TDB_FORWARD_SEARCH*/);
|
tdbDbcClose(pUidIdxc);
|
||||||
// tdbDbcGet(pDbc1, &pKey, &kLen, &pVal, vLen);
|
tdbDbcClose(pNameIdxc);
|
||||||
// tdbDbcDelete(pDbc1);
|
|
||||||
// // drop from pTagIdx
|
|
||||||
// // drop from pTtlIdx
|
|
||||||
// }
|
|
||||||
|
|
||||||
// clear and return
|
// loop to drop each child table
|
||||||
metaReaderClear(&mr);
|
tdbDbcOpen(pMeta->pCtbIdx, &pCtbIdxc, &pMeta->txn);
|
||||||
metaError("vgId:%d super table %s uid:%" PRId64 " is dropped", TD_VID(pMeta->pVnode), pReq->name, pReq->suid);
|
ret = tdbDbcMoveTo(pCtbIdxc, &(SCtbIdxKey){.suid = pReq->suid, .uid = INT64_MIN}, sizeof(SCtbIdxKey), &c);
|
||||||
|
if (ret < 0 || (c < 0 && tdbDbcMoveToNext(pCtbIdxc) < 0)) {
|
||||||
|
tdbDbcClose(pCtbIdxc);
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
tdbDbcGet(pCtbIdxc, &pKey, &nKey, NULL, NULL);
|
||||||
|
pCtbIdxKey = (SCtbIdxKey *)pKey;
|
||||||
|
|
||||||
|
if (pCtbIdxKey->suid > pReq->suid) break;
|
||||||
|
|
||||||
|
// drop the child table (TODO)
|
||||||
|
|
||||||
|
if (tdbDbcMoveToNext(pCtbIdxc) < 0) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
_exit:
|
||||||
|
metaDebug("vgId:%d super table %s uid:%" PRId64 " is dropped", TD_VID(pMeta->pVnode), pReq->name, pReq->suid);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
_err:
|
_err:
|
||||||
metaReaderClear(&mr);
|
|
||||||
metaError("vgId:%d failed to drop super table %s uid:%" PRId64 " since %s", TD_VID(pMeta->pVnode), pReq->name,
|
metaError("vgId:%d failed to drop super table %s uid:%" PRId64 " since %s", TD_VID(pMeta->pVnode), pReq->name,
|
||||||
pReq->suid, tstrerror(terrno));
|
pReq->suid, tstrerror(terrno));
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
@ -426,10 +426,10 @@ static int vnodeProcessDropStbReq(SVnode *pVnode, int64_t version, void *pReq, i
|
||||||
}
|
}
|
||||||
|
|
||||||
// process request
|
// process request
|
||||||
// if (metaDropSTable(pVnode->pMeta, version, &req) < 0) {
|
if (metaDropSTable(pVnode->pMeta, version, &req) < 0) {
|
||||||
// rcode = terrno;
|
rcode = terrno;
|
||||||
// goto _exit;
|
goto _exit;
|
||||||
// }
|
}
|
||||||
|
|
||||||
// return rsp
|
// return rsp
|
||||||
_exit:
|
_exit:
|
||||||
|
|
Loading…
Reference in New Issue