From 9e14eb778b377b08900e6f509fafdb57196377c0 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 1 Dec 2020 16:19:07 +0800 Subject: [PATCH 1/3] refact --- src/client/src/tscSub.c | 6 +++--- src/util/inc/tarray.h | 5 +++-- src/util/src/tarray.c | 8 ++++---- src/util/src/tcompare.c | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/client/src/tscSub.c b/src/client/src/tscSub.c index 043e78a9f3..cb36abde7f 100644 --- a/src/client/src/tscSub.c +++ b/src/client/src/tscSub.c @@ -61,7 +61,7 @@ TSKEY tscGetSubscriptionProgress(void* sub, int64_t uid, TSKEY dflt) { SSub* pSub = (SSub*)sub; SSubscriptionProgress target = {.uid = uid, .key = 0}; - SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress); + SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress, TD_EQ); if (p == NULL) { return dflt; } @@ -74,7 +74,7 @@ void tscUpdateSubscriptionProgress(void* sub, int64_t uid, TSKEY ts) { SSub* pSub = (SSub*)sub; SSubscriptionProgress target = {.uid = uid, .key = ts}; - SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress); + SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress, TD_EQ); if (p != NULL) { p->key = ts; } @@ -267,7 +267,7 @@ static int tscUpdateSubscription(STscObj* pObj, SSub* pSub) { if (UTIL_TABLE_IS_NORMAL_TABLE(pTableMetaInfo)) { STableMeta * pTableMeta = pTableMetaInfo->pTableMeta; SSubscriptionProgress target = {.uid = pTableMeta->id.uid, .key = 0}; - SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress); + SSubscriptionProgress* p = taosArraySearch(pSub->progress, &target, tscCompareSubscriptionProgress, TD_EQ); if (p == NULL) { taosArrayClear(pSub->progress); taosArrayPush(pSub->progress, &target); diff --git a/src/util/inc/tarray.h b/src/util/inc/tarray.h index c5e9aed67a..eed165240c 100644 --- a/src/util/inc/tarray.h +++ b/src/util/inc/tarray.h @@ -21,6 +21,7 @@ extern "C" { #endif #include "os.h" +#include "talgo.h" #define TARRAY_MIN_SIZE 8 #define TARRAY_GET_ELEM(array, index) ((void*)((char*)((array)->pData) + (index) * (array)->elemSize)) @@ -150,14 +151,14 @@ void taosArraySortString(SArray* pArray, __compar_fn_t comparFn); * @param compar * @param key */ -void* taosArraySearch(const SArray* pArray, const void* key, __compar_fn_t comparFn); +void* taosArraySearch(const SArray* pArray, const void* key, __compar_fn_t comparFn, int flags); /** * search the array * @param pArray * @param key */ -char* taosArraySearchString(const SArray* pArray, const char* key, __compar_fn_t comparFn); +char* taosArraySearchString(const SArray* pArray, const char* key, __compar_fn_t comparFn, int flags); #ifdef __cplusplus } diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index be3fc85786..35b66bd905 100644 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -217,11 +217,11 @@ void taosArraySort(SArray* pArray, int (*compar)(const void*, const void*)) { qsort(pArray->pData, pArray->size, pArray->elemSize, compar); } -void* taosArraySearch(const SArray* pArray, const void* key, __compar_fn_t comparFn) { +void* taosArraySearch(const SArray* pArray, const void* key, __compar_fn_t comparFn, int flags) { assert(pArray != NULL && comparFn != NULL); assert(key != NULL); - return bsearch(key, pArray->pData, pArray->size, pArray->elemSize, comparFn); + return taosbsearch(key, pArray->pData, pArray->size, pArray->elemSize, comparFn, flags); } void taosArraySortString(SArray* pArray, __compar_fn_t comparFn) { @@ -229,11 +229,11 @@ void taosArraySortString(SArray* pArray, __compar_fn_t comparFn) { qsort(pArray->pData, pArray->size, pArray->elemSize, comparFn); } -char* taosArraySearchString(const SArray* pArray, const char* key, __compar_fn_t comparFn) { +char* taosArraySearchString(const SArray* pArray, const char* key, __compar_fn_t comparFn, int flags) { assert(pArray != NULL); assert(key != NULL); - void* p = bsearch(&key, pArray->pData, pArray->size, pArray->elemSize, comparFn); + void* p = taosbsearch(&key, pArray->pData, pArray->size, pArray->elemSize, comparFn, flags); if (p == NULL) { return NULL; } diff --git a/src/util/src/tcompare.c b/src/util/src/tcompare.c index ff67b1f3ec..611f1142c7 100644 --- a/src/util/src/tcompare.c +++ b/src/util/src/tcompare.c @@ -239,7 +239,7 @@ int32_t taosArrayCompareString(const void* a, const void* b) { static int32_t compareFindStrInArray(const void* pLeft, const void* pRight) { const SArray* arr = (const SArray*) pRight; - return taosArraySearchString(arr, pLeft, taosArrayCompareString) == NULL ? 0 : 1; + return taosArraySearchString(arr, pLeft, taosArrayCompareString, TD_EQ) == NULL ? 0 : 1; } static int32_t compareWStrPatternComp(const void* pLeft, const void* pRight) { From b7112fc74b1c252b70bbe0a7c740a829d261827c Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 1 Dec 2020 17:10:30 +0800 Subject: [PATCH 2/3] refact --- src/util/inc/tarray.h | 9 +++++++++ src/util/src/tarray.c | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/src/util/inc/tarray.h b/src/util/inc/tarray.h index eed165240c..96bcd64c3e 100644 --- a/src/util/inc/tarray.h +++ b/src/util/inc/tarray.h @@ -25,6 +25,7 @@ extern "C" { #define TARRAY_MIN_SIZE 8 #define TARRAY_GET_ELEM(array, index) ((void*)((char*)((array)->pData) + (index) * (array)->elemSize)) +#define TARRAY_ELEM_IDX(array, ele) (POINTER_DISTANCE(ele, (array)->pData) / (array)->elemSize) typedef struct SArray { size_t size; @@ -93,6 +94,14 @@ size_t taosArrayGetSize(const SArray* pArray); */ void* taosArrayInsert(SArray* pArray, size_t index, void* pData); +/** + * set data in array + * @param pArray + * @param index + * @param pData + */ +void* taosArraySet(SArray* pArray, size_t index, void* pData); + /** * remove data entry of the given index * @param pArray diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index 35b66bd905..df6d7b0ba2 100644 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -133,6 +133,11 @@ void* taosArrayInsert(SArray* pArray, size_t index, void* pData) { return dst; } +void* taosArraySet(SArray* pArray, size_t index, void* pData) { + assert(index < pArray->size); + memcpy(TARRAY_GET_ELEM(pArray, index), pData, pArray->elemSize); +} + void taosArrayRemove(SArray* pArray, size_t index) { assert(index < pArray->size); From bcbb45067b9a206b39aeae3587b51fd7decccde2 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 1 Dec 2020 18:42:07 +0800 Subject: [PATCH 3/3] fix compile error --- src/util/inc/tarray.h | 2 +- src/util/src/tarray.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/inc/tarray.h b/src/util/inc/tarray.h index 96bcd64c3e..d2f564baaf 100644 --- a/src/util/inc/tarray.h +++ b/src/util/inc/tarray.h @@ -100,7 +100,7 @@ void* taosArrayInsert(SArray* pArray, size_t index, void* pData); * @param index * @param pData */ -void* taosArraySet(SArray* pArray, size_t index, void* pData); +void taosArraySet(SArray* pArray, size_t index, void* pData); /** * remove data entry of the given index diff --git a/src/util/src/tarray.c b/src/util/src/tarray.c index df6d7b0ba2..88ce936a0e 100644 --- a/src/util/src/tarray.c +++ b/src/util/src/tarray.c @@ -133,7 +133,7 @@ void* taosArrayInsert(SArray* pArray, size_t index, void* pData) { return dst; } -void* taosArraySet(SArray* pArray, size_t index, void* pData) { +void taosArraySet(SArray* pArray, size_t index, void* pData) { assert(index < pArray->size); memcpy(TARRAY_GET_ELEM(pArray, index), pData, pArray->elemSize); }