From 57bde4f3111d93e2e2792c4a9519e733cca1724b Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 23 May 2023 11:35:44 +0800 Subject: [PATCH] more code --- include/util/tarray2.h | 15 +++++++++++---- source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h | 2 +- source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h | 2 +- source/dnode/vnode/src/tsdb/dev/tsdbCommit.c | 12 ++++++------ source/dnode/vnode/src/tsdb/dev/tsdbFS.c | 8 ++++---- source/dnode/vnode/src/tsdb/dev/tsdbFSet.c | 4 ++-- 6 files changed, 25 insertions(+), 18 deletions(-) diff --git a/include/util/tarray2.h b/include/util/tarray2.h index 3b36bd920e..7c253d36eb 100644 --- a/include/util/tarray2.h +++ b/include/util/tarray2.h @@ -115,10 +115,17 @@ static FORCE_INLINE int32_t tarray2_make_room( // #define TARRAY2_APPEND_P(a, ep) TARRAY2_APPEND(a, *(ep)) // return (TYPE *) -#define TARRAY2_SEARCH(a, ep, cmp, flag) \ - ((typeof((a)->data))(((a)->size == 0) ? NULL \ - : taosbsearch(ep, (a)->data, (a)->size, sizeof(typeof((a)->data[0])), \ - (__compar_fn_t)cmp, flag))) +#define TARRAY2_SEARCH(a, ep, cmp, flag) \ + ({ \ + typeof((a)->data) __ep = (ep); \ + typeof((a)->data) __p; \ + if ((a)->size > 0) { \ + __p = taosbsearch(__ep, (a)->data, (a)->size, sizeof(typeof((a)->data[0])), (__compar_fn_t)cmp, flag); \ + } else { \ + __p = NULL; \ + } \ + __p; \ + }) // return (TYPE) #define TARRAY2_SEARCH_EX(a, ep, cmp, flag) \ diff --git a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h index 729d5a90c6..dff8678e7d 100644 --- a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h +++ b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFS.h @@ -41,7 +41,7 @@ int32_t tsdbFSEditBegin(STFileSystem *fs, const TFileOpArray *opArray, EFEditT e int32_t tsdbFSEditCommit(STFileSystem *pFS); int32_t tsdbFSEditAbort(STFileSystem *pFS); // other -int32_t tsdbFSGetFSet(STFileSystem *fs, int32_t fid, const STFileSet **ppFSet); +int32_t tsdbFSGetFSet(STFileSystem *fs, int32_t fid, STFileSet **fset); /* Exposed Structs */ struct STFileSystem { diff --git a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h index 20da1259f9..e7fcbb6a56 100644 --- a/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h +++ b/source/dnode/vnode/src/tsdb/dev/inc/tsdbFSet.h @@ -53,7 +53,7 @@ int32_t tsdbTFileSetEditEx(const STFileSet *fset1, STFileSet *fset); // max commit id int64_t tsdbTFileSetMaxCid(const STFileSet *fset); -SSttLvl *tsdbTFileSetGetLvl(const STFileSet *fset, int32_t level); +SSttLvl *tsdbTFileSetGetLvl(STFileSet *fset, int32_t level); struct STFileOp { tsdb_fop_t op; diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c index 3010d2f27e..88474fdcac 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbCommit.c @@ -32,12 +32,12 @@ typedef struct { int64_t eid; // edit id // context - TSKEY nextKey; - int32_t fid; - int32_t expLevel; - TSKEY minKey; - TSKEY maxKey; - const STFileSet *fset; + TSKEY nextKey; + int32_t fid; + int32_t expLevel; + TSKEY minKey; + TSKEY maxKey; + STFileSet *fset; // writer SSttFileWriter *pWriter; diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c index f862c59b18..9fabb49024 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFS.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFS.c @@ -586,9 +586,9 @@ int32_t tsdbFSEditAbort(STFileSystem *fs) { return code; } -int32_t tsdbFSGetFSet(STFileSystem *fs, int32_t fid, const STFileSet **fset) { - STFileSet tfset = {.fid = fid}; - fset[0] = &tfset; - fset[0] = TARRAY2_SEARCH_EX(&fs->cstate, fset, tsdbTFileSetCmprFn, TD_EQ); +int32_t tsdbFSGetFSet(STFileSystem *fs, int32_t fid, STFileSet **fset) { + STFileSet tfset = {.fid = fid}; + STFileSet *pset = &tfset; + fset[0] = TARRAY2_SEARCH_EX(&fs->cstate, &pset, tsdbTFileSetCmprFn, TD_EQ); return 0; } \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c index fd48b6eea7..5a3cac3651 100644 --- a/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c +++ b/source/dnode/vnode/src/tsdb/dev/tsdbFSet.c @@ -312,10 +312,10 @@ int32_t tsdbTFileSetRemove(STFileSet **fset) { return 0; } -SSttLvl *tsdbTFileSetGetLvl(const STFileSet *fset, int32_t level) { +SSttLvl *tsdbTFileSetGetLvl(STFileSet *fset, int32_t level) { SSttLvl tlvl = {.level = level}; SSttLvl *lvl = &tlvl; - return TARRAY2_SEARCH_EX(&fset->lvlArr, lvl, tsdbSttLvlCmprFn, TD_EQ); + return TARRAY2_SEARCH_EX(&fset->lvlArr, &lvl, tsdbSttLvlCmprFn, TD_EQ); } int32_t tsdbTFileSetCmprFn(const STFileSet **fset1, const STFileSet **fset2) { -- GitLab