Merge pull request #19337 from taosdata/fix/TD-21688-MAIN

fix:  varchar type order by rule different with nchar type
This commit is contained in:
dapan1121 2023-01-04 10:49:46 +08:00 committed by GitHub
commit e1b25c192e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 15 deletions

View File

@ -23,6 +23,7 @@
#include "thash.h" #include "thash.h"
#include "tlog.h" #include "tlog.h"
#include "types.h" #include "types.h"
#include "osString.h"
int32_t setChkInBytes1(const void *pLeft, const void *pRight) { int32_t setChkInBytes1(const void *pLeft, const void *pRight) {
return NULL != taosHashGet((SHashObj *)pRight, pLeft, 1) ? 1 : 0; return NULL != taosHashGet((SHashObj *)pRight, pLeft, 1) ? 1 : 0;
@ -208,16 +209,16 @@ 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) { int32_t ret = tasoUcs4Compare((TdUcs4 *)varDataVal(pLeft), (TdUcs4 *)varDataVal(pRight), len1>len2 ? len2:len1);
return len1 > len2 ? 1 : -1;
} else {
int32_t ret = memcmp((TdUcs4 *)pLeft, (TdUcs4 *)pRight, len1);
if (ret == 0) { if (ret == 0) {
if (len1 > len2)
return 1;
else if(len1 < len2)
return -1;
else
return 0; return 0;
} else {
return ret > 0 ? 1 : -1;
}
} }
return (ret < 0) ? -1 : 1;
} }
int32_t compareLenPrefixedWStrDesc(const void *pLeft, const void *pRight) { int32_t compareLenPrefixedWStrDesc(const void *pLeft, const void *pRight) {

View File

@ -408,8 +408,8 @@ class TDTestCase:
# test group by & order by json tag # test group by & order by json tag
tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc") tdSql.query(f"select ts,jtag->'tag1' from {dbname}.jsons1 partition by jtag->'tag1' order by jtag->'tag1' desc")
tdSql.checkRows(11) tdSql.checkRows(11)
tdSql.checkData(0, 1, '"femail"') tdSql.checkData(0, 1, '"收到货"')
tdSql.checkData(2, 1, '"收到货"') tdSql.checkData(2, 1, '"femail"')
tdSql.checkData(7, 1, "false") tdSql.checkData(7, 1, "false")
@ -421,9 +421,10 @@ class TDTestCase:
tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' desc") tdSql.query(f"select count(*),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1' desc")
tdSql.checkRows(8) tdSql.checkRows(8)
tdSql.checkData(0, 0, 2) tdSql.checkData(0, 0, 2)
tdSql.checkData(0, 1, '"femail"') tdSql.checkData(0, 1, '"收到货"')
tdSql.checkData(1, 1, '"femail"')
tdSql.checkData(1, 0, 2) tdSql.checkData(1, 0, 2)
tdSql.checkData(1, 1, '"收到货"')
tdSql.checkData(2, 0, 1) tdSql.checkData(2, 0, 1)
tdSql.checkData(2, 1, "11.000000000") tdSql.checkData(2, 1, "11.000000000")
tdSql.checkData(5, 0, 1) tdSql.checkData(5, 0, 1)
@ -437,7 +438,7 @@ class TDTestCase:
tdSql.checkData(5, 0, 1) tdSql.checkData(5, 0, 1)
tdSql.checkData(5, 1, "11.000000000") tdSql.checkData(5, 1, "11.000000000")
tdSql.checkData(7, 0, 2) tdSql.checkData(7, 0, 2)
tdSql.checkData(7, 1, '"femail"') tdSql.checkData(7, 1, '"收到货"')
# test stddev with group by json tag # test stddev with group by json tag
tdSql.query(f"select stddev(dataint),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'") tdSql.query(f"select stddev(dataint),jtag->'tag1' from {dbname}.jsons1 group by jtag->'tag1' order by jtag->'tag1'")
@ -445,8 +446,8 @@ class TDTestCase:
tdSql.checkData(0, 1, None) tdSql.checkData(0, 1, None)
tdSql.checkData(4, 0, 0) tdSql.checkData(4, 0, 0)
tdSql.checkData(4, 1, "5.000000000") tdSql.checkData(4, 1, "5.000000000")
tdSql.checkData(7, 0, 11) tdSql.checkData(6, 0, 11)
tdSql.checkData(7, 1, '"femail"') tdSql.checkData(7, 1, '"收到货"')
res = tdSql.getColNameList(f"select stddev(dataint),jsons1.jtag->'tag1' from {dbname}.jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'") res = tdSql.getColNameList(f"select stddev(dataint),jsons1.jtag->'tag1' from {dbname}.jsons1 group by jsons1.jtag->'tag1' order by jtag->'tag1'")
cname_list = [] cname_list = []