Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
冷面1992
TDengine
提交
94b26bfe
TDengine
项目概览
冷面1992
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
94b26bfe
编写于
8月 09, 2021
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-225]
上级
2855bd73
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
61 addition
and
93 deletion
+61
-93
src/client/inc/tscUtil.h
src/client/inc/tscUtil.h
+3
-3
src/client/inc/tsclient.h
src/client/inc/tsclient.h
+1
-1
src/client/src/tscParseInsert.c
src/client/src/tscParseInsert.c
+2
-2
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+1
-1
src/client/src/tscSQLParser.c
src/client/src/tscSQLParser.c
+1
-1
src/client/src/tscServer.c
src/client/src/tscServer.c
+3
-7
src/client/src/tscStream.c
src/client/src/tscStream.c
+31
-31
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+4
-11
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+15
-36
未找到文件。
src/client/inc/tscUtil.h
浏览文件 @
94b26bfe
...
...
@@ -220,7 +220,7 @@ void tscExprDestroy(SArray* pExprInfo);
int32_t
createProjectionExpr
(
SQueryInfo
*
pQueryInfo
,
STableMetaInfo
*
pTableMetaInfo
,
SExprInfo
***
pExpr
,
int32_t
*
num
);
void
clearAllTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
bool
removeMeta
);
void
clearAllTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
bool
removeMeta
,
uint64_t
id
);
SColumn
*
tscColumnClone
(
const
SColumn
*
src
);
void
tscColumnCopy
(
SColumn
*
pDest
,
const
SColumn
*
pSrc
);
...
...
@@ -318,7 +318,7 @@ void tscPrintSelNodeList(SSqlObj* pSql, int32_t subClauseIndex);
bool
hasMoreVnodesToTry
(
SSqlObj
*
pSql
);
bool
hasMoreClauseToTry
(
SSqlObj
*
pSql
);
void
tscFreeQueryInfo
(
SSqlCmd
*
pCmd
,
bool
remove
Meta
);
void
tscFreeQueryInfo
(
SSqlCmd
*
pCmd
,
bool
remove
CachedMeta
,
uint64_t
id
);
void
tscTryQueryNextVnode
(
SSqlObj
*
pSql
,
__async_cb_func_t
fp
);
void
tscTryQueryNextClause
(
SSqlObj
*
pSql
,
__async_cb_func_t
fp
);
...
...
@@ -356,7 +356,7 @@ char* strdup_throw(const char* str);
bool
vgroupInfoIdentical
(
SNewVgroupInfo
*
pExisted
,
SVgroupMsg
*
src
);
SNewVgroupInfo
createNewVgroupInfo
(
SVgroupMsg
*
pVgroupMsg
);
void
tscRemove
TableMetaBuf
(
STableMetaInfo
*
pTableMetaInfo
,
uint64_t
id
);
void
tscRemove
CachedTableMeta
(
STableMetaInfo
*
pTableMetaInfo
,
uint64_t
id
);
#ifdef __cplusplus
}
...
...
src/client/inc/tsclient.h
浏览文件 @
94b26bfe
...
...
@@ -368,7 +368,7 @@ void tscSetResRawPtrRv(SSqlRes* pRes, SQueryInfo* pQueryInfo, SSDataBlock* pBloc
void
handleDownstreamOperator
(
SSqlObj
**
pSqlList
,
int32_t
numOfUpstream
,
SQueryInfo
*
px
,
SSqlObj
*
pParent
);
void
destroyTableNameList
(
SInsertStatementParam
*
pInsertParam
);
void
tscResetSqlCmd
(
SSqlCmd
*
pCmd
,
bool
removeMeta
);
void
tscResetSqlCmd
(
SSqlCmd
*
pCmd
,
bool
removeMeta
,
uint64_t
id
);
/**
* free query result of the sql object
...
...
src/client/src/tscParseInsert.c
浏览文件 @
94b26bfe
...
...
@@ -1922,7 +1922,7 @@ int tsParseSql(SSqlObj *pSql, bool initial) {
if
(
pSql
->
parseRetry
<
1
&&
(
ret
==
TSDB_CODE_TSC_SQL_SYNTAX_ERROR
||
ret
==
TSDB_CODE_TSC_INVALID_OPERATION
))
{
tscDebug
(
"0x%"
PRIx64
" parse insert sql statement failed, code:%s, clear meta cache and retry "
,
pSql
->
self
,
tstrerror
(
ret
));
tscResetSqlCmd
(
pCmd
,
true
);
tscResetSqlCmd
(
pCmd
,
true
,
pSql
->
self
);
pSql
->
parseRetry
++
;
if
((
ret
=
tsInsertInitialCheck
(
pSql
))
==
TSDB_CODE_SUCCESS
)
{
...
...
@@ -1939,7 +1939,7 @@ int tsParseSql(SSqlObj *pSql, bool initial) {
if
(
ret
==
TSDB_CODE_TSC_INVALID_OPERATION
&&
pSql
->
parseRetry
<
1
&&
sqlInfo
.
type
==
TSDB_SQL_SELECT
)
{
tscDebug
(
"0x%"
PRIx64
" parse query sql statement failed, code:%s, clear meta cache and retry "
,
pSql
->
self
,
tstrerror
(
ret
));
tscResetSqlCmd
(
pCmd
,
true
);
tscResetSqlCmd
(
pCmd
,
true
,
pSql
->
self
);
pSql
->
parseRetry
++
;
ret
=
tscValidateSqlInfo
(
pSql
,
&
sqlInfo
);
...
...
src/client/src/tscPrepare.c
浏览文件 @
94b26bfe
...
...
@@ -1694,7 +1694,7 @@ int taos_stmt_set_tbname_tags(TAOS_STMT* stmt, const char* name, TAOS_BIND* tags
if
(
taosHashGetSize
(
pCmd
->
insertParam
.
pTableBlockHashList
)
>
0
)
{
SHashObj
*
hashList
=
pCmd
->
insertParam
.
pTableBlockHashList
;
pCmd
->
insertParam
.
pTableBlockHashList
=
NULL
;
tscResetSqlCmd
(
pCmd
,
false
);
tscResetSqlCmd
(
pCmd
,
false
,
pSql
->
self
);
pCmd
->
insertParam
.
pTableBlockHashList
=
hashList
;
}
...
...
src/client/src/tscSQLParser.c
浏览文件 @
94b26bfe
...
...
@@ -8483,7 +8483,7 @@ int32_t validateSqlNode(SSqlObj* pSql, SSqlNode* pSqlNode, SQueryInfo* pQueryInf
}
if
(
pSqlNode
->
from
->
type
==
SQL_NODE_FROM_SUBQUERY
)
{
clearAllTableMetaInfo
(
pQueryInfo
,
false
);
clearAllTableMetaInfo
(
pQueryInfo
,
false
,
pSql
->
self
);
pQueryInfo
->
numOfTables
=
0
;
// parse the subquery in the first place
...
...
src/client/src/tscServer.c
浏览文件 @
94b26bfe
...
...
@@ -2581,7 +2581,7 @@ int tscProcessDropDbRsp(SSqlObj *pSql) {
int
tscProcessDropTableRsp
(
SSqlObj
*
pSql
)
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pSql
->
cmd
,
0
);
tscRemove
TableMetaBuf
(
pTableMetaInfo
,
pSql
->
self
);
tscRemove
CachedTableMeta
(
pTableMetaInfo
,
pSql
->
self
);
tfree
(
pTableMetaInfo
->
pTableMeta
);
return
0
;
}
...
...
@@ -2967,11 +2967,7 @@ int tscRenewTableMeta(SSqlObj *pSql, int32_t tableIndex) {
// remove stored tableMeta info in hash table
tscRemoveTableMetaBuf
(
pTableMetaInfo
,
pSql
->
self
);
tscResetSqlCmd
(
pCmd
,
true
);
// pCmd->pTableMetaMap = tscCleanupTableMetaMap(pCmd->pTableMetaMap);
// pCmd->pTableMetaMap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK);
tscResetSqlCmd
(
pCmd
,
true
,
pSql
->
self
);
SArray
*
pNameList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
SArray
*
vgroupList
=
taosArrayInit
(
1
,
POINTER_BYTES
);
...
...
src/client/src/tscStream.c
浏览文件 @
94b26bfe
...
...
@@ -142,6 +142,7 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
if
(
pSql
==
NULL
)
{
return
;
}
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
&
pSql
->
cmd
);
tscDebug
(
"0x%"
PRIx64
" add into timer"
,
pSql
->
self
);
...
...
@@ -186,7 +187,7 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
}
// launch stream computing in a new thread
SSchedMsg
schedMsg
=
{
0
};
SSchedMsg
schedMsg
=
{
0
};
schedMsg
.
fp
=
tscProcessStreamLaunchQuery
;
schedMsg
.
ahandle
=
pStream
;
schedMsg
.
thandle
=
(
void
*
)
1
;
...
...
@@ -194,6 +195,8 @@ static void tscProcessStreamTimer(void *handle, void *tmrId) {
taosScheduleTask
(
tscQhandle
,
&
schedMsg
);
}
static
void
cbParseSql
(
void
*
param
,
TAOS_RES
*
res
,
int
code
);
static
void
tscProcessStreamQueryCallback
(
void
*
param
,
TAOS_RES
*
tres
,
int
numOfRows
)
{
SSqlStream
*
pStream
=
(
SSqlStream
*
)
param
;
if
(
tres
==
NULL
||
numOfRows
<
0
)
{
...
...
@@ -201,24 +204,26 @@ static void tscProcessStreamQueryCallback(void *param, TAOS_RES *tres, int numOf
tscError
(
"0x%"
PRIx64
" stream:%p, query data failed, code:0x%08x, retry in %"
PRId64
"ms"
,
pStream
->
pSql
->
self
,
pStream
,
numOfRows
,
retryDelay
);
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pStream
->
pSql
->
cmd
,
0
);
char
name
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
name
);
taosHashRemove
(
tscTableMetaMap
,
name
,
strnlen
(
name
,
TSDB_TABLE_FNAME_LEN
));
tfree
(
pTableMetaInfo
->
pTableMeta
);
SSqlObj
*
pSql
=
pStream
->
pSql
;
tscFreeSqlResult
(
pS
tream
->
pS
ql
);
tscFreeSubobj
(
pS
tream
->
pS
ql
);
tfree
(
pS
tream
->
pS
ql
->
pSubs
);
pS
tream
->
pS
ql
->
subState
.
numOfSub
=
0
;
tscFreeSqlResult
(
pSql
);
tscFreeSubobj
(
pSql
);
tfree
(
pSql
->
pSubs
);
pSql
->
subState
.
numOfSub
=
0
;
pTableMetaInfo
->
vgroupList
=
tscVgroupInfoClear
(
pTableMetaInfo
->
vgroupList
);
int32_t
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
cbParseSql
(
pStream
,
pSql
,
code
);
}
else
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
tscDebug
(
"0x%"
PRIx64
" CQ taso_open_stream IN Process"
,
pSql
->
self
);
}
else
{
tscError
(
"0x%"
PRIx64
" open stream failed, code:%s"
,
pSql
->
self
,
tstrerror
(
code
));
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
free
(
pStream
);
}
tscSetRetryTimer
(
pStream
,
pStream
->
pSql
,
retryDelay
);
return
;
//
tscSetRetryTimer(pStream, pStream->pSql, retryDelay);
//
return;
}
taos_fetch_rows_a
(
tres
,
tscProcessStreamRetrieveResult
,
param
);
...
...
@@ -555,7 +560,6 @@ static void tscCreateStream(void *param, TAOS_RES *res, int code) {
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
pSql
->
res
.
code
=
code
;
tscError
(
"0x%"
PRIx64
" open stream failed, sql:%s, reason:%s, code:%s"
,
pSql
->
self
,
pSql
->
sqlstr
,
pCmd
->
payload
,
tstrerror
(
code
));
pStream
->
fp
(
pStream
->
param
,
NULL
,
NULL
);
return
;
}
...
...
@@ -582,9 +586,10 @@ static void tscCreateStream(void *param, TAOS_RES *res, int code) {
// set stime with ltime if ltime > stime
const
char
*
dstTable
=
pStream
->
dstTable
?
pStream
->
dstTable
:
""
;
tscDebug
(
" CQ table=%s ltime is %"
PRId64
,
dstTable
,
pStream
->
ltime
);
tscDebug
(
"0x%"
PRIx64
" CQ table %s ltime is %"
PRId64
,
pSql
->
self
,
dstTable
,
pStream
->
ltime
);
if
(
pStream
->
ltime
!=
INT64_MIN
&&
pStream
->
ltime
>
pStream
->
stime
)
{
tscWarn
(
"
CQ set stream %s stime=%"
PRId64
" replace with ltime=%"
PRId64
" if ltime>0 "
,
dstTable
,
pStream
->
stime
,
pStream
->
ltime
);
tscWarn
(
"
0x%"
PRIx64
" CQ set stream %s stime=%"
PRId64
" replace with ltime=%"
PRId64
" if ltime > 0"
,
pSql
->
self
,
dstTable
,
pStream
->
stime
,
pStream
->
ltime
);
pStream
->
stime
=
pStream
->
ltime
;
}
...
...
@@ -592,7 +597,6 @@ static void tscCreateStream(void *param, TAOS_RES *res, int code) {
pCmd
->
command
=
TSDB_SQL_SELECT
;
tscAddIntoStreamList
(
pStream
);
taosTmrReset
(
tscProcessStreamTimer
,
(
int32_t
)
starttime
,
pStream
,
tscTmr
,
&
pStream
->
pTimer
);
tscDebug
(
"0x%"
PRIx64
" stream:%p is opened, query on:%s, interval:%"
PRId64
", sliding:%"
PRId64
", first launched in:%"
PRId64
", sql:%s"
,
pSql
->
self
,
...
...
@@ -659,10 +663,9 @@ void cbParseSql(void* param, TAOS_RES* res, int code) {
char
sql
[
128
]
=
""
;
sprintf
(
sql
,
"select last_row(*) from %s;"
,
pStream
->
dstTable
);
taos_query_a
(
pSql
->
pTscObj
,
sql
,
fpStreamLastRow
,
param
);
return
;
}
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
dstTable
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
TAOS_STREAM
*
taos_open_stream_withname
(
TAOS
*
taos
,
const
char
*
dstTable
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
,
TAOS_RES
*
,
TAOS_ROW
),
int64_t
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
),
void
*
cqhandle
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
return
NULL
;
...
...
@@ -697,14 +700,12 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
pStream
->
param
=
param
;
pStream
->
pSql
=
pSql
;
pStream
->
cqhandle
=
cqhandle
;
pSql
->
pStream
=
pStream
;
pSql
->
param
=
pStream
;
pSql
->
maxRetry
=
TSDB_MAX_REPLICA
;
tscSetStreamDestTable
(
pStream
,
dstTable
);
pSql
->
pStream
=
pStream
;
pSql
->
param
=
pStream
;
pSql
->
maxRetry
=
TSDB_MAX_REPLICA
;
pSql
->
sqlstr
=
calloc
(
1
,
strlen
(
sqlstr
)
+
1
);
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"0x%"
PRIx64
" failed to malloc sql string buffer"
,
pSql
->
self
);
...
...
@@ -725,14 +726,13 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
pSql
->
fp
=
cbParseSql
;
pSql
->
fetchFp
=
cbParseSql
;
registerSqlObj
(
pSql
);
int32_t
code
=
tsParseSql
(
pSql
,
true
);
if
(
code
==
TSDB_CODE_SUCCESS
)
{
cbParseSql
(
pStream
,
pSql
,
code
);
}
else
if
(
code
==
TSDB_CODE_TSC_ACTION_IN_PROGRESS
)
{
tscDebug
(
"
CQ taso_open_stream IN Process. sql=%s"
,
sqlstr
);
tscDebug
(
"
0x%"
PRIx64
" CQ taso_open_stream IN Process"
,
pSql
->
self
);
}
else
{
tscError
(
"0x%"
PRIx64
" open stream failed, sql:%s, code:%s"
,
pSql
->
self
,
sqlstr
,
tstrerror
(
code
));
taosReleaseRef
(
tscObjRef
,
pSql
->
self
);
...
...
@@ -743,7 +743,7 @@ TAOS_STREAM *taos_open_stream_withname(TAOS *taos, const char* dstTable, const c
return
pStream
;
}
TAOS_STREAM
*
taos_open_stream
(
TAOS
*
taos
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
param
,
TAOS_RES
*
,
TAOS_ROW
row
),
TAOS_STREAM
*
taos_open_stream
(
TAOS
*
taos
,
const
char
*
sqlstr
,
void
(
*
fp
)(
void
*
,
TAOS_RES
*
,
TAOS_ROW
),
int64_t
stime
,
void
*
param
,
void
(
*
callback
)(
void
*
))
{
return
taos_open_stream_withname
(
taos
,
""
,
sqlstr
,
fp
,
stime
,
param
,
callback
,
NULL
);
}
...
...
src/client/src/tscSubquery.c
浏览文件 @
94b26bfe
...
...
@@ -2718,17 +2718,10 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
int32_t
code
=
pParentSql
->
res
.
code
;
if
((
code
==
TSDB_CODE_TDB_INVALID_TABLE_ID
||
code
==
TSDB_CODE_VND_INVALID_VGROUP_ID
)
&&
pParentSql
->
retry
<
pParentSql
->
maxRetry
)
{
// remove the cached tableMeta and vgroup id list, and then parse the sql again
SSqlCmd
*
pParentCmd
=
&
pParentSql
->
cmd
;
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pParentCmd
,
0
);
tscRemoveTableMetaBuf
(
pTableMetaInfo
,
pParentSql
->
self
);
tscResetSqlCmd
(
pParentCmd
,
true
);
tscResetSqlCmd
(
&
pParentSql
->
cmd
,
true
,
pParentSql
->
self
);
// pParentCmd->pTableMetaMap = tscCleanupTableMetaMap(pParentCmd->pTableMetaMap);
// pParentCmd->pTableMetaMap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK);
pParentSql
->
res
.
code
=
TSDB_CODE_SUCCESS
;
pParentSql
->
retry
++
;
pParentSql
->
res
.
code
=
TSDB_CODE_SUCCESS
;
tscDebug
(
"0x%"
PRIx64
" retry parse sql and send query, prev error: %s, retry:%d"
,
pParentSql
->
self
,
tstrerror
(
code
),
pParentSql
->
retry
);
...
...
@@ -3143,7 +3136,7 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
numOfFailed
+=
1
;
// clean up tableMeta in cache
tscFreeQueryInfo
(
&
pSql
->
cmd
,
false
);
tscFreeQueryInfo
(
&
pSql
->
cmd
,
false
,
pSql
->
self
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoS
(
&
pSql
->
cmd
);
STableMetaInfo
*
pMasterTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
&
pParentObj
->
cmd
,
0
);
tscAddTableMetaInfo
(
pQueryInfo
,
&
pMasterTableMetaInfo
->
name
,
NULL
,
NULL
,
NULL
,
NULL
);
...
...
@@ -3165,7 +3158,7 @@ static void multiVnodeInsertFinalize(void* param, TAOS_RES* tres, int numOfRows)
}
pParentObj
->
res
.
code
=
TSDB_CODE_SUCCESS
;
tscResetSqlCmd
(
&
pParentObj
->
cmd
,
false
);
tscResetSqlCmd
(
&
pParentObj
->
cmd
,
false
,
pParentObj
->
self
);
// in case of insert, redo parsing the sql string and build new submit data block for two reasons:
// 1. the table Id(tid & uid) may have been update, the submit block needs to be updated accordingly.
...
...
src/client/src/tscUtil.c
浏览文件 @
94b26bfe
...
...
@@ -1300,12 +1300,13 @@ static void tscDestroyResPointerInfo(SSqlRes* pRes) {
pRes
->
data
=
NULL
;
// pRes->data points to the buffer of pRsp, no need to free
}
void
tscFreeQueryInfo
(
SSqlCmd
*
pCmd
,
bool
remove
Meta
)
{
void
tscFreeQueryInfo
(
SSqlCmd
*
pCmd
,
bool
remove
CachedMeta
,
uint64_t
id
)
{
if
(
pCmd
==
NULL
)
{
return
;
}
SQueryInfo
*
pQueryInfo
=
pCmd
->
pQueryInfo
;
while
(
pQueryInfo
!=
NULL
)
{
SQueryInfo
*
p
=
pQueryInfo
->
sibling
;
...
...
@@ -1314,7 +1315,7 @@ void tscFreeQueryInfo(SSqlCmd* pCmd, bool removeMeta) {
SQueryInfo
*
pUpQueryInfo
=
taosArrayGetP
(
pQueryInfo
->
pUpstream
,
i
);
freeQueryInfoImpl
(
pUpQueryInfo
);
clearAllTableMetaInfo
(
pUpQueryInfo
,
remove
Meta
);
clearAllTableMetaInfo
(
pUpQueryInfo
,
remove
CachedMeta
,
id
);
if
(
pUpQueryInfo
->
pQInfo
!=
NULL
)
{
qDestroyQueryInfo
(
pUpQueryInfo
->
pQInfo
);
pUpQueryInfo
->
pQInfo
=
NULL
;
...
...
@@ -1330,7 +1331,7 @@ void tscFreeQueryInfo(SSqlCmd* pCmd, bool removeMeta) {
}
freeQueryInfoImpl
(
pQueryInfo
);
clearAllTableMetaInfo
(
pQueryInfo
,
remove
Meta
);
clearAllTableMetaInfo
(
pQueryInfo
,
remove
CachedMeta
,
id
);
if
(
pQueryInfo
->
pQInfo
!=
NULL
)
{
qDestroyQueryInfo
(
pQueryInfo
->
pQInfo
);
...
...
@@ -1359,7 +1360,7 @@ void destroyTableNameList(SInsertStatementParam* pInsertParam) {
tfree
(
pInsertParam
->
pTableNameList
);
}
void
tscResetSqlCmd
(
SSqlCmd
*
pCmd
,
bool
clearCachedMeta
)
{
void
tscResetSqlCmd
(
SSqlCmd
*
pCmd
,
bool
clearCachedMeta
,
uint64_t
id
)
{
pCmd
->
command
=
0
;
pCmd
->
numOfCols
=
0
;
pCmd
->
count
=
0
;
...
...
@@ -1373,20 +1374,8 @@ void tscResetSqlCmd(SSqlCmd* pCmd, bool clearCachedMeta) {
tfree
(
pCmd
->
insertParam
.
tagData
.
data
);
pCmd
->
insertParam
.
tagData
.
dataLen
=
0
;
tscFreeQueryInfo
(
pCmd
,
clearCachedMeta
);
tscFreeQueryInfo
(
pCmd
,
clearCachedMeta
,
id
);
pCmd
->
pTableMetaMap
=
tscCleanupTableMetaMap
(
pCmd
->
pTableMetaMap
);
// if (pCmd->pTableMetaMap != NULL) {
// STableMetaVgroupInfo* p = taosHashIterate(pCmd->pTableMetaMap, NULL);
// while (p) {
// taosArrayDestroy(p->vgroupIdList);
// tfree(p->pTableMeta);
// p = taosHashIterate(pCmd->pTableMetaMap, p);
// }
//
// taosHashCleanup(pCmd->pTableMetaMap);
// pCmd->pTableMetaMap = NULL;
// }
}
void
*
tscCleanupTableMetaMap
(
SHashObj
*
pTableMetaMap
)
{
...
...
@@ -1501,7 +1490,7 @@ void tscFreeSqlObj(SSqlObj* pSql) {
pSql
->
self
=
0
;
tscFreeSqlResult
(
pSql
);
tscResetSqlCmd
(
pCmd
,
false
);
tscResetSqlCmd
(
pCmd
,
false
,
pSql
->
self
);
memset
(
pCmd
->
payload
,
0
,
(
size_t
)
pCmd
->
allocSize
);
tfree
(
pCmd
->
payload
);
...
...
@@ -3369,20 +3358,15 @@ SArray* tscVgroupTableInfoDup(SArray* pVgroupTables) {
return
pa
;
}
void
clearAllTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
bool
removeMeta
)
{
void
clearAllTableMetaInfo
(
SQueryInfo
*
pQueryInfo
,
bool
removeMeta
,
uint64_t
id
)
{
for
(
int32_t
i
=
0
;
i
<
pQueryInfo
->
numOfTables
;
++
i
)
{
STableMetaInfo
*
pTableMetaInfo
=
tscGetMetaInfo
(
pQueryInfo
,
i
);
if
(
removeMeta
)
{
char
name
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
name
);
taosHashRemove
(
tscTableMetaMap
,
name
,
strnlen
(
name
,
TSDB_TABLE_FNAME_LEN
));
tscRemoveCachedTableMeta
(
pTableMetaInfo
,
id
);
}
tscFreeVgroupTableInfo
(
pTableMetaInfo
->
pVgroupTables
);
tscClearTableMetaInfo
(
pTableMetaInfo
);
free
(
pTableMetaInfo
);
}
tfree
(
pQueryInfo
->
pTableMetaInfo
);
...
...
@@ -3449,10 +3433,12 @@ void tscClearTableMetaInfo(STableMetaInfo* pTableMetaInfo) {
}
tfree
(
pTableMetaInfo
->
pTableMeta
);
pTableMetaInfo
->
vgroupList
=
tscVgroupInfoClear
(
pTableMetaInfo
->
vgroupList
);
tscColumnListDestroy
(
pTableMetaInfo
->
tagColList
);
pTableMetaInfo
->
tagColList
=
NULL
;
free
(
pTableMetaInfo
);
}
void
tscResetForNextRetrieve
(
SSqlRes
*
pRes
)
{
...
...
@@ -3845,14 +3831,7 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) {
// todo refactor
tscDebug
(
"0x%"
PRIx64
" all subquery response received, retry"
,
pParentSql
->
self
);
SSqlCmd
*
pParentCmd
=
&
pParentSql
->
cmd
;
STableMetaInfo
*
pTableMetaInfo
=
tscGetTableMetaInfoFromCmd
(
pParentCmd
,
0
);
tscRemoveTableMetaBuf
(
pTableMetaInfo
,
pParentSql
->
self
);
tscResetSqlCmd
(
pParentCmd
,
true
);
// pParentCmd->pTableMetaMap = tscCleanupTableMetaMap(pParentCmd->pTableMetaMap);
// pParentCmd->pTableMetaMap = taosHashInit(4, taosGetDefaultHashFunction(TSDB_DATA_TYPE_BINARY), false, HASH_NO_LOCK);
tscResetSqlCmd
(
&
pParentSql
->
cmd
,
true
,
pParentSql
->
self
);
pParentSql
->
res
.
code
=
TSDB_CODE_SUCCESS
;
pParentSql
->
retry
++
;
...
...
@@ -3871,7 +3850,7 @@ static void tscSubqueryCompleteCallback(void* param, TAOS_RES* tres, int code) {
return
;
}
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
pParentC
md
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfo
(
&
pParentSql
->
c
md
);
executeQuery
(
pParentSql
,
pQueryInfo
);
return
;
}
...
...
@@ -4995,7 +4974,7 @@ SNewVgroupInfo createNewVgroupInfo(SVgroupMsg *pVgroupMsg) {
return
info
;
}
void
tscRemove
TableMetaBuf
(
STableMetaInfo
*
pTableMetaInfo
,
uint64_t
id
)
{
void
tscRemove
CachedTableMeta
(
STableMetaInfo
*
pTableMetaInfo
,
uint64_t
id
)
{
char
fname
[
TSDB_TABLE_FNAME_LEN
]
=
{
0
};
tNameExtractFullName
(
&
pTableMetaInfo
->
name
,
fname
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录