Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
d7f756b5
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看板
提交
d7f756b5
编写于
12月 31, 2021
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/feature/vnode' into feature/qnode
上级
953ef456
5ee6cbd4
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
118 addition
and
33 deletion
+118
-33
include/common/tmsg.h
include/common/tmsg.h
+9
-9
include/util/freelist.h
include/util/freelist.h
+59
-0
source/dnode/vnode/impl/src/vnodeQuery.c
source/dnode/vnode/impl/src/vnodeQuery.c
+26
-24
source/util/test/CMakeLists.txt
source/util/test/CMakeLists.txt
+8
-0
source/util/test/freelistTest.cpp
source/util/test/freelistTest.cpp
+16
-0
未找到文件。
include/common/tmsg.h
浏览文件 @
d7f756b5
...
...
@@ -356,9 +356,9 @@ typedef struct SEpSet {
}
SEpSet
;
static
FORCE_INLINE
int
taosEncodeSEpSet
(
void
**
buf
,
const
SEpSet
*
pEp
)
{
if
(
buf
==
NULL
)
return
sizeof
(
SEpSet
);
if
(
buf
==
NULL
)
return
sizeof
(
SEpSet
);
memcpy
(
buf
,
pEp
,
sizeof
(
SEpSet
));
//TODO: endian conversion
//
TODO: endian conversion
return
sizeof
(
SEpSet
);
}
...
...
@@ -1124,10 +1124,10 @@ typedef struct STaskDropRsp {
}
STaskDropRsp
;
typedef
struct
{
int8_t
igExists
;
char
*
name
;
char
*
physicalPlan
;
char
*
logicalPlan
;
int8_t
igExists
;
char
*
name
;
char
*
physicalPlan
;
char
*
logicalPlan
;
}
SCMCreateTopicReq
;
static
FORCE_INLINE
int
tSerializeSCMCreateTopicReq
(
void
**
buf
,
const
SCMCreateTopicReq
*
pReq
)
{
...
...
@@ -1163,8 +1163,8 @@ static FORCE_INLINE void* tDeserializeSCMCreateTopicRsp(void* buf, SCMCreateTopi
}
typedef
struct
{
char
*
topicName
;
char
*
consumerGroup
;
char
*
topicName
;
char
*
consumerGroup
;
int64_t
consumerId
;
}
SCMSubscribeReq
;
...
...
@@ -1185,7 +1185,7 @@ static FORCE_INLINE void* tDeserializeSCMSubscribeReq(void* buf, SCMSubscribeReq
typedef
struct
{
int32_t
vgId
;
SEpSet
pEpSet
;
SEpSet
pEpSet
;
}
SCMSubscribeRsp
;
static
FORCE_INLINE
int
tSerializeSCMSubscribeRsp
(
void
**
buf
,
const
SCMSubscribeRsp
*
pRsp
)
{
...
...
include/util/freelist.h
0 → 100644
浏览文件 @
d7f756b5
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TD_UTIL_FREELIST_H_
#define _TD_UTIL_FREELIST_H_
#include "os.h"
#include "tlist.h"
#ifdef __cplusplus
extern
"C"
{
#endif
struct
SFreeListNode
{
TD_SLIST_NODE
(
SFreeListNode
);
char
payload
[];
};
typedef
TD_SLIST
(
SFreeListNode
)
SFreeList
;
#define TFL_MALLOC(SIZE, LIST) \
({ \
void *ptr = malloc((SIZE) + sizeof(struct SFreeListNode)); \
if (ptr) { \
TD_SLIST_PUSH((LIST), (struct SFreeListNode *)ptr); \
ptr = ((struct SFreeListNode *)ptr)->payload; \
} \
ptr; \
})
#define tFreeListInit(pFL) TD_SLIST_INIT(pFL)
static
FORCE_INLINE
void
tFreeListClear
(
SFreeList
*
pFL
)
{
struct
SFreeListNode
*
pNode
;
for
(;;)
{
pNode
=
TD_SLIST_HEAD
(
pFL
);
if
(
pNode
==
NULL
)
break
;
TD_SLIST_POP
(
pFL
);
free
(
pNode
);
}
}
#ifdef __cplusplus
}
#endif
#endif
/*_TD_UTIL_FREELIST_H_*/
\ No newline at end of file
source/dnode/vnode/impl/src/vnodeQuery.c
浏览文件 @
d7f756b5
...
...
@@ -17,7 +17,7 @@
#include "vnodeDef.h"
static
int32_t
vnodeGetTableList
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
);
static
int
vnodeGetTableMeta
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
static
int
vnodeGetTableMeta
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
,
SRpcMsg
**
pRsp
);
int
vnodeQueryOpen
(
SVnode
*
pVnode
)
{
return
qWorkerInit
(
NULL
,
&
pVnode
->
pQuery
);
}
...
...
@@ -43,7 +43,7 @@ int vnodeProcessFetchReq(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
return
qWorkerProcessShowMsg
(
pVnode
,
pVnode
->
pQuery
,
pMsg
);
case
TDMT_VND_SHOW_TABLES_FETCH
:
return
vnodeGetTableList
(
pVnode
,
pMsg
);
// return qWorkerProcessShowFetchMsg(pVnode->pMeta, pVnode->pQuery, pMsg);
// return qWorkerProcessShowFetchMsg(pVnode->pMeta, pVnode->pQuery, pMsg);
case
TDMT_VND_TABLE_META
:
return
vnodeGetTableMeta
(
pVnode
,
pMsg
,
pRsp
);
default:
...
...
@@ -62,16 +62,17 @@ static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
SSchemaWrapper
*
pSW
;
STableMetaMsg
*
pTbMetaMsg
;
SSchema
*
pTagSchema
;
SRpcMsg
rpcMsg
;
pTbCfg
=
metaGetTbInfoByName
(
pVnode
->
pMeta
,
pReq
->
tableFname
,
&
uid
);
if
(
pTbCfg
==
NULL
)
{
return
-
1
;
goto
_exit
;
}
if
(
pTbCfg
->
type
==
META_CHILD_TABLE
)
{
pStbCfg
=
metaGetTbInfoByUid
(
pVnode
->
pMeta
,
pTbCfg
->
ctbCfg
.
suid
);
if
(
pStbCfg
==
NULL
)
{
return
-
1
;
goto
_exit
;
}
pSW
=
metaGetTableSchema
(
pVnode
->
pMeta
,
pTbCfg
->
ctbCfg
.
suid
,
0
,
true
);
...
...
@@ -94,7 +95,7 @@ static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
int
msgLen
=
sizeof
(
STableMetaMsg
)
+
sizeof
(
SSchema
)
*
(
nCols
+
nTagCols
);
pTbMetaMsg
=
(
STableMetaMsg
*
)
rpcMallocCont
(
msgLen
);
if
(
pTbMetaMsg
==
NULL
)
{
return
-
1
;
goto
_exit
;
}
strcpy
(
pTbMetaMsg
->
tbFname
,
pTbCfg
->
name
);
...
...
@@ -119,13 +120,13 @@ static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
pSch
->
bytes
=
htonl
(
pSch
->
bytes
);
}
SRpcMsg
rpcMsg
=
{
.
handle
=
pMsg
->
handle
,
.
ahandle
=
pMsg
->
ahandle
,
.
pCont
=
pTbMetaMsg
,
.
contLen
=
msgLen
,
.
code
=
0
,
}
;
_exit:
rpcMsg
.
handle
=
pMsg
->
handle
;
rpcMsg
.
ahandle
=
pMsg
->
ahandle
;
rpcMsg
.
pCont
=
pTbMetaMsg
;
rpcMsg
.
contLen
=
msgLen
;
rpcMsg
.
code
=
0
;
rpcSendResponse
(
&
rpcMsg
);
...
...
@@ -138,10 +139,10 @@ static int vnodeGetTableMeta(SVnode *pVnode, SRpcMsg *pMsg, SRpcMsg **pRsp) {
* @param pRsp
*/
static
int32_t
vnodeGetTableList
(
SVnode
*
pVnode
,
SRpcMsg
*
pMsg
)
{
SMTbCursor
*
pCur
=
metaOpenTbCursor
(
pVnode
->
pMeta
);
SArray
*
pArray
=
taosArrayInit
(
10
,
POINTER_BYTES
);
SMTbCursor
*
pCur
=
metaOpenTbCursor
(
pVnode
->
pMeta
);
SArray
*
pArray
=
taosArrayInit
(
10
,
POINTER_BYTES
);
char
*
name
=
NULL
;
char
*
name
=
NULL
;
int32_t
totalLen
=
0
;
while
((
name
=
metaTbCursorNext
(
pCur
))
!=
NULL
)
{
taosArrayPush
(
pArray
,
&
name
);
...
...
@@ -150,18 +151,19 @@ static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg) {
metaCloseTbCursor
(
pCur
);
int32_t
rowLen
=
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
)
+
8
+
2
+
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
)
+
8
+
4
;
int32_t
numOfTables
=
(
int32_t
)
taosArrayGetSize
(
pArray
);
int32_t
rowLen
=
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
)
+
8
+
2
+
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
)
+
8
+
4
;
int32_t
numOfTables
=
(
int32_t
)
taosArrayGetSize
(
pArray
);
int32_t
payloadLen
=
rowLen
*
numOfTables
;
// SVShowTablesFetchReq *pFetchReq = pMsg->pCont;
// SVShowTablesFetchReq *pFetchReq = pMsg->pCont;
SVShowTablesFetchRsp
*
pFetchRsp
=
(
SVShowTablesFetchRsp
*
)
rpcMallocCont
(
sizeof
(
SVShowTablesFetchRsp
)
+
payloadLen
);
memset
(
pFetchRsp
,
0
,
sizeof
(
struct
SVShowTablesFetchRsp
)
+
payloadLen
);
char
*
p
=
pFetchRsp
->
data
;
for
(
int32_t
i
=
0
;
i
<
numOfTables
;
++
i
)
{
char
*
n
=
taosArrayGetP
(
pArray
,
i
);
char
*
p
=
pFetchRsp
->
data
;
for
(
int32_t
i
=
0
;
i
<
numOfTables
;
++
i
)
{
char
*
n
=
taosArrayGetP
(
pArray
,
i
);
STR_TO_VARSTR
(
p
,
n
);
p
+=
(
TSDB_TABLE_NAME_LEN
+
VARSTR_HEADER_SIZE
);
...
...
@@ -171,11 +173,11 @@ static int32_t vnodeGetTableList(SVnode *pVnode, SRpcMsg *pMsg) {
pFetchRsp
->
precision
=
0
;
SRpcMsg
rpcMsg
=
{
.
handle
=
pMsg
->
handle
,
.
handle
=
pMsg
->
handle
,
.
ahandle
=
pMsg
->
ahandle
,
.
pCont
=
pFetchRsp
,
.
pCont
=
pFetchRsp
,
.
contLen
=
sizeof
(
SVShowTablesFetchRsp
)
+
payloadLen
,
.
code
=
0
,
.
code
=
0
,
};
rpcSendResponse
(
&
rpcMsg
);
...
...
source/util/test/CMakeLists.txt
浏览文件 @
d7f756b5
...
...
@@ -33,4 +33,12 @@ ENDIF()
INCLUDE_DIRECTORIES
(
${
TD_COMMUNITY_DIR
}
/src/util/inc
)
# freelistTest
add_executable
(
freelistTest
""
)
target_sources
(
freelistTest
PRIVATE
"freelistTest.cpp"
)
target_link_libraries
(
freelistTest os util gtest gtest_main
)
source/util/test/freelistTest.cpp
0 → 100644
浏览文件 @
d7f756b5
#include "gtest/gtest.h"
#include "freelist.h"
TEST
(
TD_UTIL_FREELIST_TEST
,
simple_test
)
{
SFreeList
fl
;
tFreeListInit
(
&
fl
);
for
(
size_t
i
=
0
;
i
<
1000
;
i
++
)
{
void
*
ptr
=
TFL_MALLOC
(
1024
,
&
fl
);
GTEST_ASSERT_NE
(
ptr
,
nullptr
);
}
tFreeListClear
(
&
fl
);
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录