Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
440122e0
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看板
未验证
提交
440122e0
编写于
2月 10, 2023
作者:
H
Haojun Liao
提交者:
GitHub
2月 10, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19900 from taosdata/fix/nodisk
fix(query): set lastkey during check of valid ts.
上级
a93fc323
4f4d39a1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
20 deletion
+15
-20
source/dnode/vnode/src/tsdb/tsdbRead.c
source/dnode/vnode/src/tsdb/tsdbRead.c
+15
-20
未找到文件。
source/dnode/vnode/src/tsdb/tsdbRead.c
浏览文件 @
440122e0
...
...
@@ -1611,9 +1611,9 @@ static int32_t buildDataBlockFromBuf(STsdbReader* pReader, STableBlockScanInfo*
double
elapsedTime
=
(
taosGetTimestampUs
()
-
st
)
/
1000
.
0
;
tsdbDebug
(
"%p build data block from cache completed, elapsed time:%.2f ms, numOfRows:%d, brange:%"
PRId64
" - %"
PRId64
" %s"
,
" - %"
PRId64
"
, uid:%"
PRIu64
",
%s"
,
pReader
,
elapsedTime
,
pBlock
->
info
.
rows
,
pBlock
->
info
.
window
.
skey
,
pBlock
->
info
.
window
.
ekey
,
pReader
->
idStr
);
p
BlockScanInfo
->
uid
,
p
Reader
->
idStr
);
pReader
->
cost
.
buildmemBlock
+=
elapsedTime
;
return
code
;
...
...
@@ -1639,8 +1639,10 @@ static bool tryCopyDistinctRowFromFileBlock(STsdbReader* pReader, SBlockData* pB
return
false
;
}
static
bool
nextRowFromLastBlocks
(
SLastBlockReader
*
pLastBlockReader
,
STableBlockScanInfo
*
p
Block
ScanInfo
,
static
bool
nextRowFromLastBlocks
(
SLastBlockReader
*
pLastBlockReader
,
STableBlockScanInfo
*
pScanInfo
,
SVersionRange
*
pVerRange
)
{
int32_t
step
=
ASCENDING_TRAVERSE
(
pLastBlockReader
->
order
)
?
1
:-
1
;
while
(
1
)
{
bool
hasVal
=
tMergeTreeNext
(
&
pLastBlockReader
->
mergeTree
);
if
(
!
hasVal
)
{
...
...
@@ -1649,8 +1651,15 @@ static bool nextRowFromLastBlocks(SLastBlockReader* pLastBlockReader, STableBloc
TSDBROW
row
=
tMergeTreeGetRow
(
&
pLastBlockReader
->
mergeTree
);
TSDBKEY
k
=
TSDBROW_KEY
(
&
row
);
if
(
!
hasBeenDropped
(
pBlockScanInfo
->
delSkyline
,
&
pBlockScanInfo
->
lastBlockDelIndex
,
&
k
,
pLastBlockReader
->
order
,
pVerRange
))
{
if
(
hasBeenDropped
(
pScanInfo
->
delSkyline
,
&
pScanInfo
->
lastBlockDelIndex
,
&
k
,
pLastBlockReader
->
order
,
pVerRange
))
{
pScanInfo
->
lastKey
=
k
.
ts
;
}
else
{
// the qualifed ts may equal to k.ts, only a greater version one.
// here we need to fallback one step.
if
(
pScanInfo
->
lastKey
==
k
.
ts
)
{
pScanInfo
->
lastKey
-=
step
;
}
return
true
;
}
}
...
...
@@ -2316,6 +2325,7 @@ static bool initLastBlockReader(SLastBlockReader* pLBlockReader, STableBlockScan
w
.
ekey
=
pScanInfo
->
lastKey
+
step
;
}
tsdbDebug
(
"init last block reader, window:%"
PRId64
"-%"
PRId64
", uid:%"
PRIu64
", %s"
,
w
.
skey
,
w
.
ekey
,
pScanInfo
->
uid
,
pReader
->
idStr
);
int32_t
code
=
tMergeTreeOpen
(
&
pLBlockReader
->
mergeTree
,
(
pLBlockReader
->
order
==
TSDB_ORDER_DESC
),
pReader
->
pFileReader
,
pReader
->
suid
,
pScanInfo
->
uid
,
&
w
,
&
pLBlockReader
->
verRange
,
pLBlockReader
->
pInfo
,
false
,
pReader
->
idStr
);
...
...
@@ -2755,18 +2765,6 @@ static void extractOrderedTableUidList(SUidOrderCheckInfo* pOrderCheckInfo, SRea
taosSort
(
pOrderCheckInfo
->
tableUidList
,
total
,
sizeof
(
uint64_t
),
uidComparFunc
);
}
// reset the last del file index
static
void
resetScanBlockLastBlockDelIndex
(
SReaderStatus
*
pStatus
,
int32_t
order
)
{
void
*
p
=
taosHashIterate
(
pStatus
->
pTableMap
,
NULL
);
while
(
p
!=
NULL
)
{
STableBlockScanInfo
*
pScanInfo
=
*
(
STableBlockScanInfo
**
)
p
;
// reset the last del file index
pScanInfo
->
lastBlockDelIndex
=
getInitialDelIndex
(
pScanInfo
->
delSkyline
,
order
);
p
=
taosHashIterate
(
pStatus
->
pTableMap
,
p
);
}
}
static
int32_t
initOrderCheckInfo
(
SUidOrderCheckInfo
*
pOrderCheckInfo
,
STsdbReader
*
pReader
)
{
SReaderStatus
*
pStatus
=
&
pReader
->
status
;
...
...
@@ -3082,7 +3080,6 @@ static int32_t buildBlockFromFiles(STsdbReader* pReader) {
// this file does not have data files, let's start check the last block file if exists
if
(
pBlockIter
->
numOfBlocks
==
0
)
{
resetScanBlockLastBlockDelIndex
(
&
pReader
->
status
,
pReader
->
order
);
goto
_begin
;
}
}
...
...
@@ -3114,7 +3111,6 @@ static int32_t buildBlockFromFiles(STsdbReader* pReader) {
// data blocks in current file are exhausted, let's try the next file now
tBlockDataReset
(
&
pReader
->
status
.
fileBlockData
);
resetDataBlockIterator
(
pBlockIter
,
pReader
->
order
);
resetScanBlockLastBlockDelIndex
(
&
pReader
->
status
,
pReader
->
order
);
goto
_begin
;
}
else
{
code
=
initForFirstBlockInFile
(
pReader
,
pBlockIter
);
...
...
@@ -3126,7 +3122,6 @@ static int32_t buildBlockFromFiles(STsdbReader* pReader) {
// this file does not have blocks, let's start check the last block file
if
(
pBlockIter
->
numOfBlocks
==
0
)
{
resetScanBlockLastBlockDelIndex
(
&
pReader
->
status
,
pReader
->
order
);
goto
_begin
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录