Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
39626c1b
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看板
提交
39626c1b
编写于
6月 10, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
2f87d80d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
110 addition
and
49 deletion
+110
-49
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+18
-5
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+67
-41
source/dnode/vnode/src/tsdb/tsdbMemTable.c
source/dnode/vnode/src/tsdb/tsdbMemTable.c
+2
-2
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
+1
-1
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+22
-0
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
39626c1b
...
...
@@ -78,6 +78,12 @@ int32_t tsdbFSEnd(STsdbFS *pFS, int8_t rollback);
typedef
struct
SDelData
SDelData
;
typedef
struct
SDelIdx
SDelIdx
;
// SDataFWriter
typedef
struct
SDataFWriter
SDataFWriter
;
// SDataFReader
typedef
struct
SDataFReader
SDataFReader
;
// SDelFWriter
typedef
struct
SDelFWriter
SDelFWriter
;
...
...
@@ -89,11 +95,17 @@ int32_t tsdbWriteDelIdx(SDelFWriter *pWriter, SDelIdx *pDelIdx, uint8_t **ppBuf)
// SDelFReader
typedef
struct
SDelFReader
SDelFReader
;
int32_t
tsdbDelFReaderOpen
(
SDelFReader
*
pReader
,
SDelFile
*
pFile
);
int32_t
tsdbDelFReaderOpen
(
SDelFReader
*
*
p
pReader
,
SDelFile
*
pFile
);
int32_t
tsdbDelFReaderClose
(
SDelFReader
*
pReader
);
int32_t
tsdbReadDelData
(
SDelFReader
*
pReader
,
SDelData
*
pDelData
,
uint8_t
**
ppBuf
);
int32_t
tsdbReadDelIdx
(
SDelFReader
*
pReader
,
SDelIdx
*
pDelIdx
,
uint8_t
**
ppBuf
);
// SCacheFWriter
typedef
struct
SCacheFWriter
SCacheFWriter
;
// SCacheFReader
typedef
struct
SCacheFReader
SCacheFReader
;
// tsdbCommit.c ==============================================================================================
// old
...
...
@@ -314,7 +326,7 @@ struct SMemTable {
TSDBKEY
minKey
;
TSDBKEY
maxKey
;
int64_t
nRow
;
int64_t
nDel
Op
;
int64_t
nDel
;
SArray
*
aTbData
;
// SArray<STbData*>
};
...
...
@@ -782,10 +794,11 @@ typedef struct {
struct
SDelIdx
{
uint32_t
delimiter
;
int8_t
flags
;
int64_t
nItem
;
uint8_t
flags
;
uint32_t
nOffset
;
uint8_t
*
pOffset
;
uint8_t
*
pDelIdxItem
;
uint32_t
nData
;
uint8_t
*
pData
;
};
#endif
...
...
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
39626c1b
...
...
@@ -21,6 +21,7 @@ struct SCommitter {
STsdb
*
pTsdb
;
uint8_t
*
pBuf1
;
uint8_t
*
pBuf2
;
uint8_t
*
pBuf3
;
/* commit data */
int32_t
minutes
;
int8_t
precision
;
...
...
@@ -37,12 +38,10 @@ struct SCommitter {
STbData
*
pTbData
;
SBlockIdx
*
pBlockIdx
;
/* commit del */
SDelFReader
*
pTombstoneReader
;
SDelFWriter
*
pTombstoneWritter
;
SDelIdx
delIdxO
;
SDelIdx
delIdxN
;
SDelData
delDataO
;
SDelData
delDataN
;
SDelFReader
*
pDelFReader
;
SDelFWriter
*
pDelFWriter
;
SDelIdx
oDelIdx
;
SDelIdx
nDelIdx
;
/* commit cache */
};
...
...
@@ -164,8 +163,35 @@ _err:
}
static
int32_t
tsdbCommitDelStart
(
SCommitter
*
pCommitter
)
{
int32_t
code
=
0
;
// TODO
int32_t
code
=
0
;
STsdb
*
pTsdb
=
pCommitter
->
pTsdb
;
SMemTable
*
pMemTable
=
pTsdb
->
imem
;
SDelFile
*
pDelFileR
=
NULL
;
// TODO
SDelFile
*
pDelFileW
=
NULL
;
// TODO
if
(
pDelFileR
)
{
code
=
tsdbDelFReaderOpen
(
&
pCommitter
->
pDelFReader
,
pDelFileR
);
if
(
code
)
{
goto
_err
;
}
code
=
tsdbReadDelIdx
(
pCommitter
->
pDelFReader
,
&
pCommitter
->
oDelIdx
,
&
pCommitter
->
pBuf1
);
if
(
code
)
{
goto
_err
;
}
}
code
=
tsdbDelFWriterOpen
(
&
pCommitter
->
pDelFWriter
,
pDelFileW
);
if
(
code
)
{
goto
_err
;
}
_exit:
tsdbDebug
(
"vgId:%d commit del start"
,
TD_VID
(
pTsdb
->
pVnode
));
return
code
;
_err:
tsdbError
(
"vgId:%d commit del start failed since %s"
,
TD_VID
(
pTsdb
->
pVnode
),
tstrerror
(
code
));
return
code
;
}
...
...
@@ -182,36 +208,36 @@ static int32_t tsdbCommitDelImpl(SCommitter *pCommitter) {
SDelIdx
*
pDelIdx
=
NULL
;
while
(
iTbData
<
nTbData
||
iDelIdx
<
nDelIdx
)
{
if
(
iTbData
<
nTbData
)
{
pTbData
=
(
STbData
*
)
taosArrayGetP
(
pMemTable
->
aTbData
,
iTbData
);
}
else
{
pTbData
=
NULL
;
}
if
(
iDelIdx
<
nDelIdx
)
{
// pDelIdx = ; // TODO
}
else
{
pDelIdx
=
NULL
;
}
if
(
pTbData
&&
pDelIdx
)
{
c
=
tTABLEIDCmprFn
(
pTbData
,
pDelIdx
);
if
(
c
==
0
)
{
iTbData
++
;
iDelIdx
++
;
}
else
if
(
c
<
0
)
{
iTbData
++
;
pDelIdx
=
NULL
;
}
else
{
iDelIdx
++
;
pTbData
=
NULL
;
}
}
else
{
if
(
pTbData
)
{
iTbData
++
;
}
else
{
iDelIdx
++
;
}
}
//
if (iTbData < nTbData) {
//
pTbData = (STbData *)taosArrayGetP(pMemTable->aTbData, iTbData);
//
} else {
//
pTbData = NULL;
//
}
//
if (iDelIdx < nDelIdx) {
//
// pDelIdx = ; // TODO
//
} else {
//
pDelIdx = NULL;
//
}
//
if (pTbData && pDelIdx) {
//
c = tTABLEIDCmprFn(pTbData, pDelIdx);
//
if (c == 0) {
//
iTbData++;
//
iDelIdx++;
//
} else if (c < 0) {
//
iTbData++;
//
pDelIdx = NULL;
//
} else {
//
iDelIdx++;
//
pTbData = NULL;
//
}
//
} else {
//
if (pTbData) {
//
iTbData++;
//
} else {
//
iDelIdx++;
//
}
//
}
// TODO: commit with the pTbData and pDelIdx
}
...
...
@@ -222,8 +248,6 @@ static int32_t tsdbCommitDelImpl(SCommitter *pCommitter) {
static
int32_t
tsdbCommitDelEnd
(
SCommitter
*
pCommitter
)
{
int32_t
code
=
0
;
ASSERT
(
pCommitter
->
delIdxN
.
nItem
>
0
);
return
code
;
_err:
...
...
@@ -235,7 +259,7 @@ static int32_t tsdbCommitDel(SCommitter *pCommitter) {
STsdb
*
pTsdb
=
pCommitter
->
pTsdb
;
SMemTable
*
pMemTable
=
pTsdb
->
imem
;
if
(
pMemTable
->
nDel
Op
==
0
)
{
if
(
pMemTable
->
nDel
==
0
)
{
goto
_exit
;
}
...
...
@@ -258,9 +282,11 @@ static int32_t tsdbCommitDel(SCommitter *pCommitter) {
}
_exit:
tsdbDebug
(
"vgId:%d commit del data, nDel:%"
PRId64
,
TD_VID
(
pTsdb
->
pVnode
),
pMemTable
->
nDel
);
return
code
;
_err:
tsdbError
(
"vgId:%d failed to commit del data since %s"
,
TD_VID
(
pTsdb
->
pVnode
),
tstrerror
(
code
));
return
code
;
}
...
...
source/dnode/vnode/src/tsdb/tsdbMemTable.c
浏览文件 @
39626c1b
...
...
@@ -47,7 +47,7 @@ int32_t tsdbMemTableCreate(STsdb *pTsdb, SMemTable **ppMemTable) {
pMemTable
->
minKey
=
(
TSDBKEY
){.
ts
=
TSKEY_MAX
,
.
version
=
INT64_MAX
};
pMemTable
->
maxKey
=
(
TSDBKEY
){.
ts
=
TSKEY_MIN
,
.
version
=
-
1
};
pMemTable
->
nRow
=
0
;
pMemTable
->
nDel
Op
=
0
;
pMemTable
->
nDel
=
0
;
pMemTable
->
aTbData
=
taosArrayInit
(
128
,
sizeof
(
STbData
*
));
if
(
pMemTable
->
aTbData
==
NULL
)
{
code
=
TSDB_CODE_OUT_OF_MEMORY
;
...
...
@@ -174,7 +174,7 @@ int32_t tsdbDeleteTableData(STsdb *pTsdb, int64_t version, tb_uid_t suid, tb_uid
// update the state of pMemTable and other (todo)
pMemTable
->
nDel
Op
++
;
pMemTable
->
nDel
++
;
tsdbError
(
"vgId:%d delete data from table suid:%"
PRId64
" uid:%"
PRId64
" skey:%"
PRId64
" eKey:%"
PRId64
" since %s"
,
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
39626c1b
...
...
@@ -109,7 +109,7 @@ struct SDelFReader {
TdFilePtr
pReadH
;
};
int32_t
tsdbDelFReaderOpen
(
SDelFReader
*
pReader
,
SDelFile
*
pFile
)
{
int32_t
tsdbDelFReaderOpen
(
SDelFReader
*
*
p
pReader
,
SDelFile
*
pFile
)
{
int32_t
code
=
0
;
// TODO
return
code
;
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
39626c1b
...
...
@@ -51,4 +51,26 @@ int32_t tsdbKeyCmprFn(const void *p1, const void *p2) {
}
return
0
;
}
int32_t
tPutSDelIdx
(
uint8_t
*
p
,
SDelIdx
*
pDelIdx
)
{
int32_t
n
=
0
;
n
+=
tPutU32
(
p
?
p
+
n
:
p
,
pDelIdx
->
delimiter
);
n
+=
tPutU8
(
p
?
p
+
n
:
p
,
pDelIdx
->
flags
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelIdx
->
pOffset
,
pDelIdx
->
nOffset
);
n
+=
tPutBinary
(
p
?
p
+
n
:
p
,
pDelIdx
->
pData
,
pDelIdx
->
nData
);
return
n
;
}
int32_t
tGetSDelIdx
(
uint8_t
*
p
,
SDelIdx
*
pDelIdx
)
{
int32_t
n
=
0
;
n
+=
tGetU32
(
p
+
n
,
&
pDelIdx
->
delimiter
);
n
+=
tGetU8
(
p
+
n
,
&
pDelIdx
->
flags
);
n
+=
tGetBinary
(
p
+
n
,
&
pDelIdx
->
pOffset
,
&
pDelIdx
->
nOffset
);
n
+=
tGetBinary
(
p
+
n
,
&
pDelIdx
->
pData
,
&
pDelIdx
->
nData
);
return
n
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录