Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
64c16a14
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
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看板
提交
64c16a14
编写于
3月 15, 2022
作者:
X
xywang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[TD-13875]<fix>: common json now can be inserted
上级
64877f0f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
83 addition
and
1 deletion
+83
-1
src/client/src/tscParseLineProtocol.c
src/client/src/tscParseLineProtocol.c
+83
-1
未找到文件。
src/client/src/tscParseLineProtocol.c
浏览文件 @
64c16a14
...
...
@@ -18,6 +18,7 @@
#include "taos.h"
#include "tscParseLine.h"
#include "cJSON.h"
typedef
struct
{
char
sTableName
[
TSDB_TABLE_NAME_LEN
+
TS_BACKQUOTE_CHAR_SIZE
];
...
...
@@ -2142,7 +2143,10 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
bool
*
is_last_kv
,
SSmlLinesInfo
*
info
,
bool
isTag
)
{
const
char
*
start
,
*
cur
,
*
tmp
;
int32_t
ret
=
TSDB_CODE_SUCCESS
;
char
*
value
=
NULL
;
int32_t
braces
=
0
;
const
char
*
json_start
=
NULL
,
*
json_end
=
NULL
;
cJSON
*
json
=
NULL
;
char
*
value
=
NULL
,
*
json_tmp
,
*
json_cur
;
int16_t
len
=
0
;
bool
searchQuote
=
false
;
start
=
cur
=
*
index
;
...
...
@@ -2161,6 +2165,84 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
}
while
(
1
)
{
if
(
*
cur
==
'{'
)
{
if
(
len
==
0
||
(
len
==
1
&&
cur
[
len
-
1
]
!=
'"'
)
||
(
len
==
2
&&
cur
[
len
-
1
]
!=
'"'
&&
cur
[
len
-
2
]
!=
'L'
))
{
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
}
json_start
=
cur
;
braces
++
;
cur
++
;
len
++
;
while
(
*
cur
!=
'\0'
)
{
if
(
*
cur
==
'{'
)
{
if
(
*
(
cur
-
1
)
==
'{'
)
{
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
}
braces
++
;
}
if
(
*
cur
==
'}'
)
{
if
(
*
(
cur
-
1
)
==
'}'
)
{
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
}
braces
--
;
}
cur
++
;
len
++
;
if
(
braces
==
0
)
{
break
;
}
}
if
(
braces
!=
0
)
{
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
}
json_end
=
cur
;
value
=
calloc
(
1
,
json_end
-
json_start
+
1
);
if
(
value
==
NULL
)
{
tscError
(
"SML:0x%"
PRIx64
" Failed allocte for json sml type value"
,
info
->
id
);
ret
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
goto
error
;
}
//check "\\,"
memcpy
(
value
,
json_start
,
json_end
-
json_start
);
json_tmp
=
json_cur
=
value
;
while
(
json_tmp
[
1
]
!=
'\0'
)
{
if
(
json_tmp
[
0
]
==
'\\'
&&
json_tmp
[
1
]
==
','
)
{
json_tmp
++
;
}
*
json_cur
++
=
*
json_tmp
++
;
}
*
json_cur
++
=
*
json_tmp
++
;
*
json_cur
=
'\0'
;
//check if json is valid
json
=
cJSON_Parse
(
value
);
if
(
json
==
NULL
)
{
free
(
value
);
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
}
free
(
value
);
}
// unescaped ',' or ' ' or '\0' identifies a value
if
(((
*
cur
==
','
||
*
cur
==
' '
)
&&
*
(
cur
-
1
)
!=
'\\'
)
||
*
cur
==
'\0'
)
{
if
(
searchQuote
==
true
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录