[TD-6054]<fix>: Filtered by tag with nchar value not as expected

This commit is contained in:
Ganlin Zhao 2021-08-15 23:01:57 +08:00
parent fc8bc32120
commit c86bda4a1b
1 changed files with 9 additions and 2 deletions

View File

@ -152,11 +152,18 @@ int32_t compareLenPrefixedStr(const void *pLeft, const void *pRight) {
int32_t compareLenPrefixedWStr(const void *pLeft, const void *pRight) { int32_t compareLenPrefixedWStr(const void *pLeft, const void *pRight) {
int32_t len1 = varDataLen(pLeft); int32_t len1 = varDataLen(pLeft);
int32_t len2 = varDataLen(pRight); int32_t len2 = varDataLen(pRight);
if (len1 != len2) { if (len1 != len2) {
return len1 > len2? 1:-1; return len1 > len2? 1:-1;
} else { } else {
int32_t ret = wcsncmp(varDataVal(pLeft), varDataVal(pRight), len1/TSDB_NCHAR_SIZE); char pLeftTerm[len1 + 1];
char pRightTerm[len2 + 1];
memset(pLeftTerm, 0, len1 + 1);
memset(pRightTerm, 0, len2 + 1);
memcpy(pLeftTerm, varDataVal(pLeft), len1);
memcpy(pRightTerm, varDataVal(pRight), len2);
int32_t ret = wcsncmp((void *)pLeftTerm, (void *)pRightTerm, len1/TSDB_NCHAR_SIZE);
if (ret == 0) { if (ret == 0) {
return 0; return 0;
} else { } else {