Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
5ec92e7d
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看板
提交
5ec92e7d
编写于
12月 15, 2022
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
opti:parse json
上级
1b2a0473
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
40 deletion
+17
-40
source/client/src/clientSmlJson.c
source/client/src/clientSmlJson.c
+17
-40
未找到文件。
source/client/src/clientSmlJson.c
浏览文件 @
5ec92e7d
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
#define JUMP_JSON_SPACE(start) \
#define JUMP_JSON_SPACE(start) \
while(*(start)){\
while(*(start)){\
if(unlikely(
isspace(*(start)) == 0
))\
if(unlikely(
*(start) > 32
))\
break;\
break;\
else\
else\
(start)++;\
(start)++;\
...
@@ -34,13 +34,13 @@ static SArray *smlJsonParseTags(char *start, char *end){
...
@@ -34,13 +34,13 @@ static SArray *smlJsonParseTags(char *start, char *end){
kv
.
type
=
TSDB_DATA_TYPE_NCHAR
;
kv
.
type
=
TSDB_DATA_TYPE_NCHAR
;
bool
isInQuote
=
false
;
bool
isInQuote
=
false
;
while
(
start
<
end
){
while
(
start
<
end
){
if
(
!
isInQuote
&&
*
start
==
'"'
){
if
(
unlikely
(
!
isInQuote
&&
*
start
==
'"'
)
){
start
++
;
start
++
;
kv
.
key
=
start
;
kv
.
key
=
start
;
isInQuote
=
true
;
isInQuote
=
true
;
continue
;
continue
;
}
}
if
(
isInQuote
&&
*
start
==
'"'
){
if
(
unlikely
(
isInQuote
&&
*
start
==
'"'
)
){
kv
.
keyLen
=
start
-
kv
.
key
;
kv
.
keyLen
=
start
-
kv
.
key
;
start
++
;
start
++
;
break
;
break
;
...
@@ -49,18 +49,18 @@ static SArray *smlJsonParseTags(char *start, char *end){
...
@@ -49,18 +49,18 @@ static SArray *smlJsonParseTags(char *start, char *end){
}
}
bool
hasColon
=
false
;
bool
hasColon
=
false
;
while
(
start
<
end
){
while
(
start
<
end
){
if
(
!
hasColon
&&
*
start
==
':'
){
if
(
unlikely
(
!
hasColon
&&
*
start
==
':'
)
){
start
++
;
start
++
;
hasColon
=
true
;
hasColon
=
true
;
continue
;
continue
;
}
}
if
(
hasColon
&&
kv
.
value
==
NULL
&&
(
isspace
(
*
start
)
==
0
&&
*
start
!=
'"'
)){
if
(
unlikely
(
hasColon
&&
kv
.
value
==
NULL
&&
(
*
start
>
32
&&
*
start
!=
'"'
)
)){
kv
.
value
=
start
;
kv
.
value
=
start
;
start
++
;
start
++
;
continue
;
continue
;
}
}
if
(
hasColon
&&
kv
.
value
!=
NULL
&&
(
*
start
==
'"'
||
*
start
==
','
||
*
start
==
'}'
)){
if
(
unlikely
(
hasColon
&&
kv
.
value
!=
NULL
&&
(
*
start
==
'"'
||
*
start
==
','
||
*
start
==
'}'
)
)){
kv
.
length
=
start
-
kv
.
value
;
kv
.
length
=
start
-
kv
.
value
;
taosArrayPush
(
tags
,
&
kv
);
taosArrayPush
(
tags
,
&
kv
);
start
++
;
start
++
;
...
@@ -233,9 +233,13 @@ static char* smlJsonGetObj(char *payload){
...
@@ -233,9 +233,13 @@ static char* smlJsonGetObj(char *payload){
return
NULL
;
return
NULL
;
}
}
static
void
smlJsonParseObj
(
char
**
start
,
SSmlLineInfo
*
element
){
static
inline
void
smlJsonParseObj
(
char
**
start
,
SSmlLineInfo
*
element
){
while
(
*
(
*
start
)){
while
(
*
(
*
start
)){
if
((
*
start
)[
0
]
==
'"'
&&
(
*
start
)[
1
]
==
'm'
&&
(
*
start
)[
2
]
==
'e'
&&
(
*
start
)[
3
]
==
't'
if
((
*
start
)[
0
]
!=
'"'
){
(
*
start
)
++
;
continue
;
}
if
((
*
start
)[
1
]
==
'm'
&&
(
*
start
)[
2
]
==
'e'
&&
(
*
start
)[
3
]
==
't'
&&
(
*
start
)[
4
]
==
'r'
&&
(
*
start
)[
5
]
==
'i'
&&
(
*
start
)[
6
]
==
'c'
&&
(
*
start
)[
7
]
==
'"'
){
&&
(
*
start
)[
4
]
==
'r'
&&
(
*
start
)[
5
]
==
'i'
&&
(
*
start
)[
6
]
==
'c'
&&
(
*
start
)[
7
]
==
'"'
){
(
*
start
)
+=
8
;
(
*
start
)
+=
8
;
...
@@ -253,7 +257,7 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
...
@@ -253,7 +257,7 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
}
}
(
*
start
)
++
;
(
*
start
)
++
;
}
}
}
else
if
((
*
start
)[
0
]
==
'"'
&&
(
*
start
)[
1
]
==
't'
&&
(
*
start
)[
2
]
==
'i'
&&
(
*
start
)[
3
]
==
'm'
}
else
if
((
*
start
)[
1
]
==
't'
&&
(
*
start
)[
2
]
==
'i'
&&
(
*
start
)[
3
]
==
'm'
&&
(
*
start
)[
4
]
==
'e'
&&
(
*
start
)[
5
]
==
's'
&&
(
*
start
)[
6
]
==
't'
&&
(
*
start
)[
4
]
==
'e'
&&
(
*
start
)[
5
]
==
's'
&&
(
*
start
)[
6
]
==
't'
&&
(
*
start
)[
7
]
==
'a'
&&
(
*
start
)[
8
]
==
'm'
&&
(
*
start
)[
9
]
==
'p'
&&
(
*
start
)[
10
]
==
'"'
){
&&
(
*
start
)[
7
]
==
'a'
&&
(
*
start
)[
8
]
==
'm'
&&
(
*
start
)[
9
]
==
'p'
&&
(
*
start
)[
10
]
==
'"'
){
...
@@ -267,13 +271,13 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
...
@@ -267,13 +271,13 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
hasColon
=
true
;
hasColon
=
true
;
continue
;
continue
;
}
}
if
(
unlikely
(
hasColon
&&
(
*
(
*
start
)
==
','
||
*
(
*
start
)
==
'}'
||
isspace
(
*
(
*
start
))
!=
0
))){
if
(
unlikely
(
hasColon
&&
(
*
(
*
start
)
==
','
||
*
(
*
start
)
==
'}'
||
(
*
(
*
start
))
<=
32
))){
element
->
timestampLen
=
(
*
start
)
-
element
->
timestamp
;
element
->
timestampLen
=
(
*
start
)
-
element
->
timestamp
;
break
;
break
;
}
}
(
*
start
)
++
;
(
*
start
)
++
;
}
}
}
else
if
((
*
start
)[
0
]
==
'"'
&&
(
*
start
)[
1
]
==
'v'
&&
(
*
start
)[
2
]
==
'a'
&&
(
*
start
)[
3
]
==
'l'
}
else
if
((
*
start
)[
1
]
==
'v'
&&
(
*
start
)[
2
]
==
'a'
&&
(
*
start
)[
3
]
==
'l'
&&
(
*
start
)[
4
]
==
'u'
&&
(
*
start
)[
5
]
==
'e'
&&
(
*
start
)[
6
]
==
'"'
){
&&
(
*
start
)[
4
]
==
'u'
&&
(
*
start
)[
5
]
==
'e'
&&
(
*
start
)[
6
]
==
'"'
){
(
*
start
)
+=
7
;
(
*
start
)
+=
7
;
...
@@ -287,13 +291,13 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
...
@@ -287,13 +291,13 @@ static void smlJsonParseObj(char **start, SSmlLineInfo *element){
hasColon
=
true
;
hasColon
=
true
;
continue
;
continue
;
}
}
if
(
unlikely
(
hasColon
&&
(
*
(
*
start
)
==
','
||
*
(
*
start
)
==
'}'
||
isspace
(
*
(
*
start
))
!=
0
))){
if
(
unlikely
(
hasColon
&&
(
*
(
*
start
)
==
','
||
*
(
*
start
)
==
'}'
||
(
*
(
*
start
))
<=
32
))){
element
->
colsLen
=
(
*
start
)
-
element
->
cols
;
element
->
colsLen
=
(
*
start
)
-
element
->
cols
;
break
;
break
;
}
}
(
*
start
)
++
;
(
*
start
)
++
;
}
}
}
else
if
((
*
start
)[
0
]
==
'"'
&&
(
*
start
)[
1
]
==
't'
&&
(
*
start
)[
2
]
==
'a'
&&
(
*
start
)[
3
]
==
'g'
}
else
if
((
*
start
)[
1
]
==
't'
&&
(
*
start
)[
2
]
==
'a'
&&
(
*
start
)[
3
]
==
'g'
&&
(
*
start
)[
4
]
==
's'
&&
(
*
start
)[
5
]
==
'"'
){
&&
(
*
start
)[
4
]
==
's'
&&
(
*
start
)[
5
]
==
'"'
){
(
*
start
)
+=
6
;
(
*
start
)
+=
6
;
...
@@ -326,23 +330,6 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
...
@@ -326,23 +330,6 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
smlJsonParseObj
(
start
,
elements
);
smlJsonParseObj
(
start
,
elements
);
if
(
**
start
==
'\0'
)
return
TSDB_CODE_SUCCESS
;
if
(
**
start
==
'\0'
)
return
TSDB_CODE_SUCCESS
;
if
(
unlikely
(
elements
->
measure
==
NULL
||
elements
->
measureLen
==
0
))
{
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalid measure data"
,
*
start
);
return
TSDB_CODE_SML_INVALID_DATA
;
}
if
(
unlikely
(
elements
->
tags
==
NULL
||
elements
->
tagsLen
==
0
))
{
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalid tags data"
,
*
start
);
return
TSDB_CODE_SML_INVALID_DATA
;
}
if
(
unlikely
(
elements
->
cols
==
NULL
||
elements
->
colsLen
==
0
))
{
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalid cols data"
,
*
start
);
return
TSDB_CODE_SML_INVALID_DATA
;
}
if
(
unlikely
(
elements
->
timestamp
==
NULL
||
elements
->
timestampLen
==
0
))
{
smlBuildInvalidDataMsg
(
&
info
->
msgBuf
,
"invalid timestamp data"
,
*
start
);
return
TSDB_CODE_SML_INVALID_DATA
;
}
SSmlKv
kv
=
{.
key
=
VALUE
,
.
keyLen
=
VALUE_LEN
,
.
value
=
elements
->
cols
,
.
length
=
(
size_t
)
elements
->
colsLen
};
SSmlKv
kv
=
{.
key
=
VALUE
,
.
keyLen
=
VALUE_LEN
,
.
value
=
elements
->
cols
,
.
length
=
(
size_t
)
elements
->
colsLen
};
if
(
smlParseNumber
(
&
kv
,
&
info
->
msgBuf
))
{
if
(
smlParseNumber
(
&
kv
,
&
info
->
msgBuf
))
{
kv
.
length
=
(
int16_t
)
tDataTypes
[
kv
.
type
].
bytes
;
kv
.
length
=
(
int16_t
)
tDataTypes
[
kv
.
type
].
bytes
;
...
@@ -394,16 +381,6 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
...
@@ -394,16 +381,6 @@ static int32_t smlParseJSONString(SSmlHandle *info, char **start, SSmlLineInfo *
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
}
//#define JUMP_TO_QUOTE(sql) \
// while (sql){ \
// if (unlikely(isspace(*(sql))) != 0) \
// (sql)++; \
// else \
// break; \
// }
//
int32_t
smlParseJSON
(
SSmlHandle
*
info
,
char
*
payload
)
{
int32_t
smlParseJSON
(
SSmlHandle
*
info
,
char
*
payload
)
{
int32_t
payloadNum
=
1
<<
15
;
int32_t
payloadNum
=
1
<<
15
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录