Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
e0889b40
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22017
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看板
提交
e0889b40
编写于
5月 30, 2023
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more code
上级
9222d965
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
60 addition
and
12 deletion
+60
-12
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+2
-0
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
+4
-1
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
+41
-11
source/dnode/vnode/src/tsdb/tsdbMemTable.c
source/dnode/vnode/src/tsdb/tsdbMemTable.c
+13
-0
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
e0889b40
...
...
@@ -409,6 +409,7 @@ struct STbData {
SDelData
*
pTail
;
SMemSkipList
sl
;
STbData
*
next
;
SRBTreeNode
rbtn
[
1
];
};
struct
SMemTable
{
...
...
@@ -425,6 +426,7 @@ struct SMemTable {
int32_t
nTbData
;
int32_t
nBucket
;
STbData
**
aBucket
;
SRBTree
tbDataTree
[
1
];
};
struct
TSDBROW
{
...
...
source/dnode/vnode/src/tsdb/dev/inc/tsdbIter.h
浏览文件 @
e0889b40
...
...
@@ -40,7 +40,10 @@ typedef struct {
union
{
SSttSegReader
*
sttReader
;
SDataFileReader
*
dataReader
;
SMemTable
*
memt
;
struct
{
SMemTable
*
memt
;
TSDBKEY
from
[
1
];
};
};
}
STsdbIterConfig
;
...
...
source/dnode/vnode/src/tsdb/dev/tsdbIter.c
浏览文件 @
e0889b40
...
...
@@ -41,7 +41,11 @@ struct STsdbIter {
int32_t
iRow
;
}
data
[
1
];
struct
{
SMemTable
*
memt
;
SMemTable
*
memt
;
TSDBKEY
from
[
1
];
SRBTreeIter
iter
[
1
];
STbData
*
tbData
;
STbDataIter
tbIter
[
1
];
}
memt
[
1
];
};
};
...
...
@@ -156,8 +160,38 @@ _exit:
}
static
int32_t
tsdbMemTableIterNext
(
STsdbIter
*
iter
,
const
TABLEID
*
tbid
)
{
// TODO
ASSERT
(
0
);
SRBTreeNode
*
node
;
while
(
!
iter
->
ctx
->
noMoreData
)
{
while
(
iter
->
memt
->
tbData
&&
tsdbTbDataIterNext
(
iter
->
memt
->
tbIter
))
{
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memt
->
tbData
->
uid
)
{
iter
->
memt
->
tbData
=
NULL
;
break
;
}
iter
->
row
->
row
=
*
tsdbTbDataIterGet
(
iter
->
memt
->
tbIter
);
goto
_exit
;
}
for
(;;)
{
node
=
tRBTreeIterNext
(
iter
->
memt
->
iter
);
if
(
!
node
)
{
iter
->
ctx
->
noMoreData
=
true
;
break
;
}
iter
->
memt
->
tbData
=
TCONTAINER_OF
(
node
,
STbData
,
rbtn
);
if
(
tbid
&&
tbid
->
suid
==
iter
->
memt
->
tbData
->
suid
&&
tbid
->
uid
==
iter
->
memt
->
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
);
break
;
}
}
}
_exit:
return
0
;
}
...
...
@@ -204,9 +238,8 @@ static int32_t tsdbDataIterOpen(STsdbIter *iter) {
}
static
int32_t
tsdbMemTableIterOpen
(
STsdbIter
*
iter
)
{
// TODO
ASSERT
(
0
);
return
0
;
iter
->
memt
->
iter
[
0
]
=
tRBTreeIterCreate
(
iter
->
memt
->
memt
->
tbDataTree
,
1
);
return
tsdbMemTableIterNext
(
iter
,
NULL
);
}
static
int32_t
tsdbSttIterClose
(
STsdbIter
*
iter
)
{
...
...
@@ -219,11 +252,7 @@ static int32_t tsdbDataIterClose(STsdbIter *iter) {
return
0
;
}
static
int32_t
tsdbMemTableIterClose
(
STsdbIter
*
iter
)
{
// TODO
ASSERT
(
0
);
return
0
;
}
static
int32_t
tsdbMemTableIterClose
(
STsdbIter
*
iter
)
{
return
0
;
}
int32_t
tsdbIterOpen
(
const
STsdbIterConfig
*
config
,
STsdbIter
**
iter
)
{
int32_t
code
;
...
...
@@ -244,6 +273,7 @@ int32_t tsdbIterOpen(const STsdbIterConfig *config, STsdbIter **iter) {
break
;
case
TSDB_ITER_TYPE_MEMT
:
iter
[
0
]
->
memt
->
memt
=
config
->
memt
;
iter
[
0
]
->
memt
->
from
[
0
]
=
config
->
from
[
0
];
code
=
tsdbMemTableIterOpen
(
iter
[
0
]);
break
;
default:
...
...
source/dnode/vnode/src/tsdb/tsdbMemTable.c
浏览文件 @
e0889b40
...
...
@@ -38,6 +38,16 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData,
static
int32_t
tsdbInsertColDataToTable
(
SMemTable
*
pMemTable
,
STbData
*
pTbData
,
int64_t
version
,
SSubmitTbData
*
pSubmitTbData
,
int32_t
*
affectedRows
);
static
int32_t
tTbDataCmprFn
(
const
SRBTreeNode
*
n1
,
const
SRBTreeNode
*
n2
)
{
STbData
*
tbData1
=
TCONTAINER_OF
(
n1
,
STbData
,
rbtn
);
STbData
*
tbData2
=
TCONTAINER_OF
(
n2
,
STbData
,
rbtn
);
if
(
tbData1
->
suid
<
tbData2
->
suid
)
return
-
1
;
if
(
tbData1
->
suid
>
tbData2
->
suid
)
return
1
;
if
(
tbData1
->
uid
<
tbData2
->
uid
)
return
-
1
;
if
(
tbData1
->
uid
>
tbData2
->
uid
)
return
1
;
return
0
;
}
int32_t
tsdbMemTableCreate
(
STsdb
*
pTsdb
,
SMemTable
**
ppMemTable
)
{
int32_t
code
=
0
;
SMemTable
*
pMemTable
=
NULL
;
...
...
@@ -66,6 +76,7 @@ int32_t tsdbMemTableCreate(STsdb *pTsdb, SMemTable **ppMemTable) {
goto
_err
;
}
vnodeBufPoolRef
(
pMemTable
->
pPool
);
tRBTreeCreate
(
pMemTable
->
tbDataTree
,
tTbDataCmprFn
);
*
ppMemTable
=
pMemTable
;
return
code
;
...
...
@@ -406,6 +417,8 @@ static int32_t tsdbGetOrCreateTbData(SMemTable *pMemTable, tb_uid_t suid, tb_uid
pMemTable
->
aBucket
[
idx
]
=
pTbData
;
pMemTable
->
nTbData
++
;
tRBTreePut
(
pMemTable
->
tbDataTree
,
pTbData
->
rbtn
);
taosWUnLockLatch
(
&
pMemTable
->
latch
);
_exit:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录