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 metaFilterTtl(void* pVnode, SMetaFltParam* param, SArray* pUids);
|
||||
|
||||
int32_t metaGetColCmpr(SMeta* pMeta, tb_uid_t uid, SHashObj** colCmprObj);
|
||||
#ifndef META_REFACT
|
||||
// SMetaDB
|
||||
int metaOpenDB(SMeta* pMeta);
|
||||
|
|
|
@ -2500,6 +2500,57 @@ _err:
|
|||
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
|
||||
void *metaGetIdx(SMeta *pMeta) { return pMeta->pTagIdx; }
|
||||
void *metaGetIvtIdx(SMeta *pMeta) { return pMeta->pTagIvtIdx; }
|
||||
|
|
|
@ -47,6 +47,7 @@ typedef struct {
|
|||
TABLEID tbid[1];
|
||||
bool hasTSData;
|
||||
bool skipTsRow;
|
||||
SHashObj *pColCmprObj;
|
||||
} ctx[1];
|
||||
|
||||
// reader
|
||||
|
@ -117,6 +118,7 @@ static int32_t tsdbCommitTSData(SCommitter2 *committer) {
|
|||
|
||||
committer->ctx->tbid->suid = 0;
|
||||
committer->ctx->tbid->uid = 0;
|
||||
|
||||
for (SRowInfo *row; (row = tsdbIterMergerGetData(committer->dataIterMerger)) != NULL;) {
|
||||
if (row->uid != committer->ctx->tbid->uid) {
|
||||
committer->ctx->tbid->suid = row->suid;
|
||||
|
|
Loading…
Reference in New Issue