Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
王长生-AnH
TDengine
提交
74fdb1c2
T
TDengine
项目概览
王长生-AnH
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74fdb1c2
编写于
8月 22, 2020
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[td-225] refactor shell code to support ctrl+c.
上级
f22098b6
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
38 deletion
+22
-38
src/client/src/tscServer.c
src/client/src/tscServer.c
+2
-17
src/client/src/tscSql.c
src/client/src/tscSql.c
+9
-5
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+11
-16
未找到文件。
src/client/src/tscServer.c
浏览文件 @
74fdb1c2
...
@@ -455,35 +455,20 @@ void tscKillSTableQuery(SSqlObj *pSql) {
...
@@ -455,35 +455,20 @@ void tscKillSTableQuery(SSqlObj *pSql) {
}
}
for
(
int
i
=
0
;
i
<
pSql
->
numOfSubs
;
++
i
)
{
for
(
int
i
=
0
;
i
<
pSql
->
numOfSubs
;
++
i
)
{
// NOTE: pSub may have been released already here
SSqlObj
*
pSub
=
pSql
->
pSubs
[
i
];
SSqlObj
*
pSub
=
pSql
->
pSubs
[
i
];
if
(
pSub
==
NULL
)
{
if
(
pSub
==
NULL
)
{
continue
;
continue
;
}
}
pSub
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
if
(
pSub
->
pRpcCtx
!=
NULL
)
{
if
(
pSub
->
pRpcCtx
!=
NULL
)
{
rpcCancelRequest
(
pSub
->
pRpcCtx
);
rpcCancelRequest
(
pSub
->
pRpcCtx
);
}
}
pSub
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
tscQueueAsyncRes
(
pSub
);
tscQueueAsyncRes
(
pSub
);
}
}
/*
* 1. if the subqueries are not launched or partially launched, we need to waiting the launched
* query return to successfully free allocated resources.
* 2. if no any subqueries are launched yet, which means the super table query only in parse sql stage,
* set the res.code, and return.
*/
const
int64_t
MAX_WAITING_TIME
=
10000
;
// 10 Sec.
int64_t
stime
=
taosGetTimestampMs
();
while
(
pCmd
->
command
!=
TSDB_SQL_RETRIEVE_LOCALMERGE
&&
pCmd
->
command
!=
TSDB_SQL_RETRIEVE_EMPTY_RESULT
)
{
taosMsleep
(
100
);
if
(
taosGetTimestampMs
()
-
stime
>
MAX_WAITING_TIME
)
{
break
;
}
}
tscDebug
(
"%p super table query cancelled"
,
pSql
);
tscDebug
(
"%p super table query cancelled"
,
pSql
);
}
}
...
...
src/client/src/tscSql.c
浏览文件 @
74fdb1c2
...
@@ -669,15 +669,19 @@ void taos_stop_query(TAOS_RES *res) {
...
@@ -669,15 +669,19 @@ void taos_stop_query(TAOS_RES *res) {
// It may have been released by the other thread already.
// It may have been released by the other thread already.
// The ref count may fix this problem.
// The ref count may fix this problem.
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
SQueryInfo
*
pQueryInfo
=
tscGetQueryInfoDetail
(
pCmd
,
pCmd
->
clauseIndex
);
// set the error code for master pSqlObj firstly
pSql
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
if
(
tscIsTwoStageSTableQuery
(
pQueryInfo
,
0
))
{
if
(
tscIsTwoStageSTableQuery
(
pQueryInfo
,
0
))
{
assert
(
pSql
->
pRpcCtx
==
NULL
);
tscKillSTableQuery
(
pSql
);
tscKillSTableQuery
(
pSql
);
}
else
{
if
(
pSql
->
cmd
.
command
<
TSDB_SQL_LOCAL
)
{
rpcCancelRequest
(
pSql
->
pRpcCtx
);
}
}
}
if
(
pSql
->
cmd
.
command
<
TSDB_SQL_LOCAL
)
{
rpcCancelRequest
(
pSql
->
pRpcCtx
);
}
pSql
->
res
.
code
=
TSDB_CODE_TSC_QUERY_CANCELLED
;
tscDebug
(
"%p query is cancelled"
,
res
);
tscDebug
(
"%p query is cancelled"
,
res
);
}
}
...
...
src/client/src/tscSubquery.c
浏览文件 @
74fdb1c2
...
@@ -1462,10 +1462,15 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
...
@@ -1462,10 +1462,15 @@ int32_t tscHandleMasterSTableQuery(SSqlObj *pSql) {
static
void
tscFreeSubSqlObj
(
SRetrieveSupport
*
trsupport
,
SSqlObj
*
pSql
)
{
static
void
tscFreeSubSqlObj
(
SRetrieveSupport
*
trsupport
,
SSqlObj
*
pSql
)
{
tscDebug
(
"%p start to free subquery result"
,
pSql
);
tscDebug
(
"%p start to free subquery result"
,
pSql
);
int32_t
index
=
trsupport
->
subqueryIndex
;
SSqlObj
*
pParentSql
=
trsupport
->
pParentSql
;
assert
(
pSql
==
pParentSql
->
pSubs
[
index
]);
pParentSql
->
pSubs
[
index
]
=
NULL
;
taos_free_result
(
pSql
);
taos_free_result
(
pSql
);
taosTFree
(
trsupport
->
localBuffer
);
taosTFree
(
trsupport
->
localBuffer
);
taosTFree
(
trsupport
);
taosTFree
(
trsupport
);
}
}
...
@@ -1474,17 +1479,7 @@ static void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, i
...
@@ -1474,17 +1479,7 @@ static void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, i
static
void
tscAbortFurtherRetryRetrieval
(
SRetrieveSupport
*
trsupport
,
TAOS_RES
*
tres
,
int32_t
code
)
{
static
void
tscAbortFurtherRetryRetrieval
(
SRetrieveSupport
*
trsupport
,
TAOS_RES
*
tres
,
int32_t
code
)
{
// set no disk space error info
// set no disk space error info
#ifdef WINDOWS
LPVOID
lpMsgBuf
;
FormatMessage
(
FORMAT_MESSAGE_ALLOCATE_BUFFER
|
FORMAT_MESSAGE_FROM_SYSTEM
|
FORMAT_MESSAGE_IGNORE_INSERTS
,
NULL
,
GetLastError
(),
MAKELANGID
(
LANG_NEUTRAL
,
SUBLANG_DEFAULT
),
// Default language
(
LPTSTR
)
&
lpMsgBuf
,
0
,
NULL
);
tscError
(
"sub:%p failed to flush data to disk:reason:%s"
,
tres
,
lpMsgBuf
);
LocalFree
(
lpMsgBuf
);
#else
tscError
(
"sub:%p failed to flush data to disk, reason:%s"
,
tres
,
tstrerror
(
code
));
tscError
(
"sub:%p failed to flush data to disk, reason:%s"
,
tres
,
tstrerror
(
code
));
#endif
SSqlObj
*
pParentSql
=
trsupport
->
pParentSql
;
SSqlObj
*
pParentSql
=
trsupport
->
pParentSql
;
pParentSql
->
res
.
code
=
code
;
pParentSql
->
res
.
code
=
code
;
...
@@ -1548,14 +1543,14 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
...
@@ -1548,14 +1543,14 @@ void tscHandleSubqueryError(SRetrieveSupport *trsupport, SSqlObj *pSql, int numO
*/
*/
pSql
->
res
.
numOfRows
=
0
;
pSql
->
res
.
numOfRows
=
0
;
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
// disable retry efforts
trsupport
->
numOfRetry
=
MAX_NUM_OF_SUBQUERY_RETRY
;
// disable retry efforts
tscDebug
(
"%p query is cancelled, sub:%p, orderOfSub:%d abort retrieve, code:%
d
"
,
pParentSql
,
pSql
,
tscDebug
(
"%p query is cancelled, sub:%p, orderOfSub:%d abort retrieve, code:%
s
"
,
pParentSql
,
pSql
,
subqueryIndex
,
pParentSql
->
res
.
code
);
subqueryIndex
,
tstrerror
(
pParentSql
->
res
.
code
)
);
}
}
if
(
numOfRows
>=
0
)
{
// current query is successful, but other sub query failed, still abort current query.
if
(
numOfRows
>=
0
)
{
// current query is successful, but other sub query failed, still abort current query.
tscDebug
(
"%p sub:%p retrieve numOfRows:%d,orderOfSub:%d"
,
pParentSql
,
pSql
,
numOfRows
,
subqueryIndex
);
tscDebug
(
"%p sub:%p retrieve numOfRows:%d,orderOfSub:%d"
,
pParentSql
,
pSql
,
numOfRows
,
subqueryIndex
);
tscError
(
"%p sub:%p abort further retrieval due to other queries failure,orderOfSub:%d,code:%
d
"
,
pParentSql
,
pSql
,
tscError
(
"%p sub:%p abort further retrieval due to other queries failure,orderOfSub:%d,code:%
s
"
,
pParentSql
,
pSql
,
subqueryIndex
,
pParentSql
->
res
.
code
);
subqueryIndex
,
tstrerror
(
pParentSql
->
res
.
code
)
);
}
else
{
}
else
{
if
(
trsupport
->
numOfRetry
++
<
MAX_NUM_OF_SUBQUERY_RETRY
&&
pParentSql
->
res
.
code
==
TSDB_CODE_SUCCESS
)
{
if
(
trsupport
->
numOfRetry
++
<
MAX_NUM_OF_SUBQUERY_RETRY
&&
pParentSql
->
res
.
code
==
TSDB_CODE_SUCCESS
)
{
if
(
tscReissueSubquery
(
trsupport
,
pSql
,
numOfRows
)
==
TSDB_CODE_SUCCESS
)
{
if
(
tscReissueSubquery
(
trsupport
,
pSql
,
numOfRows
)
==
TSDB_CODE_SUCCESS
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录