提交 7de84b9d 编写于 作者: A Alex Duan

[TS-207]<fix>(query): fixed doCompare with tag and case

上级 0408e5fa
......@@ -203,7 +203,7 @@ int32_t compareLenPrefixedWStr(const void *pLeft, const void *pRight) {
int32_t len1 = varDataLen(pLeft);
int32_t len2 = varDataLen(pRight);
int32_t ret = tasoUcs4Compare(varDataVal(pLeft), varDataVal(pRight), len1>len2 ? len2:len1);
int32_t ret = memcmp(varDataVal(pLeft), varDataVal(pRight), len1>len2 ? len2:len1);
if (ret == 0) {
if (len1 > len2)
return 1;
......@@ -772,33 +772,8 @@ int32_t doCompare(const char* f1, const char* f2, int32_t type, size_t size) {
case TSDB_DATA_TYPE_USMALLINT: DEFAULT_COMP(GET_UINT16_VAL(f1), GET_UINT16_VAL(f2));
case TSDB_DATA_TYPE_UINT: DEFAULT_COMP(GET_UINT32_VAL(f1), GET_UINT32_VAL(f2));
case TSDB_DATA_TYPE_UBIGINT: DEFAULT_COMP(GET_UINT64_VAL(f1), GET_UINT64_VAL(f2));
case TSDB_DATA_TYPE_NCHAR:{
tstr* t1 = (tstr*) f1;
tstr* t2 = (tstr*) f2;
if (t1->len != t2->len) {
return t1->len > t2->len? 1:-1;
}
int32_t ret = memcmp((wchar_t*) t1, (wchar_t*) t2, t2->len);
if (ret == 0) {
return ret;
}
return (ret < 0) ? -1 : 1;
}
default: { // todo refactor
tstr* t1 = (tstr*) f1;
tstr* t2 = (tstr*) f2;
if (t1->len != t2->len) {
return t1->len > t2->len? 1:-1;
} else {
int32_t ret = strncmp(t1->data, t2->data, t1->len);
if (ret == 0) {
return 0;
} else {
return ret < 0? -1:1;
}
}
}
case TSDB_DATA_TYPE_NCHAR: return compareLenPrefixedWStr(f1, f2);
default: // BINARY AND NULL AND SO ON
return compareLenPrefixedStr(f1, f2);
}
}
......@@ -49,13 +49,13 @@ class TDTestCase:
tdSql.query('select last(*) from mt0 group by c8')
tdSql.checkData(0,3,5)
tdSql.checkData(0,4,20)
tdSql.checkData(3,1,92)
tdSql.checkData(3,9,'涛思8')
tdSql.checkData(3,1,57)
tdSql.checkData(3,9,'涛思14')
tdSql.query('select last(*) from mt0 group by c9')
tdSql.checkData(0,3,0)
tdSql.checkData(0,8,'taos38')
tdSql.checkData(40,1,83)
tdSql.checkData(40,3,40)
tdSql.checkData(35,1,83)
tdSql.checkData(35,3,40)
def stop(self):
tdSql.close()
......
......@@ -51,19 +51,19 @@ class TDTestCase:
tdSql.checkRows(0)
tdSql.query('select max(c1),min(c1),first(c1),last(c1) from mt0 group by c3 limit 70 offset 3')
tdSql.checkRows(38)
tdSql.query('select max(c1),min(c1),first(c1),last(c1) from mt0 group by c8 limit 3 offset 2')
tdSql.query('select max(c1),min(c1),first(c1),last(c1) from mt0 group by c8 limit 3 offset 12')
tdSql.checkData(0,0,91)
tdSql.checkData(0,1,2)
tdSql.checkData(0,2,2)
tdSql.checkData(0,3,91)
tdSql.checkData(1,0,92)
tdSql.checkData(2,1,4)
tdSql.query('select max(c1),min(c1),first(c1),last(c1) from mt0 group by c9 limit 2 offset 9')
tdSql.checkData(0,0,96)
tdSql.checkData(0,1,1)
tdSql.checkData(0,2,9)
tdSql.checkData(0,3,93)
tdSql.checkData(1,0,97)
tdSql.checkData(1,0,94)
tdSql.checkData(2,1,7)
tdSql.query('select max(c1),min(c1),first(c1),last(c1) from mt0 group by c9 limit 2 offset 39')
tdSql.checkData(1,0,96)
tdSql.checkData(1,1,1)
tdSql.checkData(1,2,9)
tdSql.checkData(0,3,92)
tdSql.checkData(0,0,95)
def stop(self):
tdSql.close()
......
......@@ -303,11 +303,11 @@ class TDTestCase:
tdSql.checkRows(10)
# > for binary type on tag
tdSql.query("select * from st where tagcol3 > '表'")
tdSql.query("select * from st where tagcol3 < '表'")
tdSql.checkRows(10)
# >= for binary type on tag
tdSql.query("select * from st where tagcol3 >= '表'")
tdSql.query("select * from st where tagcol3 <= '表'")
tdSql.checkRows(10)
# = for binary type on tag
......
......@@ -116,7 +116,7 @@ if $data00 != NULL then
return -1
endi
sql select count(*), a from mt_unsigned_1 group by a;
sql select count(*), a from mt_unsigned_1 group by a order by a desc;
if $rows != 2 then
return -1
endi
......@@ -137,7 +137,7 @@ if $data11 != 1 then
return -1
endi
sql select count(*), b from mt_unsigned_1 group by b;
sql select count(*), b from mt_unsigned_1 group by b order by b desc;
if $rows != 2 then
return -1
endi
......@@ -158,7 +158,7 @@ if $data11 != 2 then
return -1
endi
sql select count(*), c from mt_unsigned_1 group by c;
sql select count(*), c from mt_unsigned_1 group by c order by c desc;
if $rows != 2 then
return -1
endi
......@@ -179,7 +179,7 @@ if $data11 != 3 then
return -1
endi
sql select count(*), d from mt_unsigned_1 group by d;
sql select count(*), d from mt_unsigned_1 group by d order by d desc;
if $rows != 2 then
return -1
endi
......
......@@ -594,7 +594,8 @@ if $data10 != @{slop:0.000000, intercept:1.000000}@ then
return -1
endi
if $data90 != @{slop:0.000000, intercept:9.000000}@ then
if $data90 != @{slop:0.000000, intercept:17.000000}@ then
print " data90 expect: {slop:0.000000, intercept:17.000000} real:"$data90
return -1
endi
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册