From 53eebdce883acc9443b4d04a07edad07e4f662b1 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 6 Dec 2021 21:24:14 +0800 Subject: [PATCH] more --- include/dnode/vnode/meta/meta.h | 2 +- source/dnode/vnode/meta/src/metaTbCfg.c | 53 +++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/include/dnode/vnode/meta/meta.h b/include/dnode/vnode/meta/meta.h index 1de1f9fa2c..44ae1bb79f 100644 --- a/include/dnode/vnode/meta/meta.h +++ b/include/dnode/vnode/meta/meta.h @@ -105,7 +105,7 @@ void metaOptionsClear(SMetaCfg *pOptions); #define META_CLEAR_TB_CFG(pTbCfg) int metaEncodeTbCfg(void **pBuf, STbCfg *pTbCfg); -void *metaDecodeTbCfg(void *pBuf, STbCfg **pTbCfg); +void *metaDecodeTbCfg(void *pBuf, STbCfg *pTbCfg); #ifdef __cplusplus } diff --git a/source/dnode/vnode/meta/src/metaTbCfg.c b/source/dnode/vnode/meta/src/metaTbCfg.c index 8485d82a8d..da181a68fc 100644 --- a/source/dnode/vnode/meta/src/metaTbCfg.c +++ b/source/dnode/vnode/meta/src/metaTbCfg.c @@ -49,10 +49,55 @@ size_t metaEncodeTbObjFromTbOptions(const STbCfg *pTbOptions, void *pBuf, size_t } int metaEncodeTbCfg(void **pBuf, STbCfg *pTbCfg) { - // TODO - return 0; + int tsize = 0; + + tsize += taosEncodeString(pBuf, pTbCfg->name); + tsize += taosEncodeFixedU32(pBuf, pTbCfg->ttl); + tsize += taosEncodeFixedU32(pBuf, pTbCfg->keep); + tsize += taosEncodeFixedU8(pBuf, pTbCfg->type); + + switch (pTbCfg->type) { + case META_SUPER_TABLE: + tsize += taosEncodeFixedU64(pBuf, pTbCfg->stbCfg.suid); + tsize += tdEncodeSchema(pBuf, pTbCfg->stbCfg.pSchema); + tsize += tdEncodeSchema(pBuf, pTbCfg->stbCfg.pTagSchema); + break; + case META_CHILD_TABLE: + tsize += taosEncodeFixedU64(pBuf, pTbCfg->ctbCfg.suid); + tsize += tdEncodeKVRow(pBuf, pTbCfg->ctbCfg.pTag); + break; + case META_NORMAL_TABLE: + tsize += tdEncodeSchema(pBuf, pTbCfg->ntbCfg.pSchema); + break; + default: + break; + } + + return tsize; } -void *metaDecodeTbCfg(void *pBuf, STbCfg **pTbCfg) { - // TODO +void *metaDecodeTbCfg(void *pBuf, STbCfg *pTbCfg) { + pBuf = taosDecodeString(pBuf, &(pTbCfg->name)); + pBuf = taosDecodeFixedU32(pBuf, &(pTbCfg->ttl)); + pBuf = taosDecodeFixedU32(pBuf, &(pTbCfg->keep)); + pBuf = taosDecodeFixedU8(pBuf, &(pTbCfg->type)); + + switch (pTbCfg->type) { + case META_SUPER_TABLE: + pBuf = taosDecodeFixedU64(pBuf, &(pTbCfg->stbCfg.suid)); + pBuf = tdDecodeSchema(pBuf, &(pTbCfg->stbCfg.pSchema)); + pBuf = tdDecodeSchema(pBuf, &(pTbCfg->stbCfg.pTagSchema)); + break; + case META_CHILD_TABLE: + pBuf = taosDecodeFixedU64(pBuf, &(pTbCfg->ctbCfg.suid)); + pBuf = tdDecodeKVRow(pBuf, &(pTbCfg->ctbCfg.pTag)); + break; + case META_NORMAL_TABLE: + pBuf = tdDecodeSchema(pBuf, &(pTbCfg->ntbCfg.pSchema)); + break; + default: + break; + } + + return pBuf; } \ No newline at end of file -- GitLab