Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
8a8b7d71
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看板
提交
8a8b7d71
编写于
10月 27, 2021
作者:
G
Ganlin Zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[schemaless] removed line protocol timestamp appendix
上级
83a7f5ba
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
52 addition
and
53 deletion
+52
-53
src/client/src/tscParseLineProtocol.c
src/client/src/tscParseLineProtocol.c
+52
-53
未找到文件。
src/client/src/tscParseLineProtocol.c
浏览文件 @
8a8b7d71
...
...
@@ -1435,58 +1435,65 @@ static bool isNchar(char *pVal, uint16_t len) {
return
false
;
}
static
bool
isTimeStamp
(
char
*
pVal
,
uint16_t
len
,
SMLTimeStampType
*
tsType
,
SSmlLinesInfo
*
info
)
{
static
int32_t
isTimeStamp
(
char
*
pVal
,
uint16_t
len
,
SMLTimeStampType
*
tsType
,
SSmlLinesInfo
*
info
)
{
if
(
len
==
0
)
{
return
true
;
return
TSDB_CODE_SUCCESS
;
}
if
((
len
==
1
)
&&
pVal
[
0
]
==
'0'
)
{
*
tsType
=
SML_TIME_STAMP_NOW
;
return
true
;
return
TSDB_CODE_SUCCESS
;
}
//Default no appendix
if
(
isdigit
(
pVal
[
len
-
1
])
&&
isdigit
(
pVal
[
len
-
2
]))
{
if
(
info
->
protocol
==
TSDB_SML_LINE_PROTOCOL
)
{
if
(
info
->
tsType
!=
SML_TIME_STAMP_NOT_CONFIGURED
)
{
*
tsType
=
info
->
tsType
;
}
else
{
*
tsType
=
SML_TIME_STAMP_NANO_SECONDS
;
}
}
else
if
(
info
->
protocol
==
TSDB_SML_TELNET_PROTOCOL
)
{
if
(
len
==
SML_TIMESTAMP_SECOND_DIGITS
)
{
*
tsType
=
SML_TIME_STAMP_SECONDS
;
}
else
if
(
len
==
SML_TIMESTAMP_MILLI_SECOND_DIGITS
)
{
*
tsType
=
SML_TIME_STAMP_MILLI_SECONDS
;
}
else
{
return
TSDB_CODE_TSC_INVALID_TIME_STAMP
;
}
for
(
int
i
=
0
;
i
<
len
;
++
i
)
{
if
(
!
isdigit
(
pVal
[
i
]))
{
return
TSDB_CODE_TSC_INVALID_TIME_STAMP
;
}
return
true
;
}
if
(
pVal
[
len
-
1
]
==
's'
)
{
switch
(
pVal
[
len
-
2
])
{
case
'm'
:
*
tsType
=
SML_TIME_STAMP_MILLI_SECONDS
;
break
;
case
'u'
:
*
tsType
=
SML_TIME_STAMP_MICRO_SECONDS
;
break
;
case
'n'
:
*
tsType
=
SML_TIME_STAMP_NANO_SECONDS
;
break
;
default:
if
(
isdigit
(
pVal
[
len
-
2
]))
{
*
tsType
=
SML_TIME_STAMP_SECONDS
;
break
;
}
else
{
return
false
;
}
/* For InfluxDB line protocol use user passed timestamp precision
* For OpenTSDB protocols only 10 digit(seconds) or 13 digits(milliseconds)
* precision allowed
*/
if
(
info
->
protocol
==
TSDB_SML_LINE_PROTOCOL
)
{
if
(
info
->
tsType
!=
SML_TIME_STAMP_NOT_CONFIGURED
)
{
*
tsType
=
info
->
tsType
;
}
else
{
*
tsType
=
SML_TIME_STAMP_NANO_SECONDS
;
}
}
else
if
(
info
->
protocol
==
TSDB_SML_TELNET_PROTOCOL
)
{
if
(
len
==
SML_TIMESTAMP_SECOND_DIGITS
)
{
*
tsType
=
SML_TIME_STAMP_SECONDS
;
}
else
if
(
len
==
SML_TIMESTAMP_MILLI_SECOND_DIGITS
)
{
*
tsType
=
SML_TIME_STAMP_MILLI_SECONDS
;
}
else
{
return
TSDB_CODE_TSC_INVALID_TIME_STAMP
;
}
//printf("Type is timestamp(%s)\n", pVal);
return
true
;
}
return
false
;
return
TSDB_CODE_SUCCESS
;
//if (pVal[len - 1] == 's') {
// switch (pVal[len - 2]) {
// case 'm':
// *tsType = SML_TIME_STAMP_MILLI_SECONDS;
// break;
// case 'u':
// *tsType = SML_TIME_STAMP_MICRO_SECONDS;
// break;
// case 'n':
// *tsType = SML_TIME_STAMP_NANO_SECONDS;
// break;
// default:
// if (isdigit(pVal[len - 2])) {
// *tsType = SML_TIME_STAMP_SECONDS;
// break;
// } else {
// return false;
// }
// }
// //printf("Type is timestamp(%s)\n", pVal);
// return true;
//}
//return false;
}
static
bool
convertStrToNumber
(
TAOS_SML_KV
*
pVal
,
char
*
str
,
SSmlLinesInfo
*
info
)
{
...
...
@@ -1750,14 +1757,6 @@ bool convertSmlValueType(TAOS_SML_KV *pVal, char *value,
static
int32_t
getTimeStampValue
(
char
*
value
,
uint16_t
len
,
SMLTimeStampType
type
,
int64_t
*
ts
,
SSmlLinesInfo
*
info
)
{
if
(
len
>=
2
)
{
for
(
int
i
=
0
;
i
<
len
-
2
;
++
i
)
{
if
(
!
isdigit
(
value
[
i
]))
{
return
TSDB_CODE_TSC_INVALID_TIME_STAMP
;
}
}
}
//No appendix or no timestamp given (len = 0)
if
(
len
!=
0
&&
type
!=
SML_TIME_STAMP_NOW
)
{
*
ts
=
(
int64_t
)
strtoll
(
value
,
NULL
,
10
);
...
...
@@ -1806,13 +1805,13 @@ int32_t convertSmlTimeStamp(TAOS_SML_KV *pVal, char *value,
SMLTimeStampType
type
;
int64_t
tsVal
;
strntolower_s
(
value
,
value
,
len
);
if
(
!
isTimeStamp
(
value
,
len
,
&
type
,
info
)
)
{
return
TSDB_CODE_TSC_INVALID_TIME_STAMP
;
ret
=
isTimeStamp
(
value
,
len
,
&
type
,
info
);
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
ret
=
getTimeStampValue
(
value
,
len
,
type
,
&
tsVal
,
info
);
if
(
ret
)
{
if
(
ret
!=
TSDB_CODE_SUCCESS
)
{
return
ret
;
}
tscDebug
(
"SML:0x%"
PRIx64
"Timestamp after conversion:%"
PRId64
,
info
->
id
,
tsVal
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录