Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
2679a075
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
2679a075
编写于
3月 10, 2022
作者:
A
Alex Duan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TS-207]<fix>(query): compare nchar and binary with strcmp
上级
576a1574
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
96 addition
and
43 deletion
+96
-43
src/client/src/tscGlobalmerge.c
src/client/src/tscGlobalmerge.c
+3
-3
src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
...tor/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
+1
-1
src/os/src/windows/wString.c
src/os/src/windows/wString.c
+3
-3
src/query/inc/qExtbuffer.h
src/query/inc/qExtbuffer.h
+1
-1
src/query/src/qExecutor.c
src/query/src/qExecutor.c
+0
-1
src/query/src/qExtbuffer.c
src/query/src/qExtbuffer.c
+36
-19
tests/develop-test/0-others/json_tag.py
tests/develop-test/0-others/json_tag.py
+9
-10
tests/pytest/functions/function_stddev.py
tests/pytest/functions/function_stddev.py
+2
-2
tests/pytest/query/querySort.py
tests/pytest/query/querySort.py
+41
-3
未找到文件。
src/client/src/tscGlobalmerge.c
浏览文件 @
2679a075
...
@@ -810,7 +810,7 @@ SSDataBlock* doMultiwayMergeSort(void* param, bool* newgroup) {
...
@@ -810,7 +810,7 @@ SSDataBlock* doMultiwayMergeSort(void* param, bool* newgroup) {
pOneDataSrc
->
rowIdx
,
pIndex
->
colIndex
);
pOneDataSrc
->
rowIdx
,
pIndex
->
colIndex
);
char
*
data
=
pInfo
->
prevRow
[
i
];
char
*
data
=
pInfo
->
prevRow
[
i
];
int32_t
ret
=
columnValueAscendingComparator
(
data
,
newRow
,
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
data
,
newRow
,
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
,
true
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
continue
;
continue
;
}
else
{
}
else
{
...
@@ -872,7 +872,7 @@ static bool isSameGroup(SArray* orderColumnList, SSDataBlock* pBlock, char** dat
...
@@ -872,7 +872,7 @@ static bool isSameGroup(SArray* orderColumnList, SSDataBlock* pBlock, char** dat
assert
(
pIndex
->
colId
==
pColInfo
->
info
.
colId
);
assert
(
pIndex
->
colId
==
pColInfo
->
info
.
colId
);
char
*
data
=
dataCols
[
i
];
char
*
data
=
dataCols
[
i
];
int32_t
ret
=
columnValueAscendingComparator
(
data
,
pColInfo
->
pData
,
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
data
,
pColInfo
->
pData
,
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
,
true
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
continue
;
continue
;
}
else
{
}
else
{
...
@@ -1057,7 +1057,7 @@ static int32_t doSlimitImpl(SOperatorInfo* pOperator, SSLimitOperatorInfo* pInfo
...
@@ -1057,7 +1057,7 @@ static int32_t doSlimitImpl(SOperatorInfo* pOperator, SSLimitOperatorInfo* pInfo
SColumnInfo
*
pColInfo
=
&
pColInfoData
->
info
;
SColumnInfo
*
pColInfo
=
&
pColInfoData
->
info
;
char
*
d
=
rowIndex
*
pColInfo
->
bytes
+
(
char
*
)
pColInfoData
->
pData
;
char
*
d
=
rowIndex
*
pColInfo
->
bytes
+
(
char
*
)
pColInfoData
->
pData
;
int32_t
ret
=
columnValueAscendingComparator
(
pInfo
->
prevRow
[
i
],
d
,
pColInfo
->
type
,
pColInfo
->
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
pInfo
->
prevRow
[
i
],
d
,
pColInfo
->
type
,
pColInfo
->
bytes
,
true
);
if
(
ret
!=
0
)
{
// it is a new group
if
(
ret
!=
0
)
{
// it is a new group
samegroup
=
false
;
samegroup
=
false
;
break
;
break
;
...
...
src/connector/jdbc/src/test/java/com/taosdata/jdbc/JsonTagTest.java
浏览文件 @
2679a075
...
@@ -1131,7 +1131,7 @@ public class JsonTagTest {
...
@@ -1131,7 +1131,7 @@ public class JsonTagTest {
}
}
Assert
.
assertEquals
(
8
,
count
);
Assert
.
assertEquals
(
8
,
count
);
Assert
.
assertEquals
(
"\"
femail
\""
,
s
);
Assert
.
assertEquals
(
"\"
收到货
\""
,
s
);
close
(
resultSet
);
close
(
resultSet
);
}
}
...
...
src/os/src/windows/wString.c
浏览文件 @
2679a075
...
@@ -93,9 +93,9 @@ int32_t twcslen(const wchar_t *wcs) {
...
@@ -93,9 +93,9 @@ int32_t twcslen(const wchar_t *wcs) {
}
}
int32_t
tasoUcs4Compare
(
void
*
f1_ucs4
,
void
*
f2_ucs4
,
int32_t
bytes
)
{
int32_t
tasoUcs4Compare
(
void
*
f1_ucs4
,
void
*
f2_ucs4
,
int32_t
bytes
)
{
for
(
int32_t
i
=
0
;
i
<
bytes
;
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
bytes
;
i
+=
4
)
{
int32_t
f1
=
*
(
int32_t
*
)((
char
*
)
f1_ucs4
+
i
*
4
);
int32_t
f1
=
*
(
int32_t
*
)((
char
*
)
f1_ucs4
+
i
);
int32_t
f2
=
*
(
int32_t
*
)((
char
*
)
f2_ucs4
+
i
*
4
);
int32_t
f2
=
*
(
int32_t
*
)((
char
*
)
f2_ucs4
+
i
);
if
((
f1
==
0
&&
f2
!=
0
)
||
(
f1
!=
0
&&
f2
==
0
))
{
if
((
f1
==
0
&&
f2
!=
0
)
||
(
f1
!=
0
&&
f2
==
0
))
{
return
f1
-
f2
;
return
f1
-
f2
;
...
...
src/query/inc/qExtbuffer.h
浏览文件 @
2679a075
...
@@ -254,7 +254,7 @@ int32_t compare_d(tOrderDescriptor *, int32_t numOfRow1, int32_t s1, char *data1
...
@@ -254,7 +254,7 @@ int32_t compare_d(tOrderDescriptor *, int32_t numOfRow1, int32_t s1, char *data1
struct
SSDataBlock
;
struct
SSDataBlock
;
int32_t
compare_aRv
(
struct
SSDataBlock
*
pBlock
,
SArray
*
colIndex
,
int32_t
numOfCols
,
int32_t
rowIndex
,
char
**
buffer
,
int32_t
order
);
int32_t
compare_aRv
(
struct
SSDataBlock
*
pBlock
,
SArray
*
colIndex
,
int32_t
numOfCols
,
int32_t
rowIndex
,
char
**
buffer
,
int32_t
order
);
int32_t
columnValueAscendingComparator
(
char
*
f1
,
char
*
f2
,
int32_t
type
,
int32_t
bytes
);
int32_t
columnValueAscendingComparator
(
char
*
f1
,
char
*
f2
,
int32_t
type
,
int32_t
bytes
,
bool
lenFirst
);
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
src/query/src/qExecutor.c
浏览文件 @
2679a075
...
@@ -9547,7 +9547,6 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S
...
@@ -9547,7 +9547,6 @@ SQInfo* createQInfoImpl(SQueryTableMsg* pQueryMsg, SGroupbyExpr* pGroupbyExpr, S
pQueryAttr
->
needTableSeqScan
=
pQueryMsg
->
needTableSeqScan
;
pQueryAttr
->
needTableSeqScan
=
pQueryMsg
->
needTableSeqScan
;
pQueryAttr
->
needReverseScan
=
pQueryMsg
->
needReverseScan
;
pQueryAttr
->
needReverseScan
=
pQueryMsg
->
needReverseScan
;
pQueryAttr
->
stateWindow
=
pQueryMsg
->
stateWindow
;
pQueryAttr
->
stateWindow
=
pQueryMsg
->
stateWindow
;
pQueryAttr
->
vgId
=
vgId
;
pQueryAttr
->
pFilters
=
pFilters
;
pQueryAttr
->
pFilters
=
pFilters
;
pQueryAttr
->
range
=
pQueryMsg
->
range
;
pQueryAttr
->
range
=
pQueryMsg
->
range
;
...
...
src/query/src/qExtbuffer.c
浏览文件 @
2679a075
...
@@ -366,7 +366,7 @@ static int32_t tsCompareFunc(TSKEY k1, TSKEY k2, int32_t order) {
...
@@ -366,7 +366,7 @@ static int32_t tsCompareFunc(TSKEY k1, TSKEY k2, int32_t order) {
}
}
}
}
int32_t
columnValueAscendingComparator
(
char
*
f1
,
char
*
f2
,
int32_t
type
,
int32_t
bytes
)
{
int32_t
columnValueAscendingComparator
(
char
*
f1
,
char
*
f2
,
int32_t
type
,
int32_t
bytes
,
bool
lenFirst
)
{
if
(
type
==
TSDB_DATA_TYPE_JSON
){
if
(
type
==
TSDB_DATA_TYPE_JSON
){
bool
canReturn
=
true
;
bool
canReturn
=
true
;
int32_t
result
=
jsonCompareUnit
(
f1
,
f2
,
&
canReturn
);
int32_t
result
=
jsonCompareUnit
(
f1
,
f2
,
&
canReturn
);
...
@@ -388,30 +388,47 @@ int32_t columnValueAscendingComparator(char *f1, char *f2, int32_t type, int32_t
...
@@ -388,30 +388,47 @@ int32_t columnValueAscendingComparator(char *f1, char *f2, int32_t type, int32_t
int32_t
len1
=
varDataLen
(
f1
);
int32_t
len1
=
varDataLen
(
f1
);
int32_t
len2
=
varDataLen
(
f2
);
int32_t
len2
=
varDataLen
(
f2
);
if
(
len1
!=
len2
)
{
// length first compare
return
len1
>
len2
?
1
:-
1
;
if
(
lenFirst
)
{
}
else
{
if
(
len1
>
len2
)
int32_t
ret
=
strncmp
(
varDataVal
(
f1
),
varDataVal
(
f2
),
len1
);
return
1
;
if
(
ret
==
0
)
{
else
if
(
len1
<
len2
)
return
-
1
;
}
// compare context
int32_t
ret
=
strncmp
(
varDataVal
(
f1
),
varDataVal
(
f2
),
len1
>
len2
?
len2
:
len1
);
if
(
ret
==
0
)
{
if
(
len1
>
len2
)
return
1
;
else
if
(
len1
<
len2
)
return
-
1
;
else
return
0
;
return
0
;
}
return
(
ret
<
0
)
?
-
1
:
1
;
}
}
return
(
ret
<
0
)
?
-
1
:
1
;
};
};
case
TSDB_DATA_TYPE_NCHAR
:
{
// todo handle the var string compare
case
TSDB_DATA_TYPE_NCHAR
:
{
// todo handle the var string compare
int32_t
len1
=
varDataLen
(
f1
);
int32_t
len1
=
varDataLen
(
f1
);
int32_t
len2
=
varDataLen
(
f2
);
int32_t
len2
=
varDataLen
(
f2
);
if
(
len1
!=
len2
)
{
// length first compare
return
len1
>
len2
?
1
:
-
1
;
if
(
lenFirst
)
{
}
else
{
if
(
len1
>
len2
)
int32_t
ret
=
tasoUcs4Compare
(
varDataVal
(
f1
),
varDataVal
(
f2
),
len1
);
return
1
;
if
(
ret
==
0
)
{
else
if
(
len1
<
len2
)
return
-
1
;
}
// compare context
int32_t
ret
=
tasoUcs4Compare
(
varDataVal
(
f1
),
varDataVal
(
f2
),
len1
>
len2
?
len2
:
len1
);
if
(
ret
==
0
)
{
if
(
len1
>
len2
)
return
1
;
else
if
(
len1
<
len2
)
return
-
1
;
else
return
0
;
return
0
;
}
return
(
ret
<
0
)
?
-
1
:
1
;
}
}
return
(
ret
<
0
)
?
-
1
:
1
;
};
};
case
TSDB_DATA_TYPE_UTINYINT
:
DEFAULT_COMP
(
GET_UINT8_VAL
(
f1
),
GET_UINT8_VAL
(
f2
));
case
TSDB_DATA_TYPE_UTINYINT
:
DEFAULT_COMP
(
GET_UINT8_VAL
(
f1
),
GET_UINT8_VAL
(
f2
));
case
TSDB_DATA_TYPE_USMALLINT
:
DEFAULT_COMP
(
GET_UINT16_VAL
(
f1
),
GET_UINT16_VAL
(
f2
));
case
TSDB_DATA_TYPE_USMALLINT
:
DEFAULT_COMP
(
GET_UINT16_VAL
(
f1
),
GET_UINT16_VAL
(
f2
));
...
@@ -442,7 +459,7 @@ int32_t compare_a(tOrderDescriptor *pDescriptor, int32_t numOfRows1, int32_t s1,
...
@@ -442,7 +459,7 @@ int32_t compare_a(tOrderDescriptor *pDescriptor, int32_t numOfRows1, int32_t s1,
}
}
}
else
{
}
else
{
SSchemaEx
*
pSchema
=
&
pDescriptor
->
pColumnModel
->
pFields
[
colIdx
];
SSchemaEx
*
pSchema
=
&
pDescriptor
->
pColumnModel
->
pFields
[
colIdx
];
int32_t
ret
=
columnValueAscendingComparator
(
f1
,
f2
,
pSchema
->
field
.
type
,
pSchema
->
field
.
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
f1
,
f2
,
pSchema
->
field
.
type
,
pSchema
->
field
.
bytes
,
strcmp
(
pSchema
->
field
.
name
,
TSQL_TBNAME_L
)
==
0
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
continue
;
continue
;
}
else
{
}
else
{
...
@@ -471,7 +488,7 @@ int32_t compare_aRv(SSDataBlock* pBlock, SArray* colIndex, int32_t numOfCols, in
...
@@ -471,7 +488,7 @@ int32_t compare_aRv(SSDataBlock* pBlock, SArray* colIndex, int32_t numOfCols, in
return
ret
;
return
ret
;
}
}
}
else
{
}
else
{
int32_t
ret
=
columnValueAscendingComparator
(
data
,
buffer
[
i
],
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
data
,
buffer
[
i
],
pColInfo
->
info
.
type
,
pColInfo
->
info
.
bytes
,
false
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
continue
;
continue
;
}
else
{
}
else
{
...
@@ -503,7 +520,7 @@ int32_t compare_d(tOrderDescriptor *pDescriptor, int32_t numOfRows1, int32_t s1,
...
@@ -503,7 +520,7 @@ int32_t compare_d(tOrderDescriptor *pDescriptor, int32_t numOfRows1, int32_t s1,
}
}
}
else
{
}
else
{
SSchemaEx
*
pSchema
=
&
pDescriptor
->
pColumnModel
->
pFields
[
colIdx
];
SSchemaEx
*
pSchema
=
&
pDescriptor
->
pColumnModel
->
pFields
[
colIdx
];
int32_t
ret
=
columnValueAscendingComparator
(
f1
,
f2
,
pSchema
->
field
.
type
,
pSchema
->
field
.
bytes
);
int32_t
ret
=
columnValueAscendingComparator
(
f1
,
f2
,
pSchema
->
field
.
type
,
pSchema
->
field
.
bytes
,
strcmp
(
pSchema
->
field
.
name
,
TSQL_TBNAME_L
)
==
0
);
if
(
ret
==
0
)
{
if
(
ret
==
0
)
{
continue
;
continue
;
}
else
{
}
else
{
...
...
tests/develop-test/0-others/json_tag.py
浏览文件 @
2679a075
...
@@ -34,7 +34,6 @@ class TDTestCase:
...
@@ -34,7 +34,6 @@ class TDTestCase:
def
run
(
self
):
def
run
(
self
):
tdSql
.
prepare
()
tdSql
.
prepare
()
print
(
"============== STEP 1 ===== prepare data & validate json string"
)
print
(
"============== STEP 1 ===== prepare data & validate json string"
)
tdSql
.
error
(
"create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)"
)
tdSql
.
error
(
"create table if not exists jsons1(ts timestamp, dataInt int, dataBool bool, dataStr nchar(50), dataStrBin binary(150)) tags(jtag json, tagint int)"
)
tdSql
.
error
(
"create table if not exists jsons1(ts timestamp, data json) tags(tagint int)"
)
tdSql
.
error
(
"create table if not exists jsons1(ts timestamp, data json) tags(tagint int)"
)
...
@@ -379,8 +378,8 @@ class TDTestCase:
...
@@ -379,8 +378,8 @@ class TDTestCase:
tdSql
.
error
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag"
)
tdSql
.
error
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag"
)
tdSql
.
query
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc"
)
tdSql
.
query
(
"select count(*) from jsons1 group by jtag->'tag1' order by jtag->'tag1' desc"
)
tdSql
.
checkRows
(
8
)
tdSql
.
checkRows
(
8
)
tdSql
.
checkData
(
0
,
0
,
2
)
tdSql
.
checkData
(
1
,
0
,
2
)
tdSql
.
checkData
(
0
,
1
,
'"femail"'
)
tdSql
.
checkData
(
1
,
1
,
'"femail"'
)
tdSql
.
checkData
(
2
,
0
,
1
)
tdSql
.
checkData
(
2
,
0
,
1
)
tdSql
.
checkData
(
2
,
1
,
11
)
tdSql
.
checkData
(
2
,
1
,
11
)
tdSql
.
checkData
(
5
,
0
,
1
)
tdSql
.
checkData
(
5
,
0
,
1
)
...
@@ -398,8 +397,8 @@ class TDTestCase:
...
@@ -398,8 +397,8 @@ class TDTestCase:
tdSql
.
checkData
(
2
,
1
,
"false"
)
tdSql
.
checkData
(
2
,
1
,
"false"
)
tdSql
.
checkData
(
5
,
0
,
1
)
tdSql
.
checkData
(
5
,
0
,
1
)
tdSql
.
checkData
(
5
,
1
,
11
)
tdSql
.
checkData
(
5
,
1
,
11
)
tdSql
.
checkData
(
7
,
0
,
2
)
tdSql
.
checkData
(
6
,
0
,
2
)
tdSql
.
checkData
(
7
,
1
,
'"femail"'
)
tdSql
.
checkData
(
6
,
1
,
'"femail"'
)
# test stddev with group by json tag
# test stddev with group by json tag
tdSql
.
query
(
"select stddev(dataint) from jsons1 group by jtag->'tag1'"
)
tdSql
.
query
(
"select stddev(dataint) from jsons1 group by jtag->'tag1'"
)
...
@@ -407,8 +406,8 @@ class TDTestCase:
...
@@ -407,8 +406,8 @@ class TDTestCase:
tdSql
.
checkData
(
0
,
1
,
None
)
tdSql
.
checkData
(
0
,
1
,
None
)
tdSql
.
checkData
(
1
,
0
,
0
)
tdSql
.
checkData
(
1
,
0
,
0
)
tdSql
.
checkData
(
1
,
1
,
"null"
)
tdSql
.
checkData
(
1
,
1
,
"null"
)
tdSql
.
checkData
(
7
,
0
,
11
)
tdSql
.
checkData
(
6
,
0
,
11
)
tdSql
.
checkData
(
7
,
1
,
'"femail"'
)
tdSql
.
checkData
(
6
,
1
,
'"femail"'
)
res
=
tdSql
.
getColNameList
(
"select stddev(dataint) from jsons1 group by jsons1.jtag->'tag1'"
)
res
=
tdSql
.
getColNameList
(
"select stddev(dataint) from jsons1 group by jsons1.jtag->'tag1'"
)
cname_list
=
[]
cname_list
=
[]
...
@@ -422,8 +421,8 @@ class TDTestCase:
...
@@ -422,8 +421,8 @@ class TDTestCase:
tdSql
.
checkData
(
0
,
1
,
4
)
tdSql
.
checkData
(
0
,
1
,
4
)
tdSql
.
checkData
(
1
,
1
,
24
)
tdSql
.
checkData
(
1
,
1
,
24
)
tdSql
.
checkData
(
1
,
2
,
None
)
tdSql
.
checkData
(
1
,
2
,
None
)
tdSql
.
checkData
(
10
,
1
,
1
)
tdSql
.
checkData
(
8
,
1
,
1
)
tdSql
.
checkData
(
10
,
2
,
'"femail"'
)
tdSql
.
checkData
(
8
,
2
,
'"femail"'
)
# test having
# test having
tdSql
.
query
(
"select stddev(dataint) from jsons1 group by jtag->'tag1' having stddev(dataint) > 0"
)
tdSql
.
query
(
"select stddev(dataint) from jsons1 group by jtag->'tag1' having stddev(dataint) > 0"
)
...
@@ -437,7 +436,7 @@ class TDTestCase:
...
@@ -437,7 +436,7 @@ class TDTestCase:
tdSql
.
query
(
"select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"
)
tdSql
.
query
(
"select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"
)
tdSql
.
checkRows
(
11
)
tdSql
.
checkRows
(
11
)
tdSql
.
checkData
(
0
,
0
,
'"femail"'
)
tdSql
.
checkData
(
1
,
0
,
'"femail"'
)
tdSql
.
checkData
(
2
,
0
,
5
)
tdSql
.
checkData
(
2
,
0
,
5
)
res
=
tdSql
.
getColNameList
(
"select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"
)
res
=
tdSql
.
getColNameList
(
"select jtag->'tag1' from (select jtag->'tag1', dataint from jsons1)"
)
...
...
tests/pytest/functions/function_stddev.py
浏览文件 @
2679a075
...
@@ -135,9 +135,9 @@ class TDTestCase:
...
@@ -135,9 +135,9 @@ class TDTestCase:
tdSql
.
execute
(
"insert into std3 values(now + 5s, 4);"
)
tdSql
.
execute
(
"insert into std3 values(now + 5s, 4);"
)
tdSql
.
execute
(
"insert into std3 values(now + 6s, 8);"
)
tdSql
.
execute
(
"insert into std3 values(now + 6s, 8);"
)
tdSql
.
query
(
"select stddev(col1) from stdtable group by loc;"
)
tdSql
.
query
(
"select stddev(col1) from stdtable group by loc;"
)
tdSql
.
checkData
(
0
,
0
,
2.0
)
tdSql
.
checkData
(
2
,
0
,
2.0
)
tdSql
.
checkData
(
1
,
0
,
0.5
)
tdSql
.
checkData
(
1
,
0
,
0.5
)
tdSql
.
checkData
(
2
,
0
,
0.5
)
tdSql
.
checkData
(
0
,
0
,
0.5
)
tdSql
.
execute
(
"create table stdtableint(ts timestamp, col1 int) tags(num int)"
)
tdSql
.
execute
(
"create table stdtableint(ts timestamp, col1 int) tags(num int)"
)
tdSql
.
execute
(
"create table stdint1 using stdtableint tags(1)"
)
tdSql
.
execute
(
"create table stdint1 using stdtableint tags(1)"
)
...
...
tests/pytest/query/querySort.py
浏览文件 @
2679a075
...
@@ -18,6 +18,8 @@ from util.cases import *
...
@@ -18,6 +18,8 @@ from util.cases import *
from
util.sql
import
*
from
util.sql
import
*
import
numpy
as
np
import
numpy
as
np
# constant define
WAITS
=
5
# wait seconds
class
TDTestCase
:
class
TDTestCase
:
def
init
(
self
,
conn
,
logSql
):
def
init
(
self
,
conn
,
logSql
):
...
@@ -67,9 +69,7 @@ class TDTestCase:
...
@@ -67,9 +69,7 @@ class TDTestCase:
"%s failed: sql:%s, the order provided for col:%d is not correct"
%
"%s failed: sql:%s, the order provided for col:%d is not correct"
%
(
callerFilename
,
tdSql
.
sql
,
col
))
(
callerFilename
,
tdSql
.
sql
,
col
))
def
run
(
self
):
def
test_base
(
self
):
tdSql
.
prepare
()
print
(
"======= step 1: create table and insert data ========="
)
print
(
"======= step 1: create table and insert data ========="
)
tdLog
.
debug
(
tdLog
.
debug
(
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
''' create table st(ts timestamp, tbcol1 tinyint, tbcol2 smallint, tbcol3 int, tbcol4 bigint, tbcol5 float, tbcol6 double,
...
@@ -183,6 +183,44 @@ class TDTestCase:
...
@@ -183,6 +183,44 @@ class TDTestCase:
tdSql
.
close
()
tdSql
.
close
()
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
tdLog
.
success
(
"%s successfully executed"
%
__file__
)
def
create_insert_data
(
self
):
sql
=
"create table sb(ts timestamp, i1 int) tags(t_b1 binary(32), t_n1 nchar(64));"
tdSql
.
execute
(
sql
)
for
i
in
range
(
20
):
value
=
"%s%s%s"
%
(
chr
(
64
+
i
),
chr
(
64
+
i
),
chr
(
65
+
i
))
if
i
%
10
==
5
:
value
+=
"_%s"
%
(
chr
(
66
+
i
))
if
i
%
10
==
0
:
value
+=
"_%s"
%
(
chr
(
67
+
i
))
sql
=
"insert into b%d using sb tags('A%s', 'B%s') values(now, %d);"
%
(
i
,
value
,
value
,
i
+
1000
)
tdSql
.
execute
(
sql
)
def
test_groupby_order
(
self
):
# create and insert data
print
(
"======= group order step 1: create table and insert data ========="
)
self
.
create_insert_data
()
# do query
print
(
"======= group order step 2: do query ========="
)
# ASC
sql
=
"select count(*) from sb group by t_b1 order by t_b1 asc;"
tdSql
.
execute
(
sql
)
tdSql
.
waitedQuery
(
sql
,
20
,
WAITS
)
tdSql
.
checkData
(
0
,
1
,
"A@@A_C"
)
tdSql
.
checkData
(
5
,
1
,
"AEEF_G"
)
tdSql
.
checkData
(
19
,
1
,
"ASST"
)
#DESC
sql
=
"select count(*) from sb group by t_b1 order by t_b1 desc;"
tdSql
.
execute
(
sql
)
tdSql
.
waitedQuery
(
sql
,
20
,
WAITS
)
tdSql
.
checkData
(
19
,
1
,
"A@@A_C"
)
tdSql
.
checkData
(
4
,
1
,
"AOOP_Q"
)
tdSql
.
checkData
(
0
,
1
,
"ASST"
)
def
run
(
self
):
tdSql
.
prepare
()
self
.
test_base
()
self
.
test_groupby_order
()
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addWindows
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
tdCases
.
addLinux
(
__file__
,
TDTestCase
())
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录