Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
1e9b417f
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看板
提交
1e9b417f
编写于
3月 10, 2022
作者:
X
Xiaoyu Wang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TD-13747 deal memory leaks
上级
87c87987
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
11 deletion
+35
-11
source/libs/nodes/src/nodesUtilFuncs.c
source/libs/nodes/src/nodesUtilFuncs.c
+11
-0
source/libs/parser/src/parTranslater.c
source/libs/parser/src/parTranslater.c
+24
-11
未找到文件。
source/libs/nodes/src/nodesUtilFuncs.c
浏览文件 @
1e9b417f
...
...
@@ -217,6 +217,17 @@ static EDealRes destroyNode(SNode** pNode, void* pContext) {
nodesDestroyNode
(
pStmt
->
pSlimit
);
break
;
}
case
QUERY_NODE_VNODE_MODIF_STMT
:
{
SVnodeModifOpStmt
*
pStmt
=
(
SVnodeModifOpStmt
*
)
*
pNode
;
size_t
size
=
taosArrayGetSize
(
pStmt
->
pDataBlocks
);
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
SVgDataBlocks
*
pVg
=
taosArrayGetP
(
pStmt
->
pDataBlocks
,
i
);
tfree
(
pVg
->
pData
);
tfree
(
pVg
);
}
taosArrayDestroy
(
pStmt
->
pDataBlocks
);
break
;
}
case
QUERY_NODE_CREATE_TABLE_STMT
:
{
SCreateTableStmt
*
pStmt
=
(
SCreateTableStmt
*
)
*
pNode
;
nodesDestroyList
(
pStmt
->
pCols
);
...
...
source/libs/parser/src/parTranslater.c
浏览文件 @
1e9b417f
...
...
@@ -847,6 +847,7 @@ static int32_t translateCreateSuperTable(STranslateContext* pCxt, SCreateTableSt
pCxt
->
pCmdMsg
=
malloc
(
sizeof
(
SCmdMsgInfo
));
if
(
NULL
==
pCxt
->
pCmdMsg
)
{
tFreeSMCreateStbReq
(
&
createReq
);
return
TSDB_CODE_OUT_OF_MEMORY
;
}
pCxt
->
pCmdMsg
->
epSet
=
pCxt
->
pParseCxt
->
mgmtEpSet
;
...
...
@@ -854,10 +855,12 @@ static int32_t translateCreateSuperTable(STranslateContext* pCxt, SCreateTableSt
pCxt
->
pCmdMsg
->
msgLen
=
tSerializeSMCreateStbReq
(
NULL
,
0
,
&
createReq
);
pCxt
->
pCmdMsg
->
pMsg
=
malloc
(
pCxt
->
pCmdMsg
->
msgLen
);
if
(
NULL
==
pCxt
->
pCmdMsg
->
pMsg
)
{
tFreeSMCreateStbReq
(
&
createReq
);
return
TSDB_CODE_OUT_OF_MEMORY
;
}
tSerializeSMCreateStbReq
(
pCxt
->
pCmdMsg
->
pMsg
,
pCxt
->
pCmdMsg
->
msgLen
,
&
createReq
);
tFreeSMCreateStbReq
(
&
createReq
);
return
TSDB_CODE_SUCCESS
;
}
...
...
@@ -1211,14 +1214,12 @@ static int32_t setReslutSchema(STranslateContext* pCxt, SQuery* pQuery) {
static
void
destroyTranslateContext
(
STranslateContext
*
pCxt
)
{
if
(
NULL
!=
pCxt
->
pNsLevel
)
{
}
size_t
size
=
taosArrayGetSize
(
pCxt
->
pNsLevel
);
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
taosArrayDestroy
(
taosArrayGetP
(
pCxt
->
pNsLevel
,
i
));
size_t
size
=
taosArrayGetSize
(
pCxt
->
pNsLevel
);
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
taosArrayDestroy
(
taosArrayGetP
(
pCxt
->
pNsLevel
,
i
));
}
taosArrayDestroy
(
pCxt
->
pNsLevel
);
}
taosArrayDestroy
(
pCxt
->
pNsLevel
);
if
(
NULL
!=
pCxt
->
pCmdMsg
)
{
tfree
(
pCxt
->
pCmdMsg
->
pMsg
);
...
...
@@ -1306,8 +1307,6 @@ static void destroyCreateTbReqBatch(SVgroupTablesBatch* pTbBatch) {
tfree
(
pTableReq
->
ntbCfg
.
pSchema
);
}
else
if
(
pTableReq
->
type
==
TSDB_CHILD_TABLE
)
{
tfree
(
pTableReq
->
ctbCfg
.
pTag
);
}
else
{
assert
(
0
);
}
}
...
...
@@ -1333,6 +1332,16 @@ static int32_t rewriteToVnodeModifOpStmt(SQuery* pQuery, SArray* pBufArray) {
return
TSDB_CODE_SUCCESS
;
}
static
void
destroyCreateTbReqArray
(
SArray
*
pArray
)
{
size_t
size
=
taosArrayGetSize
(
pArray
);
for
(
size_t
i
=
0
;
i
<
size
;
++
i
)
{
SVgDataBlocks
*
pVg
=
taosArrayGetP
(
pArray
,
i
);
tfree
(
pVg
->
pData
);
tfree
(
pVg
);
}
taosArrayDestroy
(
pArray
);
}
static
int32_t
buildCreateTableDataBlock
(
const
SCreateTableStmt
*
pStmt
,
const
SVgroupInfo
*
pInfo
,
SArray
**
pBufArray
)
{
*
pBufArray
=
taosArrayInit
(
1
,
POINTER_BYTES
);
if
(
NULL
==
*
pBufArray
)
{
...
...
@@ -1344,9 +1353,10 @@ static int32_t buildCreateTableDataBlock(const SCreateTableStmt* pStmt, const SV
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
serializeVgroupTablesBatch
(
&
tbatch
,
*
pBufArray
);
}
destroyCreateTbReqBatch
(
&
tbatch
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
// todo :
destroyCreateTbReqArray(*pBufArray);
destroyCreateTbReqArray
(
*
pBufArray
);
}
return
code
;
}
...
...
@@ -1362,6 +1372,9 @@ static int32_t rewriteCreateTable(STranslateContext* pCxt, SQuery* pQuery) {
}
if
(
TSDB_CODE_SUCCESS
==
code
)
{
code
=
rewriteToVnodeModifOpStmt
(
pQuery
,
pBufArray
);
if
(
TSDB_CODE_SUCCESS
!=
code
)
{
destroyCreateTbReqArray
(
pBufArray
);
}
}
return
code
;
...
...
@@ -1573,10 +1586,10 @@ static int32_t rewriteCreateMultiTable(STranslateContext* pCxt, SQuery* pQuery)
}
SArray
*
pBufArray
=
serializeVgroupsTablesBatch
(
pVgroupHashmap
);
taosHashCleanup
(
pVgroupHashmap
);
if
(
NULL
==
pBufArray
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
taosHashCleanup
(
pVgroupHashmap
);
return
rewriteToVnodeModifOpStmt
(
pQuery
,
pBufArray
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录