Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
4813af08
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看板
提交
4813af08
编写于
6月 12, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refact code
上级
22b80c55
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
105 addition
and
119 deletion
+105
-119
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
+1
-2
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
+104
-117
未找到文件。
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
浏览文件 @
4813af08
...
...
@@ -35,7 +35,6 @@ typedef enum {
TSDB_ITER_TYPE_MEMT
,
TSDB_ITER_TYPE_STT_TOMB
,
TSDB_ITER_TYPE_DATA_TOMB
,
TSDB_ITER_TYPE_MEMT_TOMB
,
}
EIterType
;
typedef
struct
{
...
...
@@ -46,7 +45,7 @@ typedef struct {
struct
{
SMemTable
*
memt
;
TSDBKEY
from
[
1
];
};
// TSDB_ITER_TYPE_MEMT
|| TSDB_ITER_TYPE_MEMT_TOMB
};
// TSDB_ITER_TYPE_MEMT
};
}
STsdbIterConfig
;
...
...
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
浏览文件 @
4813af08
...
...
@@ -17,6 +17,7 @@
// STsdbIter ================
struct
STsdbIter
{
EIterType
type
;
struct
{
bool
noMoreData
;
}
ctx
[
1
];
...
...
@@ -25,86 +26,80 @@ struct STsdbIter {
STombRecord
record
[
1
];
};
SRBTreeNode
node
[
1
];
EIterType
type
;
union
{
struct
{
SSttSegReader
*
reader
;
const
TSttBlkArray
*
sttBlkArray
;
int32_t
sttBlkArrayIdx
;
SBlockData
bData
[
1
];
int32_t
iRow
;
}
stt
[
1
];
SBlockData
b
lock
Data
[
1
];
int32_t
blockDataIdx
;
}
stt
Data
[
1
];
struct
{
SDataFileReader
*
reader
;
const
TBrinBlkArray
*
brinBlkArray
;
int32_t
brinBlkArrayIdx
;
SBrinBlock
brinBlock
[
1
];
int32_t
brinBlockIdx
;
SBlockData
bData
[
1
];
int32_t
iRow
;
}
data
[
1
];
SBlockData
b
lock
Data
[
1
];
int32_t
blockDataIdx
;
}
data
Data
[
1
];
struct
{
SMemTable
*
memt
;
TSDBKEY
from
[
1
];
SRBTreeIter
iter
[
1
];
STbData
*
tbData
;
STbDataIter
tbIter
[
1
];
}
memt
[
1
];
}
memt
Data
[
1
];
struct
{
SSttSegReader
*
reader
;
const
TTombBlkArray
*
tombBlkArray
;
int32_t
tombBlkArrayIdx
;
STombBlock
t
Data
[
1
];
int32_t
iRow
;
STombBlock
t
ombBlock
[
1
];
int32_t
tombBlockIdx
;
}
sttTomb
[
1
];
struct
{
SDataFileReader
*
reader
;
const
TTombBlkArray
*
tombBlkArray
;
int32_t
tombBlkArrayIdx
;
STombBlock
t
Data
[
1
];
int32_t
iRow
;
STombBlock
t
ombBlock
[
1
];
int32_t
tombBlockIdx
;
}
dataTomb
[
1
];
struct
{
SMemTable
*
memt
;
SRBTreeIter
iter
[
1
];
STbData
*
tbData
;
STbDataIter
tbIter
[
1
];
}
memtTomb
[
1
];
};
};
static
int32_t
tsdbSttIterNext
(
STsdbIter
*
iter
,
const
TABLEID
*
tbid
)
{
while
(
!
iter
->
ctx
->
noMoreData
)
{
for
(;
iter
->
stt
->
iRow
<
iter
->
stt
->
bData
->
nRow
;
iter
->
stt
->
iRow
++
)
{
iter
->
row
->
suid
=
iter
->
stt
->
bData
->
suid
;
iter
->
row
->
uid
=
iter
->
stt
->
bData
->
uid
?
iter
->
stt
->
bData
->
uid
:
iter
->
stt
->
bData
->
aUid
[
iter
->
stt
->
iRow
];
for
(;
iter
->
sttData
->
blockDataIdx
<
iter
->
sttData
->
blockData
->
nRow
;
iter
->
sttData
->
blockDataIdx
++
)
{
iter
->
row
->
suid
=
iter
->
sttData
->
blockData
->
suid
;
iter
->
row
->
uid
=
iter
->
sttData
->
blockData
->
uid
?
iter
->
sttData
->
blockData
->
uid
:
iter
->
sttData
->
blockData
->
aUid
[
iter
->
sttData
->
blockDataIdx
];
if
(
tbid
&&
iter
->
row
->
suid
==
tbid
->
suid
&&
iter
->
row
->
uid
==
tbid
->
uid
)
{
continue
;
}
iter
->
row
->
row
=
tsdbRowFromBlockData
(
iter
->
stt
->
bData
,
iter
->
stt
->
iRow
);
iter
->
stt
->
iRow
++
;
iter
->
row
->
row
=
tsdbRowFromBlockData
(
iter
->
stt
Data
->
blockData
,
iter
->
sttData
->
blockDataIdx
);
iter
->
stt
Data
->
blockDataIdx
++
;
goto
_exit
;
}
if
(
iter
->
stt
->
sttBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
stt
->
sttBlkArray
))
{
if
(
iter
->
stt
Data
->
sttBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
sttData
->
sttBlkArray
))
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
}
for
(;
iter
->
stt
->
sttBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
stt
->
sttBlkArray
);
iter
->
stt
->
sttBlkArrayIdx
++
)
{
const
SSttBlk
*
sttBlk
=
TARRAY2_GET_PTR
(
iter
->
stt
->
sttBlkArray
,
iter
->
stt
->
sttBlkArrayIdx
);
for
(;
iter
->
stt
Data
->
sttBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
sttData
->
sttBlkArray
);
iter
->
sttData
->
sttBlkArrayIdx
++
)
{
const
SSttBlk
*
sttBlk
=
TARRAY2_GET_PTR
(
iter
->
stt
Data
->
sttBlkArray
,
iter
->
sttData
->
sttBlkArrayIdx
);
if
(
tbid
&&
tbid
->
suid
==
sttBlk
->
suid
&&
tbid
->
uid
==
sttBlk
->
minUid
&&
tbid
->
uid
==
sttBlk
->
maxUid
)
{
continue
;
}
int32_t
code
=
tsdbSttFileReadBlockData
(
iter
->
stt
->
reader
,
sttBlk
,
iter
->
stt
->
b
Data
);
int32_t
code
=
tsdbSttFileReadBlockData
(
iter
->
stt
Data
->
reader
,
sttBlk
,
iter
->
sttData
->
block
Data
);
if
(
code
)
return
code
;
iter
->
stt
->
iRow
=
0
;
iter
->
stt
->
sttBlkArrayIdx
++
;
iter
->
stt
Data
->
blockDataIdx
=
0
;
iter
->
stt
Data
->
sttBlkArrayIdx
++
;
break
;
}
}
...
...
@@ -119,25 +114,26 @@ static int32_t tsdbDataIterNext(STsdbIter *iter, const TABLEID *tbid) {
while
(
!
iter
->
ctx
->
noMoreData
)
{
for
(;;)
{
// SBlockData
for
(;
iter
->
data
->
iRow
<
iter
->
data
->
bData
->
nRow
;
iter
->
data
->
iRow
++
)
{
if
(
tbid
&&
tbid
->
suid
==
iter
->
data
->
bData
->
suid
&&
tbid
->
uid
==
iter
->
data
->
b
Data
->
uid
)
{
iter
->
data
->
iRow
=
iter
->
data
->
b
Data
->
nRow
;
for
(;
iter
->
data
Data
->
blockDataIdx
<
iter
->
dataData
->
blockData
->
nRow
;
iter
->
dataData
->
blockDataIdx
++
)
{
if
(
tbid
&&
tbid
->
suid
==
iter
->
data
Data
->
blockData
->
suid
&&
tbid
->
uid
==
iter
->
dataData
->
block
Data
->
uid
)
{
iter
->
data
Data
->
blockDataIdx
=
iter
->
dataData
->
block
Data
->
nRow
;
break
;
}
iter
->
row
->
row
=
tsdbRowFromBlockData
(
iter
->
data
->
bData
,
iter
->
data
->
iRow
);
iter
->
data
->
iRow
++
;
iter
->
row
->
row
=
tsdbRowFromBlockData
(
iter
->
data
Data
->
blockData
,
iter
->
dataData
->
blockDataIdx
);
iter
->
data
Data
->
blockDataIdx
++
;
goto
_exit
;
}
// SBrinBlock
if
(
iter
->
data
->
brinBlockIdx
>=
BRIN_BLOCK_SIZE
(
iter
->
d
ata
->
brinBlock
))
{
if
(
iter
->
data
Data
->
brinBlockIdx
>=
BRIN_BLOCK_SIZE
(
iter
->
dataD
ata
->
brinBlock
))
{
break
;
}
for
(;
iter
->
data
->
brinBlockIdx
<
BRIN_BLOCK_SIZE
(
iter
->
data
->
brinBlock
);
iter
->
data
->
brinBlockIdx
++
)
{
for
(;
iter
->
dataData
->
brinBlockIdx
<
BRIN_BLOCK_SIZE
(
iter
->
dataData
->
brinBlock
);
iter
->
dataData
->
brinBlockIdx
++
)
{
SBrinRecord
record
[
1
];
tBrinBlockGet
(
iter
->
data
->
brinBlock
,
iter
->
d
ata
->
brinBlockIdx
,
record
);
tBrinBlockGet
(
iter
->
data
Data
->
brinBlock
,
iter
->
dataD
ata
->
brinBlockIdx
,
record
);
if
(
tbid
&&
tbid
->
suid
==
record
->
suid
&&
tbid
->
uid
==
record
->
uid
)
{
continue
;
...
...
@@ -146,32 +142,33 @@ static int32_t tsdbDataIterNext(STsdbIter *iter, const TABLEID *tbid) {
iter
->
row
->
suid
=
record
->
suid
;
iter
->
row
->
uid
=
record
->
uid
;
code
=
tsdbDataFileReadBlockData
(
iter
->
data
->
reader
,
record
,
iter
->
data
->
b
Data
);
code
=
tsdbDataFileReadBlockData
(
iter
->
data
Data
->
reader
,
record
,
iter
->
dataData
->
block
Data
);
if
(
code
)
return
code
;
iter
->
data
->
iRow
=
0
;
iter
->
data
->
brinBlockIdx
++
;
iter
->
data
Data
->
blockDataIdx
=
0
;
iter
->
data
Data
->
brinBlockIdx
++
;
break
;
}
}
if
(
iter
->
data
->
brinBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
d
ata
->
brinBlkArray
))
{
if
(
iter
->
data
Data
->
brinBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
dataD
ata
->
brinBlkArray
))
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
}
for
(;
iter
->
data
->
brinBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
data
->
brinBlkArray
);
iter
->
data
->
brinBlkArrayIdx
++
)
{
const
SBrinBlk
*
brinBlk
=
TARRAY2_GET_PTR
(
iter
->
data
->
brinBlkArray
,
iter
->
data
->
brinBlkArrayIdx
);
for
(;
iter
->
dataData
->
brinBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
dataData
->
brinBlkArray
);
iter
->
dataData
->
brinBlkArrayIdx
++
)
{
const
SBrinBlk
*
brinBlk
=
TARRAY2_GET_PTR
(
iter
->
dataData
->
brinBlkArray
,
iter
->
dataData
->
brinBlkArrayIdx
);
if
(
tbid
&&
tbid
->
uid
==
brinBlk
->
minTbid
.
uid
&&
tbid
->
uid
==
brinBlk
->
maxTbid
.
uid
)
{
continue
;
}
code
=
tsdbDataFileReadBrinBlock
(
iter
->
data
->
reader
,
brinBlk
,
iter
->
d
ata
->
brinBlock
);
code
=
tsdbDataFileReadBrinBlock
(
iter
->
data
Data
->
reader
,
brinBlk
,
iter
->
dataD
ata
->
brinBlock
);
if
(
code
)
return
code
;
iter
->
data
->
brinBlockIdx
=
0
;
iter
->
data
->
brinBlkArrayIdx
++
;
iter
->
data
Data
->
brinBlockIdx
=
0
;
iter
->
data
Data
->
brinBlkArrayIdx
++
;
break
;
}
}
...
...
@@ -184,31 +181,31 @@ static int32_t tsdbMemTableIterNext(STsdbIter *iter, const TABLEID *tbid) {
SRBTreeNode
*
node
;
while
(
!
iter
->
ctx
->
noMoreData
)
{
for
(
TSDBROW
*
row
;
iter
->
memt
->
tbData
&&
(
row
=
tsdbTbDataIterGet
(
iter
->
memt
->
tbIter
));)
{
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memt
->
tbData
->
uid
)
{
iter
->
memt
->
tbData
=
NULL
;
for
(
TSDBROW
*
row
;
iter
->
memt
Data
->
tbData
&&
(
row
=
tsdbTbDataIterGet
(
iter
->
memtData
->
tbIter
));)
{
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
Data
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memtData
->
tbData
->
uid
)
{
iter
->
memt
Data
->
tbData
=
NULL
;
break
;
}
iter
->
row
->
row
=
row
[
0
];
tsdbTbDataIterNext
(
iter
->
memt
->
tbIter
);
tsdbTbDataIterNext
(
iter
->
memt
Data
->
tbIter
);
goto
_exit
;
}
for
(;;)
{
node
=
tRBTreeIterNext
(
iter
->
memt
->
iter
);
node
=
tRBTreeIterNext
(
iter
->
memt
Data
->
iter
);
if
(
!
node
)
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
goto
_exit
;
}
iter
->
memt
->
tbData
=
TCONTAINER_OF
(
node
,
STbData
,
rbtn
);
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memt
->
tbData
->
uid
)
{
iter
->
memt
Data
->
tbData
=
TCONTAINER_OF
(
node
,
STbData
,
rbtn
);
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
Data
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memtData
->
tbData
->
uid
)
{
continue
;
}
else
{
iter
->
row
->
suid
=
iter
->
memt
->
tbData
->
suid
;
iter
->
row
->
uid
=
iter
->
memt
->
tbData
->
uid
;
tsdbTbDataIterOpen
(
iter
->
memt
->
tbData
,
iter
->
memt
->
from
,
0
,
iter
->
memt
->
tbIter
);
iter
->
row
->
suid
=
iter
->
memt
Data
->
tbData
->
suid
;
iter
->
row
->
uid
=
iter
->
memt
Data
->
tbData
->
uid
;
tsdbTbDataIterOpen
(
iter
->
memt
Data
->
tbData
,
iter
->
memtData
->
from
,
0
,
iter
->
memtData
->
tbIter
);
break
;
}
}
...
...
@@ -220,24 +217,24 @@ _exit:
static
int32_t
tsdbDataTombIterNext
(
STsdbIter
*
iter
,
const
TABLEID
*
tbid
)
{
while
(
!
iter
->
ctx
->
noMoreData
)
{
for
(;
iter
->
dataTomb
->
iRow
<
TOMB_BLOCK_SIZE
(
iter
->
dataTomb
->
tData
);
iter
->
dataTomb
->
iRow
++
)
{
iter
->
record
->
suid
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
Data
->
suid
,
iter
->
dataTomb
->
iRow
);
iter
->
record
->
uid
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
Data
->
uid
,
iter
->
dataTomb
->
iRow
);
for
(;
iter
->
dataTomb
->
tombBlockIdx
<
TOMB_BLOCK_SIZE
(
iter
->
dataTomb
->
tombBlock
);
iter
->
dataTomb
->
tombBlockIdx
++
)
{
iter
->
record
->
suid
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
ombBlock
->
suid
,
iter
->
dataTomb
->
tombBlockIdx
);
iter
->
record
->
uid
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
ombBlock
->
uid
,
iter
->
dataTomb
->
tombBlockIdx
);
if
(
tbid
&&
iter
->
record
->
suid
==
tbid
->
suid
&&
iter
->
record
->
uid
==
tbid
->
uid
)
{
continue
;
}
iter
->
record
->
version
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
Data
->
version
,
iter
->
dataTomb
->
iRow
);
iter
->
record
->
skey
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
Data
->
skey
,
iter
->
dataTomb
->
iRow
);
iter
->
record
->
ekey
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
Data
->
ekey
,
iter
->
dataTomb
->
iRow
);
iter
->
dataTomb
->
iRow
++
;
iter
->
record
->
version
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
ombBlock
->
version
,
iter
->
dataTomb
->
tombBlockIdx
);
iter
->
record
->
skey
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
ombBlock
->
skey
,
iter
->
dataTomb
->
tombBlockIdx
);
iter
->
record
->
ekey
=
TARRAY2_GET
(
iter
->
dataTomb
->
t
ombBlock
->
ekey
,
iter
->
dataTomb
->
tombBlockIdx
);
iter
->
dataTomb
->
tombBlockIdx
++
;
goto
_exit
;
}
if
(
iter
->
dataTomb
->
tombBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
dataTomb
->
tombBlkArray
))
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
goto
_exit
;
}
for
(;
iter
->
dataTomb
->
tombBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
dataTomb
->
tombBlkArray
);
...
...
@@ -249,10 +246,10 @@ static int32_t tsdbDataTombIterNext(STsdbIter *iter, const TABLEID *tbid) {
continue
;
}
int32_t
code
=
tsdbDataFileReadTombBlock
(
iter
->
dataTomb
->
reader
,
tombBlk
,
iter
->
dataTomb
->
t
Data
);
int32_t
code
=
tsdbDataFileReadTombBlock
(
iter
->
dataTomb
->
reader
,
tombBlk
,
iter
->
dataTomb
->
t
ombBlock
);
if
(
code
)
return
code
;
iter
->
dataTomb
->
iRow
=
0
;
iter
->
dataTomb
->
tombBlockIdx
=
0
;
iter
->
dataTomb
->
tombBlkArrayIdx
++
;
break
;
}
...
...
@@ -262,25 +259,20 @@ _exit:
return
0
;
}
static
int32_t
tsdbMemTableTombIterNext
(
STsdbIter
*
iter
,
const
TABLEID
*
tbid
)
{
ASSERTS
(
0
,
"Not implemented yet!"
);
return
0
;
}
static
int32_t
tsdbSttIterOpen
(
STsdbIter
*
iter
)
{
int32_t
code
;
code
=
tsdbSttFileReadSttBlk
(
iter
->
stt
->
reader
,
&
iter
->
stt
->
sttBlkArray
);
code
=
tsdbSttFileReadSttBlk
(
iter
->
stt
Data
->
reader
,
&
iter
->
sttData
->
sttBlkArray
);
if
(
code
)
return
code
;
if
(
TARRAY2_SIZE
(
iter
->
stt
->
sttBlkArray
)
==
0
)
{
if
(
TARRAY2_SIZE
(
iter
->
stt
Data
->
sttBlkArray
)
==
0
)
{
iter
->
ctx
->
noMoreData
=
true
;
return
0
;
}
iter
->
stt
->
sttBlkArrayIdx
=
0
;
tBlockDataCreate
(
iter
->
stt
->
b
Data
);
iter
->
stt
->
iRow
=
0
;
iter
->
stt
Data
->
sttBlkArrayIdx
=
0
;
tBlockDataCreate
(
iter
->
stt
Data
->
block
Data
);
iter
->
stt
Data
->
blockDataIdx
=
0
;
return
tsdbSttIterNext
(
iter
,
NULL
);
}
...
...
@@ -289,34 +281,34 @@ static int32_t tsdbDataIterOpen(STsdbIter *iter) {
int32_t
code
;
// SBrinBlk
code
=
tsdbDataFileReadBrinBlk
(
iter
->
data
->
reader
,
&
iter
->
d
ata
->
brinBlkArray
);
code
=
tsdbDataFileReadBrinBlk
(
iter
->
data
Data
->
reader
,
&
iter
->
dataD
ata
->
brinBlkArray
);
if
(
code
)
return
code
;
if
(
TARRAY2_SIZE
(
iter
->
data
->
brinBlkArray
)
==
0
)
{
if
(
TARRAY2_SIZE
(
iter
->
data
Data
->
brinBlkArray
)
==
0
)
{
iter
->
ctx
->
noMoreData
=
true
;
return
0
;
}
iter
->
data
->
brinBlkArrayIdx
=
0
;
iter
->
data
Data
->
brinBlkArrayIdx
=
0
;
// SBrinBlock
tBrinBlockInit
(
iter
->
data
->
brinBlock
);
iter
->
data
->
brinBlockIdx
=
0
;
tBrinBlockInit
(
iter
->
data
Data
->
brinBlock
);
iter
->
data
Data
->
brinBlockIdx
=
0
;
// SBlockData
tBlockDataCreate
(
iter
->
data
->
b
Data
);
iter
->
data
->
iRow
=
0
;
tBlockDataCreate
(
iter
->
data
Data
->
block
Data
);
iter
->
data
Data
->
blockDataIdx
=
0
;
return
tsdbDataIterNext
(
iter
,
NULL
);
}
static
int32_t
tsdbMemTableIterOpen
(
STsdbIter
*
iter
)
{
iter
->
memt
->
iter
[
0
]
=
tRBTreeIterCreate
(
iter
->
memt
->
memt
->
tbDataTree
,
1
);
iter
->
memt
Data
->
iter
[
0
]
=
tRBTreeIterCreate
(
iter
->
memtData
->
memt
->
tbDataTree
,
1
);
return
tsdbMemTableIterNext
(
iter
,
NULL
);
}
static
int32_t
tsdbSttIterClose
(
STsdbIter
*
iter
)
{
tBlockDataDestroy
(
iter
->
stt
->
b
Data
);
tBlockDataDestroy
(
iter
->
stt
Data
->
block
Data
);
return
0
;
}
...
...
@@ -332,15 +324,15 @@ static int32_t tsdbDataTombIterOpen(STsdbIter *iter) {
}
iter
->
dataTomb
->
tombBlkArrayIdx
=
0
;
tTombBlockInit
(
iter
->
dataTomb
->
t
Data
);
iter
->
dataTomb
->
iRow
=
0
;
tTombBlockInit
(
iter
->
dataTomb
->
t
ombBlock
);
iter
->
dataTomb
->
tombBlockIdx
=
0
;
return
tsdbDataTombIterNext
(
iter
,
NULL
);
}
static
int32_t
tsdbDataIterClose
(
STsdbIter
*
iter
)
{
tBrinBlockDestroy
(
iter
->
data
->
brinBlock
);
tBlockDataDestroy
(
iter
->
data
->
b
Data
);
tBrinBlockDestroy
(
iter
->
data
Data
->
brinBlock
);
tBlockDataDestroy
(
iter
->
data
Data
->
block
Data
);
return
0
;
}
...
...
@@ -348,24 +340,24 @@ static int32_t tsdbMemTableIterClose(STsdbIter *iter) { return 0; }
static
int32_t
tsdbSttTombIterNext
(
STsdbIter
*
iter
,
const
TABLEID
*
tbid
)
{
while
(
!
iter
->
ctx
->
noMoreData
)
{
for
(;
iter
->
sttTomb
->
iRow
<
TOMB_BLOCK_SIZE
(
iter
->
sttTomb
->
tData
);
iter
->
sttTomb
->
iRow
++
)
{
iter
->
record
->
suid
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
Data
->
suid
,
iter
->
sttTomb
->
iRow
);
iter
->
record
->
uid
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
Data
->
uid
,
iter
->
sttTomb
->
iRow
);
for
(;
iter
->
sttTomb
->
tombBlockIdx
<
TOMB_BLOCK_SIZE
(
iter
->
sttTomb
->
tombBlock
);
iter
->
sttTomb
->
tombBlockIdx
++
)
{
iter
->
record
->
suid
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
ombBlock
->
suid
,
iter
->
sttTomb
->
tombBlockIdx
);
iter
->
record
->
uid
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
ombBlock
->
uid
,
iter
->
sttTomb
->
tombBlockIdx
);
if
(
tbid
&&
iter
->
record
->
suid
==
tbid
->
suid
&&
iter
->
record
->
uid
==
tbid
->
uid
)
{
continue
;
}
iter
->
record
->
version
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
Data
->
version
,
iter
->
sttTomb
->
iRow
);
iter
->
record
->
skey
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
Data
->
skey
,
iter
->
sttTomb
->
iRow
);
iter
->
record
->
ekey
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
Data
->
ekey
,
iter
->
sttTomb
->
iRow
);
iter
->
sttTomb
->
iRow
++
;
iter
->
record
->
version
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
ombBlock
->
version
,
iter
->
sttTomb
->
tombBlockIdx
);
iter
->
record
->
skey
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
ombBlock
->
skey
,
iter
->
sttTomb
->
tombBlockIdx
);
iter
->
record
->
ekey
=
TARRAY2_GET
(
iter
->
sttTomb
->
t
ombBlock
->
ekey
,
iter
->
sttTomb
->
tombBlockIdx
);
iter
->
sttTomb
->
tombBlockIdx
++
;
goto
_exit
;
}
if
(
iter
->
sttTomb
->
tombBlkArrayIdx
>=
TARRAY2_SIZE
(
iter
->
sttTomb
->
tombBlkArray
))
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
goto
_exit
;
}
for
(;
iter
->
sttTomb
->
tombBlkArrayIdx
<
TARRAY2_SIZE
(
iter
->
sttTomb
->
tombBlkArray
);
...
...
@@ -377,10 +369,10 @@ static int32_t tsdbSttTombIterNext(STsdbIter *iter, const TABLEID *tbid) {
continue
;
}
int32_t
code
=
tsdbSttFileReadTombBlock
(
iter
->
sttTomb
->
reader
,
tombBlk
,
iter
->
sttTomb
->
t
Data
);
int32_t
code
=
tsdbSttFileReadTombBlock
(
iter
->
sttTomb
->
reader
,
tombBlk
,
iter
->
sttTomb
->
t
ombBlock
);
if
(
code
)
return
code
;
iter
->
sttTomb
->
iRow
=
0
;
iter
->
sttTomb
->
tombBlockIdx
=
0
;
iter
->
sttTomb
->
tombBlkArrayIdx
++
;
break
;
}
...
...
@@ -402,8 +394,8 @@ static int32_t tsdbSttTombIterOpen(STsdbIter *iter) {
}
iter
->
sttTomb
->
tombBlkArrayIdx
=
0
;
tTombBlockInit
(
iter
->
sttTomb
->
t
Data
);
iter
->
sttTomb
->
iRow
=
0
;
tTombBlockInit
(
iter
->
sttTomb
->
t
ombBlock
);
iter
->
sttTomb
->
tombBlockIdx
=
0
;
return
tsdbSttTombIterNext
(
iter
,
NULL
);
}
...
...
@@ -412,22 +404,24 @@ int32_t tsdbIterOpen(const STsdbIterConfig *config, STsdbIter **iter) {
int32_t
code
;
iter
[
0
]
=
taosMemoryCalloc
(
1
,
sizeof
(
*
iter
[
0
]));
if
(
iter
[
0
]
==
NULL
)
return
TSDB_CODE_OUT_OF_MEMORY
;
if
(
iter
[
0
]
==
NULL
)
{
return
TSDB_CODE_OUT_OF_MEMORY
;
}
iter
[
0
]
->
type
=
config
->
type
;
iter
[
0
]
->
ctx
->
noMoreData
=
false
;
switch
(
config
->
type
)
{
case
TSDB_ITER_TYPE_STT
:
iter
[
0
]
->
stt
->
reader
=
config
->
sttReader
;
iter
[
0
]
->
stt
Data
->
reader
=
config
->
sttReader
;
code
=
tsdbSttIterOpen
(
iter
[
0
]);
break
;
case
TSDB_ITER_TYPE_DATA
:
iter
[
0
]
->
data
->
reader
=
config
->
dataReader
;
iter
[
0
]
->
data
Data
->
reader
=
config
->
dataReader
;
code
=
tsdbDataIterOpen
(
iter
[
0
]);
break
;
case
TSDB_ITER_TYPE_MEMT
:
iter
[
0
]
->
memt
->
memt
=
config
->
memt
;
iter
[
0
]
->
memt
->
from
[
0
]
=
config
->
from
[
0
];
iter
[
0
]
->
memt
Data
->
memt
=
config
->
memt
;
iter
[
0
]
->
memt
Data
->
from
[
0
]
=
config
->
from
[
0
];
code
=
tsdbMemTableIterOpen
(
iter
[
0
]);
break
;
case
TSDB_ITER_TYPE_STT_TOMB
:
...
...
@@ -438,10 +432,8 @@ int32_t tsdbIterOpen(const STsdbIterConfig *config, STsdbIter **iter) {
iter
[
0
]
->
dataTomb
->
reader
=
config
->
dataReader
;
code
=
tsdbDataTombIterOpen
(
iter
[
0
]);
break
;
case
TSDB_ITER_TYPE_MEMT_TOMB
:
ASSERTS
(
0
,
"Not implemented"
);
break
;
default:
code
=
TSDB_CODE_INVALID_PARA
;
ASSERTS
(
false
,
"Not implemented"
);
}
...
...
@@ -453,12 +445,12 @@ int32_t tsdbIterOpen(const STsdbIterConfig *config, STsdbIter **iter) {
}
static
int32_t
tsdbSttTombIterClose
(
STsdbIter
*
iter
)
{
tTombBlockDestroy
(
iter
->
sttTomb
->
t
Data
);
tTombBlockDestroy
(
iter
->
sttTomb
->
t
ombBlock
);
return
0
;
}
static
int32_t
tsdbDataTombIterClose
(
STsdbIter
*
iter
)
{
tTombBlockDestroy
(
iter
->
dataTomb
->
t
Data
);
tTombBlockDestroy
(
iter
->
dataTomb
->
t
ombBlock
);
return
0
;
}
...
...
@@ -479,9 +471,6 @@ int32_t tsdbIterClose(STsdbIter **iter) {
case
TSDB_ITER_TYPE_DATA_TOMB
:
tsdbDataTombIterClose
(
iter
[
0
]);
break
;
case
TSDB_ITER_TYPE_MEMT_TOMB
:
ASSERTS
(
false
,
"Not implemented"
);
break
;
default:
ASSERT
(
false
);
}
...
...
@@ -502,8 +491,6 @@ int32_t tsdbIterNext(STsdbIter *iter) {
return
tsdbSttTombIterNext
(
iter
,
NULL
);
case
TSDB_ITER_TYPE_DATA_TOMB
:
return
tsdbDataTombIterNext
(
iter
,
NULL
);
case
TSDB_ITER_TYPE_MEMT_TOMB
:
return
tsdbMemTableTombIterNext
(
iter
,
NULL
);
default:
ASSERT
(
false
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录