Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
10777888
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
10777888
编写于
10月 25, 2021
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-10700]<enhance>: add test case for JSON protocol inserting
keywords/special character
上级
de8613b9
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
173 addition
and
4 deletion
+173
-4
src/client/src/tscParseOpenTSDB.c
src/client/src/tscParseOpenTSDB.c
+0
-4
tests/pytest/insert/insertJSONPayload.py
tests/pytest/insert/insertJSONPayload.py
+173
-0
未找到文件。
src/client/src/tscParseOpenTSDB.c
浏览文件 @
10777888
...
...
@@ -900,10 +900,6 @@ static int32_t parseTagsFromJSON(cJSON *root, TAOS_SML_KV **pKVs, int *num_kvs,
return
TSDB_CODE_TSC_INVALID_JSON
;
}
size_t
idLen
=
strlen
(
id
->
valuestring
);
ret
=
isValidChildTableName
(
id
->
valuestring
,
(
int16_t
)
idLen
,
info
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
*
childTableName
=
tcalloc
(
idLen
+
TS_ESCAPE_CHAR_SIZE
+
1
,
sizeof
(
char
));
memcpy
(
*
childTableName
,
id
->
valuestring
,
idLen
);
strntolower_s
(
*
childTableName
,
*
childTableName
,
(
int32_t
)
idLen
);
...
...
tests/pytest/insert/insertJSONPayload.py
浏览文件 @
10777888
...
...
@@ -664,6 +664,179 @@ class TDTestCase:
tdSql
.
checkData
(
9
,
1
,
"BINARY"
)
tdSql
.
checkData
(
10
,
1
,
"NCHAR"
)
### special characters ###
payload
=
[
'''
{
"metric": "1234",
"timestamp": 1626006833,
"value": 1,
"tags": {
"id": "123",
"456": true,
"int": false,
"double": 1,
"into": 1,
"from": 2,
"!@#$.%^&*()": "123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `1234`"
)
tdSql
.
checkRows
(
8
)
tdSql
.
query
(
"select * from `123`"
)
tdSql
.
checkRows
(
1
)
payload
=
[
'''
{
"metric": "int",
"timestamp": 1626006833,
"value": 1,
"tags": {
"id": "and",
"456": true,
"int": false,
"double": 1,
"into": 1,
"from": 2,
"!@#$.%^&*()": "123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `int`"
)
tdSql
.
checkRows
(
8
)
tdSql
.
query
(
"select * from `and`"
)
tdSql
.
checkRows
(
1
)
payload
=
[
'''
{
"metric": "double",
"timestamp": 1626006833,
"value": 1,
"tags": {
"id": "for",
"456": true,
"int": false,
"double": 1,
"into": 1,
"from": 2,
"!@#$.%^&*()": "123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `double`"
)
tdSql
.
checkRows
(
8
)
tdSql
.
query
(
"select * from `for`"
)
tdSql
.
checkRows
(
1
)
payload
=
[
'''
{
"metric": "from",
"timestamp": 1626006833,
"value": 1,
"tags": {
"id": "!@#.^&",
"456": true,
"int": false,
"double": 1,
"into": 1,
"from": 2,
"!@#$.%^&*()": "123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `from`"
)
tdSql
.
checkRows
(
8
)
tdSql
.
query
(
"select * from `!@#.^&`"
)
tdSql
.
checkRows
(
1
)
payload
=
[
'''
{
"metric": "!@#$.%^&*()",
"timestamp": 1626006833,
"value": 1,
"tags": {
"id": "none",
"456": true,
"int": false,
"double": 1,
"into": 1,
"from": 2,
"!@#$.%^&*()": "123_abc_.!@#$%^&*:;,./?|+-=()[]{}<>"
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `!@#$.%^&*()`"
)
tdSql
.
checkRows
(
8
)
tdSql
.
query
(
"select * from `none`"
)
tdSql
.
checkRows
(
1
)
payload
=
[
'''
{
"metric": "123abc",
"timestamp": {
"value": 1626006833,
"type": "s"
},
"value": {
"value": "hello",
"type": "nchar"
},
"tags": {
"456": {
"value": true,
"type": "bool"
},
"int": {
"value": 127,
"type": "tinyint"
},
"double":{
"value": 32767,
"type": "smallint"
},
"into": {
"value": 2147483647,
"type": "int"
},
"from": {
"value": 9.2233720368547758e+18,
"type": "bigint"
},
"!@#$.%^&*()": {
"value": 11.12345,
"type": "float"
}
}
}
'''
]
code
=
self
.
_conn
.
schemaless_insert
(
payload
,
TDSmlProtocolType
.
JSON
.
value
,
TDSmlTimestampType
.
NOT_CONFIGURED
.
value
)
print
(
"schemaless_insert result {}"
.
format
(
code
))
tdSql
.
query
(
"describe `123abc`"
)
tdSql
.
checkRows
(
8
)
def
stop
(
self
):
tdSql
.
close
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录