Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
867f3b5b
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看板
未验证
提交
867f3b5b
编写于
6月 01, 2022
作者:
M
Minglei Jin
提交者:
GitHub
6月 01, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #13301 from taosdata/fix/TS-1545-V26
fix(client): V26 line protocol support n and fixed error
上级
2e2ada9f
294cc0de
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
13 deletion
+21
-13
src/client/src/tscParseLineProtocol.c
src/client/src/tscParseLineProtocol.c
+20
-10
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+1
-3
未找到文件。
src/client/src/tscParseLineProtocol.c
浏览文件 @
867f3b5b
...
...
@@ -2087,7 +2087,7 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
switch
(
tag_state
)
{
case
tag_common
:
if
(
back_slash
==
true
)
{
if
(
*
cur
!=
','
&&
*
cur
!=
'='
&&
*
cur
!=
' '
)
{
if
(
*
cur
!=
','
&&
*
cur
!=
'='
&&
*
cur
!=
' '
&&
*
cur
!=
'n'
)
{
tscError
(
"SML:0x%"
PRIx64
" tag value: state(%d), incorrect character(%c) escaped"
,
info
->
id
,
tag_state
,
*
cur
);
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
...
...
@@ -2152,7 +2152,7 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
break
;
case
tag_lqoute
:
if
(
back_slash
==
true
)
{
if
(
*
cur
!=
','
&&
*
cur
!=
'='
&&
*
cur
!=
' '
)
{
if
(
*
cur
!=
','
&&
*
cur
!=
'='
&&
*
cur
!=
' '
&&
*
cur
!=
'n'
)
{
tscError
(
"SML:0x%"
PRIx64
" tag value: state(%d), incorrect character(%c) escaped"
,
info
->
id
,
tag_state
,
*
cur
);
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
...
...
@@ -2223,7 +2223,7 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
switch
(
val_state
)
{
case
val_common
:
if
(
back_slash
==
true
)
{
if
(
*
cur
!=
'\\'
&&
*
cur
!=
'"'
)
{
if
(
*
cur
!=
'\\'
&&
*
cur
!=
'"'
&&
*
cur
!=
'n'
)
{
tscError
(
"SML:0x%"
PRIx64
" field value: state(%d), incorrect character(%c) escaped"
,
info
->
id
,
val_state
,
*
cur
);
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
...
...
@@ -2318,7 +2318,7 @@ static int32_t parseSmlValue(TAOS_SML_KV *pKV, const char **index,
break
;
case
val_lqoute
:
if
(
back_slash
==
true
)
{
if
(
*
cur
!=
'\\'
&&
*
cur
!=
'"'
)
{
if
(
*
cur
!=
'\\'
&&
*
cur
!=
'"'
&&
*
cur
!=
'n'
)
{
tscError
(
"SML:0x%"
PRIx64
" field value: state(%d), incorrect character(%c) escaped"
,
info
->
id
,
val_state
,
*
cur
);
ret
=
TSDB_CODE_TSC_LINE_SYNTAX_ERROR
;
goto
error
;
...
...
@@ -2488,12 +2488,15 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs,
if
(
isField
)
{
capacity
=
64
;
*
pKVs
=
malloc
(
capacity
*
sizeof
(
TAOS_SML_KV
));
memset
(
*
pKVs
,
0
,
capacity
*
sizeof
(
TAOS_SML_KV
));
// leave space for timestamp;
pkv
=
*
pKVs
;
pkv
++
;
*
num_kvs
=
1
;
// ts fixed column
}
else
{
capacity
=
8
;
*
pKVs
=
malloc
(
capacity
*
sizeof
(
TAOS_SML_KV
));
memset
(
*
pKVs
,
0
,
capacity
*
sizeof
(
TAOS_SML_KV
));
pkv
=
*
pKVs
;
}
...
...
@@ -2554,7 +2557,7 @@ static int32_t parseSmlKvPairs(TAOS_SML_KV **pKVs, int *num_kvs,
*
pKVs
=
more_kvs
;
//move pKV points to next TAOS_SML_KV block
if
(
isField
)
{
pkv
=
*
pKVs
+
*
num_kvs
+
1
;
pkv
=
*
pKVs
+
*
num_kvs
;
// first ts column reserved
}
else
{
pkv
=
*
pKVs
+
*
num_kvs
;
}
...
...
@@ -2576,7 +2579,7 @@ static void moveTimeStampToFirstKv(TAOS_SML_DATA_POINT** smlData, TAOS_SML_KV *t
tsField
->
key
=
malloc
(
strlen
(
ts
->
key
)
+
1
);
memcpy
(
tsField
->
key
,
ts
->
key
,
strlen
(
ts
->
key
)
+
1
);
memcpy
(
tsField
->
value
,
ts
->
value
,
ts
->
length
);
(
*
smlData
)
->
fieldNum
=
(
*
smlData
)
->
fieldNum
+
1
;
//(*smlData)->fieldNum = (*smlData)->fieldNum + 1; // already reserved for first ts column
free
(
ts
->
key
);
free
(
ts
->
value
);
...
...
@@ -2634,14 +2637,21 @@ int32_t tscParseLine(const char* sql, TAOS_SML_DATA_POINT* smlData, SSmlLinesInf
//=========================================================================
void
destroySmlDataPoint
(
TAOS_SML_DATA_POINT
*
point
)
{
TAOS_SML_KV
*
pkv
;
for
(
int
i
=
0
;
i
<
point
->
tagNum
;
++
i
)
{
free
((
point
->
tags
+
i
)
->
key
);
free
((
point
->
tags
+
i
)
->
value
);
pkv
=
point
->
tags
+
i
;
if
(
pkv
->
key
)
free
(
pkv
->
key
);
if
(
pkv
->
value
)
free
(
pkv
->
value
);
}
free
(
point
->
tags
);
for
(
int
i
=
0
;
i
<
point
->
fieldNum
;
++
i
)
{
free
((
point
->
fields
+
i
)
->
key
);
free
((
point
->
fields
+
i
)
->
value
);
pkv
=
point
->
fields
+
i
;
if
(
pkv
->
key
)
free
(
pkv
->
key
);
if
(
pkv
->
value
)
free
(
pkv
->
value
);
}
free
(
point
->
fields
);
free
(
point
->
stableName
);
...
...
src/client/src/tscSubquery.c
浏览文件 @
867f3b5b
...
...
@@ -3921,9 +3921,7 @@ void* createQInfoFromQueryNode(SQueryInfo* pQueryInfo, STableGroupInfo* pTableGr
}
else
if
(
pQueryAttr
->
pExpr2
!=
NULL
)
{
pEx
=
pQueryAttr
->
pExpr2
;
num
=
pQueryAttr
->
numOfExpr2
;
}
if
(
num
<
pQueryAttr
->
numOfOutput
)
{
}
else
{
pEx
=
pQueryAttr
->
pExpr1
;
num
=
pQueryAttr
->
numOfOutput
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录