Merge branch 'feat/tsdb_refact' of https://github.com/taosdata/TDengine into feat/tsdb_snapshot
This commit is contained in:
commit
e34ad23c01
|
@ -95,6 +95,7 @@ int metaTtlDropTable(SMeta* pMeta, int64_t ttl, SArray* tbUids);
|
||||||
int metaAlterTable(SMeta* pMeta, int64_t version, SVAlterTbReq* pReq, STableMetaRsp* pMetaRsp);
|
int metaAlterTable(SMeta* pMeta, int64_t version, SVAlterTbReq* pReq, STableMetaRsp* pMetaRsp);
|
||||||
SSchemaWrapper* metaGetTableSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver, bool isinline);
|
SSchemaWrapper* metaGetTableSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver, bool isinline);
|
||||||
STSchema* metaGetTbTSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver);
|
STSchema* metaGetTbTSchema(SMeta* pMeta, tb_uid_t uid, int32_t sver);
|
||||||
|
int32_t metaGetTbTSchemaEx(SMeta* pMeta, tb_uid_t suid, tb_uid_t uid, int32_t sver, STSchema** ppTSchema);
|
||||||
int metaGetTableEntryByName(SMetaReader* pReader, const char* name);
|
int metaGetTableEntryByName(SMetaReader* pReader, const char* name);
|
||||||
tb_uid_t metaGetTableEntryUidByName(SMeta* pMeta, const char* name);
|
tb_uid_t metaGetTableEntryUidByName(SMeta* pMeta, const char* name);
|
||||||
int metaGetTbNum(SMeta* pMeta);
|
int metaGetTbNum(SMeta* pMeta);
|
||||||
|
|
|
@ -415,6 +415,51 @@ STSchema *metaGetTbTSchema(SMeta *pMeta, tb_uid_t uid, int32_t sver) {
|
||||||
return pTSchema;
|
return pTSchema;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t metaGetTbTSchemaEx(SMeta *pMeta, tb_uid_t suid, tb_uid_t uid, int32_t sver, STSchema **ppTSchema) {
|
||||||
|
int32_t code = 0;
|
||||||
|
STSchema *pTSchema = NULL;
|
||||||
|
SSkmDbKey skmDbKey = {.uid = suid ? suid : uid, .sver = sver};
|
||||||
|
void *pData = NULL;
|
||||||
|
int nData = 0;
|
||||||
|
|
||||||
|
// query
|
||||||
|
metaRLock(pMeta);
|
||||||
|
if (tdbTbGet(pMeta->pSkmDb, &skmDbKey, sizeof(skmDbKey), &pData, &nData) < 0) {
|
||||||
|
code = TSDB_CODE_NOT_FOUND;
|
||||||
|
metaULock(pMeta);
|
||||||
|
goto _err;
|
||||||
|
}
|
||||||
|
metaULock(pMeta);
|
||||||
|
|
||||||
|
// decode
|
||||||
|
SDecoder dc = {0};
|
||||||
|
SSchemaWrapper schema;
|
||||||
|
SSchemaWrapper *pSchemaWrapper = &schema;
|
||||||
|
|
||||||
|
tDecoderInit(&dc, pData, nData);
|
||||||
|
tDecodeSSchemaWrapper(&dc, pSchemaWrapper);
|
||||||
|
tDecoderClear(&dc);
|
||||||
|
|
||||||
|
// convert
|
||||||
|
STSchemaBuilder sb = {0};
|
||||||
|
|
||||||
|
tdInitTSchemaBuilder(&sb, pSchemaWrapper->version);
|
||||||
|
for (int i = 0; i < pSchemaWrapper->nCols; i++) {
|
||||||
|
SSchema *pSchema = pSchemaWrapper->pSchema + i;
|
||||||
|
tdAddColToSchema(&sb, pSchema->type, pSchema->flags, pSchema->colId, pSchema->bytes);
|
||||||
|
}
|
||||||
|
pTSchema = tdGetSchemaFromBuilder(&sb);
|
||||||
|
tdDestroyTSchemaBuilder(&sb);
|
||||||
|
|
||||||
|
*ppTSchema = pTSchema;
|
||||||
|
taosMemoryFree(pSchemaWrapper->pSchema);
|
||||||
|
return code;
|
||||||
|
|
||||||
|
_err:
|
||||||
|
*ppTSchema = NULL;
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
int metaGetTbNum(SMeta *pMeta) {
|
int metaGetTbNum(SMeta *pMeta) {
|
||||||
// TODO
|
// TODO
|
||||||
// ASSERT(0);
|
// ASSERT(0);
|
||||||
|
|
|
@ -327,10 +327,8 @@ static int32_t tsdbCommitterUpdateTableSchema(SCommitter *pCommitter, int64_t su
|
||||||
pCommitter->skmTable.suid = suid;
|
pCommitter->skmTable.suid = suid;
|
||||||
pCommitter->skmTable.uid = uid;
|
pCommitter->skmTable.uid = uid;
|
||||||
tTSchemaDestroy(pCommitter->skmTable.pTSchema);
|
tTSchemaDestroy(pCommitter->skmTable.pTSchema);
|
||||||
pCommitter->skmTable.pTSchema = metaGetTbTSchema(pCommitter->pTsdb->pVnode->pMeta, uid, sver);
|
code = metaGetTbTSchemaEx(pCommitter->pTsdb->pVnode->pMeta, suid, uid, sver, &pCommitter->skmTable.pTSchema);
|
||||||
if (pCommitter->skmTable.pTSchema == NULL) {
|
if (code) goto _exit;
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
|
@ -352,9 +350,9 @@ static int32_t tsdbCommitterUpdateRowSchema(SCommitter *pCommitter, int64_t suid
|
||||||
pCommitter->skmRow.suid = suid;
|
pCommitter->skmRow.suid = suid;
|
||||||
pCommitter->skmRow.uid = uid;
|
pCommitter->skmRow.uid = uid;
|
||||||
tTSchemaDestroy(pCommitter->skmRow.pTSchema);
|
tTSchemaDestroy(pCommitter->skmRow.pTSchema);
|
||||||
pCommitter->skmRow.pTSchema = metaGetTbTSchema(pCommitter->pTsdb->pVnode->pMeta, uid, sver);
|
code = metaGetTbTSchemaEx(pCommitter->pTsdb->pVnode->pMeta, suid, uid, sver, &pCommitter->skmRow.pTSchema);
|
||||||
if (pCommitter->skmRow.pTSchema == NULL) {
|
if (code) {
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
|
|
Loading…
Reference in New Issue