Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e822dc20
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
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看板
提交
e822dc20
编写于
4月 27, 2023
作者:
H
Haojun Liao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enh(query): add reader status.
上级
7762e0ea
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
12 deletion
+17
-12
source/dnode/vnode/src/tsdb/tsdbRead.c
source/dnode/vnode/src/tsdb/tsdbRead.c
+17
-12
未找到文件。
source/dnode/vnode/src/tsdb/tsdbRead.c
浏览文件 @
e822dc20
...
@@ -20,6 +20,12 @@
...
@@ -20,6 +20,12 @@
#define ASCENDING_TRAVERSE(o) (o == TSDB_ORDER_ASC)
#define ASCENDING_TRAVERSE(o) (o == TSDB_ORDER_ASC)
#define getCurrentKeyInLastBlock(_r) ((_r)->currentKey)
#define getCurrentKeyInLastBlock(_r) ((_r)->currentKey)
typedef
enum
{
READER_STATUS_SUSPEND
=
0x1
,
READER_STATUS_SHOULD_STOP
=
0x2
,
READER_STATUS_NORMAL
=
0x3
,
}
EReaderExecStatus
;
typedef
enum
{
typedef
enum
{
EXTERNAL_ROWS_PREV
=
0x1
,
EXTERNAL_ROWS_PREV
=
0x1
,
EXTERNAL_ROWS_MAIN
=
0x2
,
EXTERNAL_ROWS_MAIN
=
0x2
,
...
@@ -190,7 +196,8 @@ struct STsdbReader {
...
@@ -190,7 +196,8 @@ struct STsdbReader {
STsdb
*
pTsdb
;
STsdb
*
pTsdb
;
SVersionRange
verRange
;
SVersionRange
verRange
;
TdThreadMutex
readerMutex
;
TdThreadMutex
readerMutex
;
bool
suspended
;
EReaderExecStatus
flag
;
// bool suspended;
uint64_t
suid
;
uint64_t
suid
;
int16_t
order
;
int16_t
order
;
EReadMode
readMode
;
EReadMode
readMode
;
...
@@ -2855,7 +2862,7 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) {
...
@@ -2855,7 +2862,7 @@ static int32_t buildComposedDataBlock(STsdbReader* pReader) {
break
;
break
;
}
}
if
(
pResBlock
->
info
.
rows
>=
pReader
->
capacity
)
{
if
(
pResBlock
->
info
.
rows
>=
pReader
->
resBlockInfo
.
capacity
)
{
break
;
break
;
}
}
}
}
...
@@ -4431,7 +4438,7 @@ int32_t tsdbReaderOpen(SVnode* pVnode, SQueryTableDataCond* pCond, void* pTableL
...
@@ -4431,7 +4438,7 @@ int32_t tsdbReaderOpen(SVnode* pVnode, SQueryTableDataCond* pCond, void* pTableL
goto
_err
;
goto
_err
;
}
}
pReader
->
suspended
=
true
;
pReader
->
flag
=
READER_STATUS_SUSPEND
;
if
(
countOnly
)
{
if
(
countOnly
)
{
pReader
->
readMode
=
READ_MODE_COUNT_ONLY
;
pReader
->
readMode
=
READ_MODE_COUNT_ONLY
;
...
@@ -4660,8 +4667,7 @@ int32_t tsdbReaderSuspend(STsdbReader* pReader) {
...
@@ -4660,8 +4667,7 @@ int32_t tsdbReaderSuspend(STsdbReader* pReader) {
tsdbUntakeReadSnap
(
pReader
,
pReader
->
pReadSnap
,
false
);
tsdbUntakeReadSnap
(
pReader
,
pReader
->
pReadSnap
,
false
);
pReader
->
pReadSnap
=
NULL
;
pReader
->
pReadSnap
=
NULL
;
pReader
->
flag
=
READER_STATUS_SUSPEND
;
pReader
->
suspended
=
true
;
tsdbDebug
(
"reader: %p suspended uid %"
PRIu64
" in this query %s"
,
pReader
,
pBlockScanInfo
?
pBlockScanInfo
->
uid
:
0
,
tsdbDebug
(
"reader: %p suspended uid %"
PRIu64
" in this query %s"
,
pReader
,
pBlockScanInfo
?
pBlockScanInfo
->
uid
:
0
,
pReader
->
idStr
);
pReader
->
idStr
);
...
@@ -4678,7 +4684,7 @@ static int32_t tsdbSetQueryReseek(void* pQHandle) {
...
@@ -4678,7 +4684,7 @@ static int32_t tsdbSetQueryReseek(void* pQHandle) {
code
=
tsdbTryAcquireReader
(
pReader
);
code
=
tsdbTryAcquireReader
(
pReader
);
if
(
code
==
0
)
{
if
(
code
==
0
)
{
if
(
pReader
->
suspended
)
{
if
(
pReader
->
flag
==
READER_STATUS_SUSPEND
)
{
tsdbReleaseReader
(
pReader
);
tsdbReleaseReader
(
pReader
);
return
code
;
return
code
;
}
}
...
@@ -4734,8 +4740,7 @@ int32_t tsdbReaderResume(STsdbReader* pReader) {
...
@@ -4734,8 +4740,7 @@ int32_t tsdbReaderResume(STsdbReader* pReader) {
}
}
}
}
pReader
->
suspended
=
false
;
pReader
->
flag
=
READER_STATUS_NORMAL
;
tsdbDebug
(
"reader: %p resumed uid %"
PRIu64
", numOfTable:%"
PRId32
", in this query %s"
,
pReader
,
tsdbDebug
(
"reader: %p resumed uid %"
PRIu64
", numOfTable:%"
PRId32
", in this query %s"
,
pReader
,
pBlockScanInfo
?
(
*
pBlockScanInfo
)
->
uid
:
0
,
numOfTables
,
pReader
->
idStr
);
pBlockScanInfo
?
(
*
pBlockScanInfo
)
->
uid
:
0
,
numOfTables
,
pReader
->
idStr
);
return
code
;
return
code
;
...
@@ -4823,7 +4828,7 @@ int32_t tsdbNextDataBlock(STsdbReader* pReader, bool* hasNext) {
...
@@ -4823,7 +4828,7 @@ int32_t tsdbNextDataBlock(STsdbReader* pReader, bool* hasNext) {
code
=
tsdbAcquireReader
(
pReader
);
code
=
tsdbAcquireReader
(
pReader
);
qTrace
(
"tsdb/read: %p, take read mutex, code: %d"
,
pReader
,
code
);
qTrace
(
"tsdb/read: %p, take read mutex, code: %d"
,
pReader
,
code
);
if
(
pReader
->
suspended
)
{
if
(
pReader
->
flag
==
READER_STATUS_SUSPEND
)
{
tsdbReaderResume
(
pReader
);
tsdbReaderResume
(
pReader
);
}
}
...
@@ -5100,7 +5105,7 @@ int32_t tsdbReaderReset(STsdbReader* pReader, SQueryTableDataCond* pCond) {
...
@@ -5100,7 +5105,7 @@ int32_t tsdbReaderReset(STsdbReader* pReader, SQueryTableDataCond* pCond) {
qTrace
(
"tsdb/reader-reset: %p, take read mutex"
,
pReader
);
qTrace
(
"tsdb/reader-reset: %p, take read mutex"
,
pReader
);
tsdbAcquireReader
(
pReader
);
tsdbAcquireReader
(
pReader
);
if
(
pReader
->
suspended
)
{
if
(
pReader
->
flag
==
READER_STATUS_SUSPEND
)
{
tsdbReaderResume
(
pReader
);
tsdbReaderResume
(
pReader
);
}
}
...
@@ -5181,7 +5186,7 @@ int32_t tsdbGetFileBlocksDistInfo(STsdbReader* pReader, STableBlockDistInfo* pTa
...
@@ -5181,7 +5186,7 @@ int32_t tsdbGetFileBlocksDistInfo(STsdbReader* pReader, STableBlockDistInfo* pTa
// find the start data block in file
// find the start data block in file
tsdbAcquireReader
(
pReader
);
tsdbAcquireReader
(
pReader
);
if
(
pReader
->
suspended
)
{
if
(
pReader
->
flag
==
READER_STATUS_SUSPEND
)
{
tsdbReaderResume
(
pReader
);
tsdbReaderResume
(
pReader
);
}
}
SReaderStatus
*
pStatus
=
&
pReader
->
status
;
SReaderStatus
*
pStatus
=
&
pReader
->
status
;
...
@@ -5254,7 +5259,7 @@ int64_t tsdbGetNumOfRowsInMemTable(STsdbReader* pReader) {
...
@@ -5254,7 +5259,7 @@ int64_t tsdbGetNumOfRowsInMemTable(STsdbReader* pReader) {
SReaderStatus
*
pStatus
=
&
pReader
->
status
;
SReaderStatus
*
pStatus
=
&
pReader
->
status
;
tsdbAcquireReader
(
pReader
);
tsdbAcquireReader
(
pReader
);
if
(
pReader
->
suspended
)
{
if
(
pReader
->
flag
==
READER_STATUS_SUSPEND
)
{
tsdbReaderResume
(
pReader
);
tsdbReaderResume
(
pReader
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录