Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e4552692
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
Star
22018
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看板
提交
e4552692
编写于
12月 03, 2022
作者:
D
dapan1121
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: memory leak and other issues
上级
e9bfe1d8
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
66 addition
and
22 deletion
+66
-22
source/client/src/clientStmt.c
source/client/src/clientStmt.c
+10
-5
source/common/src/tmsg.c
source/common/src/tmsg.c
+9
-4
source/libs/parser/src/parInsertStmt.c
source/libs/parser/src/parInsertStmt.c
+9
-1
source/libs/parser/src/parInsertUtil.c
source/libs/parser/src/parInsertUtil.c
+12
-1
source/libs/qcom/src/queryUtil.c
source/libs/qcom/src/queryUtil.c
+21
-8
source/libs/scheduler/src/schRemote.c
source/libs/scheduler/src/schRemote.c
+4
-2
source/util/src/tcompare.c
source/util/src/tcompare.c
+1
-1
未找到文件。
source/client/src/clientStmt.c
浏览文件 @
e4552692
...
...
@@ -307,13 +307,15 @@ int32_t stmtCleanExecInfo(STscStmt* pStmt, bool keepTable, bool deepClean) {
pIter
=
taosHashIterate
(
pStmt
->
exec
.
pBlockHash
,
pIter
);
}
if
(
!
keepTable
)
{
taosHashCleanup
(
pStmt
->
exec
.
pBlockHash
);
pStmt
->
exec
.
pBlockHash
=
NULL
;
if
(
keepTable
)
{
return
TSDB_CODE_SUCCESS
;
}
taosHashCleanup
(
pStmt
->
exec
.
pBlockHash
);
pStmt
->
exec
.
pBlockHash
=
NULL
;
tDestroySSubmitTbData
(
pStmt
->
exec
.
pCurrTbData
,
TSDB_MSG_FLG_
DE
CODE
);
pStmt
->
exec
.
pCurrTbData
=
NULL
;
tDestroySSubmitTbData
(
pStmt
->
exec
.
pCurrTbData
,
TSDB_MSG_FLG_
EN
CODE
);
taosMemoryFreeClear
(
pStmt
->
exec
.
pCurrTbData
)
;
STMT_ERR_RET
(
stmtCleanBindInfo
(
pStmt
));
...
...
@@ -875,6 +877,9 @@ int stmtExec(TAOS_STMT* stmt) {
if
(
STMT_TYPE_QUERY
==
pStmt
->
sql
.
type
)
{
launchQueryImpl
(
pStmt
->
exec
.
pRequest
,
pStmt
->
sql
.
pQuery
,
true
,
NULL
);
}
else
{
tDestroySSubmitTbData
(
pStmt
->
exec
.
pCurrTbData
,
TSDB_MSG_FLG_ENCODE
);
taosMemoryFreeClear
(
pStmt
->
exec
.
pCurrTbData
);
STMT_ERR_RET
(
qCloneCurrentTbData
(
pStmt
->
exec
.
pCurrBlock
,
&
pStmt
->
exec
.
pCurrTbData
));
STMT_ERR_RET
(
qBuildStmtOutput
(
pStmt
->
sql
.
pQuery
,
pStmt
->
sql
.
pVgHash
,
pStmt
->
exec
.
pBlockHash
));
...
...
source/common/src/tmsg.c
浏览文件 @
e4552692
...
...
@@ -6871,11 +6871,12 @@ void tDestroySSubmitTbData(SSubmitTbData *pTbData, int32_t flag) {
return
;
}
if
(
pTbData
->
pCreateTbReq
)
{
taosMemoryFree
(
pTbData
->
pCreateTbReq
);
}
if
(
flag
==
TSDB_MSG_FLG_ENCODE
)
{
if
(
pTbData
->
pCreateTbReq
)
{
tdDestroySVCreateTbReq
(
pTbData
->
pCreateTbReq
);
taosMemoryFree
(
pTbData
->
pCreateTbReq
);
}
if
(
pTbData
->
flags
&
SUBMIT_REQ_COLUMN_DATA_FORMAT
)
{
int32_t
nColData
=
TARRAY_SIZE
(
pTbData
->
aCol
);
SColData
*
aColData
=
(
SColData
*
)
TARRAY_DATA
(
pTbData
->
aCol
);
...
...
@@ -6894,6 +6895,10 @@ void tDestroySSubmitTbData(SSubmitTbData *pTbData, int32_t flag) {
taosArrayDestroy
(
pTbData
->
aRowP
);
}
}
else
if
(
flag
==
TSDB_MSG_FLG_DECODE
)
{
if
(
pTbData
->
pCreateTbReq
)
{
taosMemoryFree
(
pTbData
->
pCreateTbReq
);
}
if
(
pTbData
->
flags
&
SUBMIT_REQ_COLUMN_DATA_FORMAT
)
{
taosArrayDestroy
(
pTbData
->
aCol
);
}
else
{
...
...
source/libs/parser/src/parInsertStmt.c
浏览文件 @
e4552692
...
...
@@ -164,6 +164,14 @@ int32_t qBindStmtTagsValue(void* pBlock, void* boundTags, int64_t suid, const ch
goto
end
;
}
if
(
NULL
==
pDataBlock
->
pData
->
pCreateTbReq
)
{
pDataBlock
->
pData
->
pCreateTbReq
=
taosMemoryCalloc
(
1
,
sizeof
(
SVCreateTbReq
));
if
(
NULL
==
pDataBlock
->
pData
->
pCreateTbReq
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
goto
end
;
}
}
insBuildCreateTbReq
(
pDataBlock
->
pData
->
pCreateTbReq
,
tName
,
pTag
,
suid
,
sTableName
,
tagName
,
pDataBlock
->
pMeta
->
tableInfo
.
numOfTags
,
TSDB_DEFAULT_TABLE_TTL
);
end:
...
...
@@ -471,7 +479,7 @@ int32_t qRebuildStmtDataBlock(STableDataCxt** pDst, STableDataCxt* pSrc, uint64_
pBlock
->
pMeta
->
vgId
=
vgId
;
}
if
(
rebuildCreateTb
&&
pBlock
->
pData
->
pCreateTbReq
)
{
if
(
rebuildCreateTb
&&
NULL
==
pBlock
->
pData
->
pCreateTbReq
)
{
pBlock
->
pData
->
pCreateTbReq
=
taosMemoryCalloc
(
1
,
sizeof
(
SVCreateTbReq
));
if
(
NULL
==
pBlock
->
pData
->
pCreateTbReq
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
...
...
source/libs/parser/src/parInsertUtil.c
浏览文件 @
e4552692
...
...
@@ -1124,6 +1124,7 @@ void insDestroyVgroupDataCxt(SVgroupDataCxt* pVgCxt) {
}
tDestroySSubmitReq2
(
pVgCxt
->
pData
,
TSDB_MSG_FLG_ENCODE
);
taosMemoryFree
(
pVgCxt
->
pData
);
taosMemoryFree
(
pVgCxt
);
}
...
...
@@ -1240,6 +1241,16 @@ int32_t insMergeTableDataCxt(SHashObj* pTableHash, SArray** pVgDataBlocks) {
while
(
TSDB_CODE_SUCCESS
==
code
&&
NULL
!=
p
)
{
STableDataCxt
*
pTableCxt
=
*
(
STableDataCxt
**
)
p
;
if
(
colFormat
)
{
SColData
*
pCol
=
taosArrayGet
(
pTableCxt
->
pData
->
aCol
,
0
);
if
(
pCol
->
nVal
<=
0
)
{
p
=
taosHashIterate
(
pTableHash
,
p
);
continue
;
}
if
(
pTableCxt
->
pData
->
pCreateTbReq
)
{
pTableCxt
->
pData
->
flags
|=
SUBMIT_REQ_AUTO_CREATE_TABLE
;
}
taosArraySort
(
pTableCxt
->
pData
->
aCol
,
insColDataComp
);
tColDataSortMerge
(
pTableCxt
->
pData
->
aCol
);
...
...
@@ -1274,7 +1285,7 @@ int32_t insMergeTableDataCxt(SHashObj* pTableHash, SArray** pVgDataBlocks) {
if
(
TSDB_CODE_SUCCESS
==
code
)
{
*
pVgDataBlocks
=
pVgroupList
;
}
else
{
taosArrayDestroy
(
pVgroupList
);
insDestroyVgroupDataCxtList
(
pVgroupList
);
}
return
code
;
...
...
source/libs/qcom/src/queryUtil.c
浏览文件 @
e4552692
...
...
@@ -244,6 +244,7 @@ void destroyQueryExecRes(SExecResult* pRes) {
}
case
TDMT_VND_SUBMIT
:
{
tDestroySSubmitRsp2
((
SSubmitRsp2
*
)
pRes
->
res
,
TSDB_MSG_FLG_DECODE
);
taosMemoryFreeClear
(
pRes
->
res
);
break
;
}
case
TDMT_SCH_QUERY
:
...
...
@@ -499,27 +500,39 @@ int32_t cloneSVreateTbReq(SVCreateTbReq* pSrc, SVCreateTbReq** pDst) {
}
(
*
pDst
)
->
flags
=
pSrc
->
flags
;
(
*
pDst
)
->
name
=
strdup
(
pSrc
->
name
);
if
(
pSrc
->
name
)
{
(
*
pDst
)
->
name
=
strdup
(
pSrc
->
name
);
}
(
*
pDst
)
->
uid
=
pSrc
->
uid
;
(
*
pDst
)
->
ctime
=
pSrc
->
ctime
;
(
*
pDst
)
->
ttl
=
pSrc
->
ttl
;
(
*
pDst
)
->
commentLen
=
pSrc
->
commentLen
;
(
*
pDst
)
->
comment
=
strdup
(
pSrc
->
comment
);
if
(
pSrc
->
comment
)
{
(
*
pDst
)
->
comment
=
strdup
(
pSrc
->
comment
);
}
(
*
pDst
)
->
type
=
pSrc
->
type
;
if
(
pSrc
->
type
==
TSDB_CHILD_TABLE
)
{
(
*
pDst
)
->
ctb
.
stbName
=
strdup
(
pSrc
->
ctb
.
stbName
);
if
(
pSrc
->
ctb
.
stbName
)
{
(
*
pDst
)
->
ctb
.
stbName
=
strdup
(
pSrc
->
ctb
.
stbName
);
}
(
*
pDst
)
->
ctb
.
tagNum
=
pSrc
->
ctb
.
tagNum
;
(
*
pDst
)
->
ctb
.
suid
=
pSrc
->
ctb
.
suid
;
(
*
pDst
)
->
ctb
.
tagName
=
taosArrayDup
(
pSrc
->
ctb
.
tagName
,
NULL
);
if
(
pSrc
->
ctb
.
tagName
)
{
(
*
pDst
)
->
ctb
.
tagName
=
taosArrayDup
(
pSrc
->
ctb
.
tagName
,
NULL
);
}
STag
*
pTag
=
(
STag
*
)
pSrc
->
ctb
.
pTag
;
(
*
pDst
)
->
ctb
.
pTag
=
taosMemoryMalloc
(
pTag
->
len
);
memcpy
((
*
pDst
)
->
ctb
.
pTag
,
pTag
,
pTag
->
len
);
if
(
pTag
)
{
(
*
pDst
)
->
ctb
.
pTag
=
taosMemoryMalloc
(
pTag
->
len
);
memcpy
((
*
pDst
)
->
ctb
.
pTag
,
pTag
,
pTag
->
len
);
}
}
else
{
(
*
pDst
)
->
ntb
.
schemaRow
.
nCols
=
pSrc
->
ntb
.
schemaRow
.
nCols
;
(
*
pDst
)
->
ntb
.
schemaRow
.
version
=
pSrc
->
ntb
.
schemaRow
.
nCols
;
(
*
pDst
)
->
ntb
.
schemaRow
.
pSchema
=
taosMemoryMalloc
(
pSrc
->
ntb
.
schemaRow
.
nCols
*
sizeof
(
SSchema
));
memcpy
((
*
pDst
)
->
ntb
.
schemaRow
.
pSchema
,
pSrc
->
ntb
.
schemaRow
.
pSchema
,
pSrc
->
ntb
.
schemaRow
.
nCols
*
sizeof
(
SSchema
));
if
(
pSrc
->
ntb
.
schemaRow
.
nCols
>
0
&&
pSrc
->
ntb
.
schemaRow
.
pSchema
)
{
(
*
pDst
)
->
ntb
.
schemaRow
.
pSchema
=
taosMemoryMalloc
(
pSrc
->
ntb
.
schemaRow
.
nCols
*
sizeof
(
SSchema
));
memcpy
((
*
pDst
)
->
ntb
.
schemaRow
.
pSchema
,
pSrc
->
ntb
.
schemaRow
.
pSchema
,
pSrc
->
ntb
.
schemaRow
.
nCols
*
sizeof
(
SSchema
));
}
}
return
TSDB_CODE_SUCCESS
;
...
...
source/libs/scheduler/src/schRemote.c
浏览文件 @
e4552692
...
...
@@ -262,9 +262,11 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
SSubmitRsp2
*
rsp
=
taosMemoryMalloc
(
sizeof
(
*
rsp
));
tDecoderInit
(
&
coder
,
msg
,
msgSize
);
code
=
tDecodeSSubmitRsp2
(
&
coder
,
rsp
);
tDecoderClear
(
&
coder
);
if
(
code
)
{
SCH_TASK_ELOG
(
"tDecodeSSubmitRsp2 failed, code:%d"
,
code
);
tDestroySSubmitRsp2
(
rsp
,
TSDB_MSG_FLG_DECODE
);
taosMemoryFree
(
rsp
);
SCH_ERR_JRET
(
code
);
}
...
...
@@ -281,11 +283,10 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
if
(
sum
->
aCreateTbRsp
)
{
taosArrayAddAll
(
sum
->
aCreateTbRsp
,
rsp
->
aCreateTbRsp
);
taosArrayDestroy
(
rsp
->
aCreateTbRsp
);
taosMemoryFree
(
rsp
);
}
else
{
TSWAP
(
sum
->
aCreateTbRsp
,
rsp
->
aCreateTbRsp
);
taosMemoryFree
(
rsp
);
}
taosMemoryFree
(
rsp
);
}
else
{
pJob
->
execRes
.
res
=
rsp
;
pJob
->
execRes
.
msgType
=
TDMT_VND_SUBMIT
;
...
...
@@ -301,6 +302,7 @@ int32_t schHandleResponseMsg(SSchJob *pJob, SSchTask *pTask, int32_t execId, SDa
}
SCH_UNLOCK
(
SCH_WRITE
,
&
pJob
->
resLock
);
tDestroySSubmitRsp2
(
rsp
,
TSDB_MSG_FLG_DECODE
);
taosMemoryFree
(
rsp
);
}
}
...
...
source/util/src/tcompare.c
浏览文件 @
e4552692
...
...
@@ -1120,7 +1120,7 @@ int32_t WCSPatternMatch(const TdUcs4 *patterStr, const TdUcs4 *str, size_t size,
return
TSDB_PATTERN_NOMATCH
;
}
return
(
str
[
j
]
==
0
||
j
>=
size
)
?
TSDB_PATTERN_MATCH
:
TSDB_PATTERN_NOMATCH
;
return
(
j
>=
size
||
str
[
j
]
==
0
)
?
TSDB_PATTERN_MATCH
:
TSDB_PATTERN_NOMATCH
;
}
int32_t
compareStrRegexCompMatch
(
const
void
*
pLeft
,
const
void
*
pRight
)
{
return
compareStrRegexComp
(
pLeft
,
pRight
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录