Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
3cf5fe8f
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看板
提交
3cf5fe8f
编写于
1月 05, 2022
作者:
S
shenglian zhou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
(query,insert,other,connector,tools):use tlv for sversion/tversion for message compatibility
上级
eca46bda
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
5 deletion
+28
-5
src/client/src/tscServer.c
src/client/src/tscServer.c
+12
-2
src/inc/taosmsg.h
src/inc/taosmsg.h
+2
-0
src/query/src/queryMain.c
src/query/src/queryMain.c
+14
-3
未找到文件。
src/client/src/tscServer.c
浏览文件 @
3cf5fe8f
...
...
@@ -2755,8 +2755,6 @@ int tscProcessRetrieveRspFromNode(SSqlObj *pSql) {
pRes
->
numOfRows
=
htonl
(
pRetrieve
->
numOfRows
);
pRes
->
precision
=
htons
(
pRetrieve
->
precision
);
pRes
->
sVersion
=
htonl
(
pRetrieve
->
sVersion
);
pRes
->
tVersion
=
htonl
(
pRetrieve
->
tVersion
);
pRes
->
offset
=
htobe64
(
pRetrieve
->
offset
);
pRes
->
useconds
=
htobe64
(
pRetrieve
->
useconds
);
pRes
->
completed
=
(
pRetrieve
->
completed
==
1
);
...
...
@@ -2807,6 +2805,18 @@ int tscProcessRetrieveRspFromNode(SSqlObj *pSql) {
tscDebug
(
"0x%"
PRIx64
" numOfRows:%d, offset:%"
PRId64
", complete:%d, qId:0x%"
PRIx64
,
pSql
->
self
,
pRes
->
numOfRows
,
pRes
->
offset
,
pRes
->
completed
,
pRes
->
qId
);
if
(
pRetrieve
->
extend
==
1
)
{
STLV
*
tlv
=
(
STLV
*
)(
pRetrieve
->
data
+
ntohl
(
pRetrieve
->
compLen
));
while
(
tlv
->
type
!=
TLV_TYPE_END_MARK
)
{
switch
(
tlv
->
type
)
{
case
TLV_TYPE_META_VERSION
:
pRes
->
sVersion
=
ntohl
(
*
(
int32_t
*
)
tlv
->
value
);
pRes
->
tVersion
=
ntohl
(
*
(
int32_t
*
)(
tlv
->
value
+
sizeof
(
int32_t
)));
break
;
}
tlv
=
(
STLV
*
)
((
char
*
)
tlv
+
sizeof
(
STLV
)
+
ntohl
(
tlv
->
len
));
}
}
return
0
;
}
...
...
src/inc/taosmsg.h
浏览文件 @
3cf5fe8f
...
...
@@ -980,7 +980,9 @@ typedef struct {
}
STLV
;
enum
{
TLV_TYPE_END_MARK
=
-
1
,
TLV_TYPE_DUMMY
=
1
,
TLV_TYPE_META_VERSION
=
2
,
};
#pragma pack(pop)
...
...
src/query/src/queryMain.c
浏览文件 @
3cf5fe8f
...
...
@@ -391,7 +391,8 @@ int32_t qDumpRetrieveResult(qinfo_t qinfo, SRetrieveTableRsp **pRsp, int32_t *co
size
+=
sizeof
(
STableIdInfo
)
*
taosHashGetSize
(
pRuntimeEnv
->
pTableRetrieveTsMap
);
*
contLen
=
(
int32_t
)(
size
+
sizeof
(
SRetrieveTableRsp
));
*
contLen
+=
(
sizeof
(
STLV
)
+
sizeof
(
int32_t
)
+
sizeof
(
int32_t
));
//tlv meta version
*
contLen
+=
sizeof
(
STLV
);
// tlv end mark
// current solution only avoid crash, but cannot return error code to client
*
pRsp
=
(
SRetrieveTableRsp
*
)
rpcMallocCont
(
*
contLen
);
if
(
*
pRsp
==
NULL
)
{
...
...
@@ -409,8 +410,6 @@ int32_t qDumpRetrieveResult(qinfo_t qinfo, SRetrieveTableRsp **pRsp, int32_t *co
}
(
*
pRsp
)
->
precision
=
htons
(
pQueryAttr
->
precision
);
(
*
pRsp
)
->
sVersion
=
htonl
(
pQueryAttr
->
tableGroupInfo
.
sVersion
);
(
*
pRsp
)
->
tVersion
=
htonl
(
pQueryAttr
->
tableGroupInfo
.
tVersion
);
(
*
pRsp
)
->
compressed
=
(
int8_t
)((
tsCompressColData
!=
-
1
)
&&
checkNeedToCompressQueryCol
(
pQInfo
));
if
(
GET_NUM_OF_RESULTS
(
&
(
pQInfo
->
runtimeEnv
))
>
0
&&
pQInfo
->
code
==
TSDB_CODE_SUCCESS
)
{
...
...
@@ -446,6 +445,18 @@ int32_t qDumpRetrieveResult(qinfo_t qinfo, SRetrieveTableRsp **pRsp, int32_t *co
qDebug
(
"QInfo:0x%"
PRIx64
" has more results to retrieve"
,
pQInfo
->
qId
);
}
(
*
pRsp
)
->
extend
=
1
;
STLV
*
tlv
=
(
STLV
*
)((
*
pRsp
)
->
data
+
compLen
);
tlv
->
type
=
htons
(
TLV_TYPE_META_VERSION
);
tlv
->
len
=
htonl
(
sizeof
(
int32_t
)
+
sizeof
(
int32_t
));
int32_t
sVersion
=
htonl
(
pQueryAttr
->
tableGroupInfo
.
sVersion
);
int32_t
tVersion
=
htonl
(
pQueryAttr
->
tableGroupInfo
.
tVersion
);
memcpy
(
tlv
->
value
,
&
sVersion
,
sizeof
(
int32_t
));
memcpy
(
tlv
->
value
+
sizeof
(
int32_t
),
&
tVersion
,
sizeof
(
int32_t
));
STLV
*
tlvEnd
=
(
STLV
*
)((
char
*
)
tlv
+
sizeof
(
STLV
)
+
ntohl
(
tlv
->
len
));
tlvEnd
->
type
=
htons
(
TLV_TYPE_END_MARK
);
tlvEnd
->
len
=
0
;
// the memory should be freed if the code of pQInfo is not TSDB_CODE_SUCCESS
if
(
pQInfo
->
code
!=
TSDB_CODE_SUCCESS
)
{
rpcFreeCont
(
*
pRsp
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录