add api
This commit is contained in:
parent
3c11dc4ec1
commit
a5eebc90cb
|
@ -165,6 +165,7 @@ int32_t metaFilterCreateTime(void* pVnode, SMetaFltParam* parm, SArray* pUids);
|
||||||
int32_t metaFilterTableName(void* pVnode, SMetaFltParam* param, SArray* pUids);
|
int32_t metaFilterTableName(void* pVnode, SMetaFltParam* param, SArray* pUids);
|
||||||
int32_t metaFilterTtl(void* pVnode, SMetaFltParam* param, SArray* pUids);
|
int32_t metaFilterTtl(void* pVnode, SMetaFltParam* param, SArray* pUids);
|
||||||
|
|
||||||
|
int32_t metaGetColCmpr(SMeta* pMeta, tb_uid_t uid, SHashObj** colCmprObj);
|
||||||
#ifndef META_REFACT
|
#ifndef META_REFACT
|
||||||
// SMetaDB
|
// SMetaDB
|
||||||
int metaOpenDB(SMeta* pMeta);
|
int metaOpenDB(SMeta* pMeta);
|
||||||
|
|
|
@ -2500,6 +2500,57 @@ _err:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t metaGetColCmpr(SMeta *pMeta, tb_uid_t uid, SHashObj **ppColCmprObj) {
|
||||||
|
int rc = 0;
|
||||||
|
|
||||||
|
SHashObj *pColCmprObj = taosHashInit(32, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT), false, HASH_NO_LOCK);
|
||||||
|
void *pData = NULL;
|
||||||
|
int nData = 0;
|
||||||
|
SMetaEntry e = {0};
|
||||||
|
SDecoder dc = {0};
|
||||||
|
|
||||||
|
metaRLock(pMeta);
|
||||||
|
rc = tdbTbGet(pMeta->pUidIdx, &uid, sizeof(uid), &pData, &nData);
|
||||||
|
if (rc < 0) {
|
||||||
|
taosHashClear(pColCmprObj);
|
||||||
|
metaULock(pMeta);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int64_t version = ((SUidIdxVal *)pData)[0].version;
|
||||||
|
rc = tdbTbGet(pMeta->pTbDb, &(STbDbKey){.version = version, .uid = uid}, sizeof(STbDbKey), &pData, &nData);
|
||||||
|
if (rc < 0) {
|
||||||
|
metaULock(pMeta);
|
||||||
|
taosHashClear(pColCmprObj);
|
||||||
|
metaError("failed to get table entry");
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
tDecoderInit(&dc, pData, nData);
|
||||||
|
rc = metaDecodeEntry(&dc, &e);
|
||||||
|
if (rc < 0) {
|
||||||
|
tDecoderClear(&dc);
|
||||||
|
metaULock(pMeta);
|
||||||
|
taosHashClear(pColCmprObj);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (useCompress(e.type)) {
|
||||||
|
SColCmprWrapper *p = &e.colCmpr;
|
||||||
|
for (int32_t i = 0; i < p->nCols; i++) {
|
||||||
|
SColCmpr *pCmpr = &p->pColCmpr[i];
|
||||||
|
taosHashPut(pColCmprObj, &pCmpr->id, sizeof(pCmpr->id), &pCmpr->alg, sizeof(&pCmpr->alg));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
metaULock(pMeta);
|
||||||
|
taosHashClear(pColCmprObj);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
tDecoderClear(&dc);
|
||||||
|
tdbFree(pData);
|
||||||
|
metaULock(pMeta);
|
||||||
|
|
||||||
|
*ppColCmprObj = pColCmprObj;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
// refactor later
|
// refactor later
|
||||||
void *metaGetIdx(SMeta *pMeta) { return pMeta->pTagIdx; }
|
void *metaGetIdx(SMeta *pMeta) { return pMeta->pTagIdx; }
|
||||||
void *metaGetIvtIdx(SMeta *pMeta) { return pMeta->pTagIvtIdx; }
|
void *metaGetIvtIdx(SMeta *pMeta) { return pMeta->pTagIvtIdx; }
|
||||||
|
|
|
@ -47,6 +47,7 @@ typedef struct {
|
||||||
TABLEID tbid[1];
|
TABLEID tbid[1];
|
||||||
bool hasTSData;
|
bool hasTSData;
|
||||||
bool skipTsRow;
|
bool skipTsRow;
|
||||||
|
SHashObj *pColCmprObj;
|
||||||
} ctx[1];
|
} ctx[1];
|
||||||
|
|
||||||
// reader
|
// reader
|
||||||
|
@ -117,6 +118,7 @@ static int32_t tsdbCommitTSData(SCommitter2 *committer) {
|
||||||
|
|
||||||
committer->ctx->tbid->suid = 0;
|
committer->ctx->tbid->suid = 0;
|
||||||
committer->ctx->tbid->uid = 0;
|
committer->ctx->tbid->uid = 0;
|
||||||
|
|
||||||
for (SRowInfo *row; (row = tsdbIterMergerGetData(committer->dataIterMerger)) != NULL;) {
|
for (SRowInfo *row; (row = tsdbIterMergerGetData(committer->dataIterMerger)) != NULL;) {
|
||||||
if (row->uid != committer->ctx->tbid->uid) {
|
if (row->uid != committer->ctx->tbid->uid) {
|
||||||
committer->ctx->tbid->suid = row->suid;
|
committer->ctx->tbid->suid = row->suid;
|
||||||
|
|
Loading…
Reference in New Issue