Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
cebe53a4
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
cebe53a4
编写于
3月 28, 2023
作者:
X
Xuefeng Tan
提交者:
GitHub
3月 28, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: fix test `cast.py` for windows (#20676)
上级
3702852b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
84 deletion
+49
-84
tests/pytest/util/sql.py
tests/pytest/util/sql.py
+17
-7
tests/system-test/2-query/cast.py
tests/system-test/2-query/cast.py
+32
-77
未找到文件。
tests/pytest/util/sql.py
浏览文件 @
cebe53a4
...
...
@@ -251,7 +251,7 @@ class TDSql:
if
self
.
queryResult
[
row
][
col
]
!=
data
:
if
self
.
cursor
.
istype
(
col
,
"TIMESTAMP"
):
# suppose user want to check nanosecond timestamp if a longer data passed``
# suppose user want to check nanosecond timestamp if a longer data passed``
if
isinstance
(
data
,
str
)
:
if
(
len
(
data
)
>=
28
):
if
self
.
queryResult
[
row
][
col
]
==
_parse_ns_timestamp
(
data
):
...
...
@@ -260,7 +260,7 @@ class TDSql:
else
:
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
1
][
0
])
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
row
,
col
,
self
.
queryResult
[
row
][
col
],
data
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
else
:
if
self
.
queryResult
[
row
][
col
].
astimezone
(
datetime
.
timezone
.
utc
)
==
_parse_datetime
(
data
).
astimezone
(
datetime
.
timezone
.
utc
):
# tdLog.info(f"sql:{self.sql}, row:{row} col:{col} data:{self.queryResult[row][col]} == expect:{data}")
...
...
@@ -270,12 +270,12 @@ class TDSql:
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
row
,
col
,
self
.
queryResult
[
row
][
col
],
data
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
return
elif
isinstance
(
data
,
int
)
:
if
len
(
str
(
data
))
==
16
:
elif
isinstance
(
data
,
int
):
if
len
(
str
(
data
))
==
16
:
precision
=
'us'
elif
len
(
str
(
data
))
==
13
:
elif
len
(
str
(
data
))
==
13
:
precision
=
'ms'
elif
len
(
str
(
data
))
==
19
:
elif
len
(
str
(
data
))
==
19
:
precision
=
'ns'
else
:
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
1
][
0
])
...
...
@@ -303,11 +303,21 @@ class TDSql:
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
row
,
col
,
self
.
queryResult
[
row
][
col
],
data
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
return
elif
isinstance
(
data
,
datetime
.
datetime
):
dt_obj
=
self
.
queryResult
[
row
][
col
]
delt_data
=
data
-
datetime
.
datetime
.
fromtimestamp
(
0
,
data
.
tzinfo
)
delt_result
=
self
.
queryResult
[
row
][
col
]
-
datetime
.
datetime
.
fromtimestamp
(
0
,
self
.
queryResult
[
row
][
col
].
tzinfo
)
if
delt_data
==
delt_result
:
tdLog
.
info
(
"check successfully"
)
else
:
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
1
][
0
])
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
row
,
col
,
self
.
queryResult
[
row
][
col
],
data
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
return
else
:
caller
=
inspect
.
getframeinfo
(
inspect
.
stack
()[
1
][
0
])
args
=
(
caller
.
filename
,
caller
.
lineno
,
self
.
sql
,
row
,
col
,
self
.
queryResult
[
row
][
col
],
data
)
tdLog
.
exit
(
"%s(%d) failed: sql:%s row:%d col:%d data:%s != expect:%s"
%
args
)
if
str
(
self
.
queryResult
[
row
][
col
])
==
str
(
data
):
# tdLog.info(f"sql:{self.sql}, row:{row} col:{col} data:{self.queryResult[row][col]} == expect:{data}")
...
...
tests/system-test/2-query/cast.py
浏览文件 @
cebe53a4
...
...
@@ -38,11 +38,8 @@ class TDTestCase:
if
data_tb_col
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
if
col_name
not
in
[
"c2"
,
"double"
]
or
tbname
!=
f
"
{
self
.
dbname
}
.t1"
or
i
!=
10
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_tb_col
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
datetime
.
datetime
.
fromtimestamp
(
data_tb_col
[
i
]
/
1000
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
def
__range_to_timestamp
(
self
,
cols
,
tables
):
for
col
in
cols
:
...
...
@@ -60,7 +57,7 @@ class TDTestCase:
self
.
__range_to_timestamp
(
cols
=
__col_list
,
tables
=
__table_list
)
def
all_test
(
self
):
_datetime_epoch
=
datetime
.
datetime
.
fromtimestamp
(
0
)
tdSql
.
query
(
f
"select c1 from
{
self
.
dbname
}
.ct4"
)
data_ct4_c1
=
[
tdSql
.
getData
(
i
,
0
)
for
i
in
range
(
tdSql
.
queryRows
)]
tdSql
.
query
(
f
"select c1 from
{
self
.
dbname
}
.t1"
)
...
...
@@ -99,22 +96,16 @@ class TDTestCase:
if
data_ct4_c1
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_ct4_c1
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c1
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c1 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c1
)):
if
data_t1_c1
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_t1_c1
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c1
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step8: cast bigint to bigint, expect no changes"
)
...
...
@@ -156,11 +147,8 @@ class TDTestCase:
if
data_ct4_c2
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_ct4_c2
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c2
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c2 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
...
...
@@ -170,11 +158,8 @@ class TDTestCase:
elif
i
==
10
:
continue
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_t1_c2
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c2
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step12: cast smallint to bigint, expect no changes"
)
...
...
@@ -216,22 +201,16 @@ class TDTestCase:
if
data_ct4_c3
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_ct4_c3
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c3
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c3 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c3
)):
if
data_t1_c3
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_t1_c3
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c3
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step16: cast tinyint to bigint, expect no changes"
)
...
...
@@ -273,22 +252,16 @@ class TDTestCase:
if
data_ct4_c4
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_ct4_c4
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c4
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c4 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c4
)):
if
data_t1_c4
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
data_t1_c4
[
i
]
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c4
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step20: cast float to bigint, expect no changes"
)
...
...
@@ -326,21 +299,15 @@ class TDTestCase:
if
data_ct4_c5
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_ct4_c5
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c5
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c5 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c5
)):
if
data_t1_c5
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_t1_c5
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c5
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step24: cast double to bigint, expect no changes"
)
tdSql
.
query
(
f
"select c6 from
{
self
.
dbname
}
.ct4"
)
...
...
@@ -382,11 +349,8 @@ class TDTestCase:
if
data_ct4_c6
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_ct4_c6
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c6
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c6 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c6
)):
...
...
@@ -395,11 +359,8 @@ class TDTestCase:
elif
i
==
10
:
continue
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_t1_c6
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c6
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdLog
.
printNoPrefix
(
"==========step28: cast bool to bigint, expect no changes"
)
tdSql
.
query
(
f
"select c7 from
{
self
.
dbname
}
.ct4"
)
...
...
@@ -436,21 +397,15 @@ class TDTestCase:
if
data_ct4_c7
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_ct4_c7
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_ct4_c7
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select cast(c7 as timestamp) as b from
{
self
.
dbname
}
.t1"
)
for
i
in
range
(
len
(
data_t1_c7
)):
if
data_t1_c7
[
i
]
is
None
:
tdSql
.
checkData
(
i
,
0
,
None
)
else
:
utc_zone
=
datetime
.
timezone
.
utc
utc_8
=
datetime
.
timezone
(
datetime
.
timedelta
(
hours
=
8
))
date_init_stamp
=
datetime
.
datetime
.
utcfromtimestamp
(
int
(
data_t1_c7
[
i
])
/
1000
)
date_data
=
date_init_stamp
.
replace
(
tzinfo
=
utc_zone
).
astimezone
(
utc_8
).
strftime
(
"%Y-%m-%d %H:%M:%S.%f"
)
tdSql
.
checkData
(
i
,
0
,
date_data
)
date_init_stamp
=
_datetime_epoch
+
datetime
.
timedelta
(
seconds
=
int
(
data_t1_c7
[
i
])
/
1000.0
)
tdSql
.
checkData
(
i
,
0
,
date_init_stamp
)
tdSql
.
query
(
f
"select c8 from
{
self
.
dbname
}
.ct4"
)
...
...
@@ -694,7 +649,7 @@ class TDTestCase:
tdSql.query(f"
select
cast
(
'123'
as
tinyint
unsigned
)
as
b
from
{
self
.
dbname
}
.
stb1
partition
by
tbname
")
# uion with cast and common cols
tdSql.query(f"
select
cast
(
c2
as
int
)
as
b
from
{
self
.
dbname
}
.
stb1
union
all
select
c1
from
{
self
.
dbname
}
.
stb1
")
tdSql.query(f"
select
cast
(
c3
as
bool
)
as
b
from
{
self
.
dbname
}
.
stb1
union
all
select
c7
from
{
self
.
dbname
}
.
ct1
")
tdSql.query(f"
select
cast
(
c4
as
tinyint
)
as
b
from
{
self
.
dbname
}
.
stb1
union
all
select
c4
from
{
self
.
dbname
}
.
stb1
")
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录