Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
f6b700ff
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f6b700ff
编写于
5月 31, 2022
作者:
wmmhello
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:add new logic for new tag format
上级
d95ec693
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
15 addition
and
11 deletion
+15
-11
source/common/src/tdataformat.c
source/common/src/tdataformat.c
+1
-1
source/libs/scalar/src/sclvector.c
source/libs/scalar/src/sclvector.c
+13
-9
source/libs/scalar/test/scalar/scalarTests.cpp
source/libs/scalar/test/scalar/scalarTests.cpp
+1
-1
未找到文件。
source/common/src/tdataformat.c
浏览文件 @
f6b700ff
...
...
@@ -672,8 +672,8 @@ static int32_t tGetTagVal(uint8_t *p, STagVal *pTagVal, int8_t isJson) {
if
(
IS_VAR_DATA_TYPE
(
pTagVal
->
type
))
{
n
+=
tGetBinary
(
p
+
n
,
&
pTagVal
->
pData
,
&
pTagVal
->
nData
);
}
else
{
n
+=
tDataTypes
[
pTagVal
->
type
].
bytes
;
memcpy
(
&
(
pTagVal
->
i64
),
p
+
n
,
tDataTypes
[
pTagVal
->
type
].
bytes
);
n
+=
tDataTypes
[
pTagVal
->
type
].
bytes
;
}
return
n
;
...
...
source/libs/scalar/src/sclvector.c
浏览文件 @
f6b700ff
...
...
@@ -922,12 +922,13 @@ static void doReleaseVec(SColumnInfoData* pCol, int32_t type) {
}
}
STagVal
*
getJsonValue
(
char
*
json
,
STagVal
*
tagVal
)
{
bool
find
=
tTagGet
(((
const
STag
*
)
json
),
tagVal
);
// json value is null and not exist is different
if
(
!
find
){
return
NULL
;
STagVal
getJsonValue
(
char
*
json
,
char
*
key
,
bool
*
isExist
)
{
STagVal
val
=
{.
pKey
=
key
};
bool
find
=
tTagGet
(((
const
STag
*
)
json
),
&
val
);
// json value is null and not exist is different
if
(
isExist
){
*
isExist
=
find
;
}
return
tagV
al
;
return
v
al
;
}
void
vectorJsonArrow
(
SScalarParam
*
pLeft
,
SScalarParam
*
pRight
,
SScalarParam
*
pOut
,
int32_t
_ord
)
{
...
...
@@ -939,6 +940,8 @@ void vectorJsonArrow(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pO
pOut
->
numOfRows
=
TMAX
(
pLeft
->
numOfRows
,
pRight
->
numOfRows
);
char
*
pRightData
=
colDataGetVarData
(
pRight
->
columnData
,
0
);
char
*
jsonKey
=
taosMemoryCalloc
(
1
,
varDataLen
(
pRightData
)
+
1
);
memcpy
(
jsonKey
,
varDataVal
(
pRightData
),
varDataLen
(
pRightData
));
for
(;
i
>=
0
&&
i
<
pLeft
->
numOfRows
;
i
+=
step
)
{
if
(
colDataIsNull_var
(
pLeft
->
columnData
,
i
))
{
colDataSetNull_var
(
pOutputCol
,
i
);
...
...
@@ -946,14 +949,15 @@ void vectorJsonArrow(SScalarParam* pLeft, SScalarParam* pRight, SScalarParam *pO
continue
;
}
char
*
pLeftData
=
colDataGetVarData
(
pLeft
->
columnData
,
i
);
STagVal
val
=
{.
pKey
=
pRightData
}
;
STagVal
*
value
=
getJsonValue
(
pLeftData
,
&
val
);
char
*
data
=
tTagValToData
(
value
,
true
)
;
bool
isExist
=
false
;
STagVal
value
=
getJsonValue
(
pLeftData
,
jsonKey
,
&
isExist
);
char
*
data
=
isExist
?
tTagValToData
(
&
value
,
true
)
:
NULL
;
colDataAppend
(
pOutputCol
,
i
,
data
,
data
==
NULL
);
if
(
value
&&
IS_VAR_DATA_TYPE
(
value
->
type
)
&&
data
){
if
(
isExist
&&
IS_VAR_DATA_TYPE
(
value
.
type
)
&&
data
){
taosMemoryFree
(
data
);
}
}
taosMemoryFree
(
jsonKey
);
}
void
vectorMathAdd
(
SScalarParam
*
pLeft
,
SScalarParam
*
pRight
,
SScalarParam
*
pOut
,
int32_t
_ord
)
{
...
...
source/libs/scalar/test/scalar/scalarTests.cpp
浏览文件 @
f6b700ff
...
...
@@ -217,7 +217,7 @@ void scltMakeOpNode(SNode **pNode, EOperatorType opType, int32_t resType, SNode
SOperatorNode
*
onode
=
(
SOperatorNode
*
)
node
;
onode
->
node
.
resType
.
type
=
resType
;
onode
->
node
.
resType
.
bytes
=
tDataTypes
[
resType
].
bytes
;
onode
->
opType
=
opType
;
onode
->
pLeft
=
pLeft
;
onode
->
pRight
=
pRight
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录