From 555ee2b556b582c5609b9f56db96437b240f66a1 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sun, 29 Jan 2023 09:43:03 +0800 Subject: [PATCH 1/4] fix(query): add qsort for alpine. --- source/os/src/osMath.c | 18 ++++++++++++++---- source/util/src/talgo.c | 16 ---------------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/source/os/src/osMath.c b/source/os/src/osMath.c index dddadd5ff6..5ac0fce006 100644 --- a/source/os/src/osMath.c +++ b/source/os/src/osMath.c @@ -15,7 +15,6 @@ #define ALLOW_FORBID_FUNC #define _DEFAULT_SOURCE -#include "os.h" #include #ifdef WINDOWS @@ -32,7 +31,18 @@ void swapStr(char* j, char* J, int width) { } #endif -// todo refactor: 1) move away; 2) use merge sort instead; 3) qsort is not a stable sort actually. -void taosSort(void* arr, int64_t sz, int64_t width, __compar_fn_t compar) { - qsort(arr, sz, width, compar); +int32_t qsortHelper(const void* p1, const void* p2, const void* param) { + __compar_fn_t comparFn = param; + return comparFn(p1, p2); } + +// todo refactor: 1) move away; 2) use merge sort instead; 3) qsort is not a stable sort actually. +void taosSort(void* base, int64_t sz, int64_t width, __compar_fn_t compar) { +#ifdef _ALPINE + void* param = compar; + taosqsort(base, width, sz, param, qsortHelper); +#else + qsort(base, sz, width, compar); +#endif +} + diff --git a/source/util/src/talgo.c b/source/util/src/talgo.c index d9319485b7..a06aac6afe 100644 --- a/source/util/src/talgo.c +++ b/source/util/src/talgo.c @@ -41,12 +41,6 @@ static void median(void *src, int64_t size, int64_t s, int64_t e, const void *pa ASSERT(comparFn(elePtrAt(src, size, mid), elePtrAt(src, size, s), param) <= 0 && comparFn(elePtrAt(src, size, s), elePtrAt(src, size, e), param) <= 0); - -#ifdef _DEBUG_VIEW -// tTagsPrints(src[s], pOrderDesc->pColumnModel, &pOrderDesc->orderIdx); -// tTagsPrints(src[mid], pOrderDesc->pColumnModel, &pOrderDesc->orderIdx); -// tTagsPrints(src[e], pOrderDesc->pColumnModel, &pOrderDesc->orderIdx); -#endif } static void tInsertSort(void *src, int64_t size, int32_t s, int32_t e, const void *param, __ext_compar_fn_t comparFn, @@ -278,14 +272,4 @@ void taosheapsort(void *base, int32_t size, int32_t len, const void *parcompar, } taosMemoryFree(buf); - /* - char *buf = taosMemoryCalloc(1, size); - - for (i = len - 1; i > 0; i--) { - doswap(elePtrAt(base, size, 0), elePtrAt(base, size, i)); - taosheapadjust(base, size, 0, i - 1, parcompar, compar, parswap, swap, maxroot); - } - - taosMemoryFreeClear(buf); - */ } From ef8b68bc80ca0af3091f51ab4d883b8d1390d787 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sun, 29 Jan 2023 13:31:43 +0800 Subject: [PATCH 2/4] fix(query): fix syntax error on windows. --- source/os/src/osMath.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/os/src/osMath.c b/source/os/src/osMath.c index 5ac0fce006..067b130b57 100644 --- a/source/os/src/osMath.c +++ b/source/os/src/osMath.c @@ -16,6 +16,7 @@ #define ALLOW_FORBID_FUNC #define _DEFAULT_SOURCE #include +#include "osDef.h" #ifdef WINDOWS void swapStr(char* j, char* J, int width) { From 995b75f77f9ab598cce093904e6c3a2b69d32a13 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sun, 29 Jan 2023 13:44:30 +0800 Subject: [PATCH 3/4] fix(query): fix syntax error on windows. --- source/os/src/osMath.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/os/src/osMath.c b/source/os/src/osMath.c index 067b130b57..9b24cce8c3 100644 --- a/source/os/src/osMath.c +++ b/source/os/src/osMath.c @@ -32,7 +32,7 @@ void swapStr(char* j, char* J, int width) { } #endif -int32_t qsortHelper(const void* p1, const void* p2, const void* param) { +int qsortHelper(const void* p1, const void* p2, const void* param) { __compar_fn_t comparFn = param; return comparFn(p1, p2); } From 4892740cb10033a8862554780e340c710bcc6b62 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Sun, 29 Jan 2023 14:00:00 +0800 Subject: [PATCH 4/4] fix(query): fix error on windows. --- source/os/src/osMath.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/os/src/osMath.c b/source/os/src/osMath.c index 9b24cce8c3..41c8c9257a 100644 --- a/source/os/src/osMath.c +++ b/source/os/src/osMath.c @@ -15,8 +15,8 @@ #define ALLOW_FORBID_FUNC #define _DEFAULT_SOURCE +#include "os.h" #include -#include "osDef.h" #ifdef WINDOWS void swapStr(char* j, char* J, int width) {