Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
4bfdfe89
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1187
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看板
提交
4bfdfe89
编写于
9月 27, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
adjust api
上级
f16029ad
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
67 addition
and
28 deletion
+67
-28
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+1
-1
source/dnode/vnode/src/tsdb/tsdbCache.c
source/dnode/vnode/src/tsdb/tsdbCache.c
+2
-1
source/dnode/vnode/src/tsdb/tsdbCommit.c
source/dnode/vnode/src/tsdb/tsdbCommit.c
+4
-3
source/dnode/vnode/src/tsdb/tsdbRead.c
source/dnode/vnode/src/tsdb/tsdbRead.c
+11
-8
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
+13
-3
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
+4
-3
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+32
-9
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
4bfdfe89
...
...
@@ -150,7 +150,7 @@ int32_t tCmprBlockL(void const *lhs, void const *rhs);
int32_t
tBlockDataCreate
(
SBlockData
*
pBlockData
);
void
tBlockDataDestroy
(
SBlockData
*
pBlockData
,
int8_t
deepClear
);
int32_t
tBlockDataInit
(
SBlockData
*
pBlockData
,
int64_t
suid
,
int64_t
uid
,
STSchema
*
pTSchema
);
int32_t
tBlockDataInit
(
SBlockData
*
pBlockData
,
TABLEID
*
pId
,
STSchema
*
pTSchema
,
int16_t
*
aCid
,
int32_t
nCid
);
int32_t
tBlockDataInitEx
(
SBlockData
*
pBlockData
,
SBlockData
*
pBlockDataFrom
);
void
tBlockDataReset
(
SBlockData
*
pBlockData
);
int32_t
tBlockDataAppendRow
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
,
int64_t
uid
);
...
...
source/dnode/vnode/src/tsdb/tsdbCache.c
浏览文件 @
4bfdfe89
...
...
@@ -612,7 +612,8 @@ static int32_t getNextRowFromFS(void *iter, TSDBROW **ppRow) {
tMapDataGetItemByIdx
(
&
state
->
blockMap
,
state
->
iBlock
,
&
block
,
tGetDataBlk
);
/* code = tsdbReadBlockData(state->pDataFReader, &state->blockIdx, &block, &state->blockData, NULL, NULL); */
tBlockDataReset
(
state
->
pBlockData
);
code
=
tBlockDataInit
(
state
->
pBlockData
,
state
->
suid
,
state
->
uid
,
state
->
pTSchema
);
TABLEID
tid
=
{.
suid
=
state
->
suid
,
.
uid
=
state
->
uid
};
code
=
tBlockDataInit
(
state
->
pBlockData
,
&
tid
,
state
->
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
code
=
tsdbReadDataBlock
(
state
->
pDataFReader
,
&
block
,
state
->
pBlockData
);
...
...
source/dnode/vnode/src/tsdb/tsdbCommit.c
浏览文件 @
4bfdfe89
...
...
@@ -1305,7 +1305,8 @@ static int32_t tsdbInitLastBlockIfNeed(SCommitter *pCommitter, TABLEID id) {
if
(
!
pBDatal
->
suid
&&
!
pBDatal
->
uid
)
{
ASSERT
(
pCommitter
->
skmTable
.
suid
==
id
.
suid
);
ASSERT
(
pCommitter
->
skmTable
.
uid
==
id
.
uid
);
code
=
tBlockDataInit
(
pBDatal
,
id
.
suid
,
id
.
suid
?
0
:
id
.
uid
,
pCommitter
->
skmTable
.
pTSchema
);
TABLEID
tid
=
{.
suid
=
id
.
suid
,
.
uid
=
id
.
suid
?
0
:
id
.
uid
};
code
=
tBlockDataInit
(
pBDatal
,
&
tid
,
pCommitter
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_exit
;
}
...
...
@@ -1428,9 +1429,9 @@ static int32_t tsdbCommitFileDataImpl(SCommitter *pCommitter) {
// impl
code
=
tsdbUpdateTableSchema
(
pCommitter
->
pTsdb
->
pVnode
->
pMeta
,
id
.
suid
,
id
.
uid
,
&
pCommitter
->
skmTable
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
&
pCommitter
->
dReader
.
bData
,
id
.
suid
,
id
.
uid
,
pCommitter
->
skmTable
.
pTSchema
);
code
=
tBlockDataInit
(
&
pCommitter
->
dReader
.
bData
,
&
id
,
pCommitter
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
&
pCommitter
->
dWriter
.
bData
,
id
.
suid
,
id
.
uid
,
pCommitter
->
skmTable
.
pTSchema
);
code
=
tBlockDataInit
(
&
pCommitter
->
dWriter
.
bData
,
&
id
,
pCommitter
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
/* merge with data in .data file */
...
...
source/dnode/vnode/src/tsdb/tsdbRead.c
浏览文件 @
4bfdfe89
...
...
@@ -1741,7 +1741,7 @@ static int32_t doMergeMultiLevelRows(STsdbReader* pReader, STableBlockScanInfo*
tsLast
=
getCurrentKeyInLastBlock
(
pLastBlockReader
);
}
int64_t
key
=
hasDataInFileBlock
(
pBlockData
,
pDumpInfo
)
?
pBlockData
->
aTSKEY
[
pDumpInfo
->
rowIndex
]
:
INT64_MIN
;
int64_t
key
=
hasDataInFileBlock
(
pBlockData
,
pDumpInfo
)
?
pBlockData
->
aTSKEY
[
pDumpInfo
->
rowIndex
]
:
INT64_MIN
;
TSDBKEY
k
=
TSDBROW_KEY
(
pRow
);
TSDBKEY
ik
=
TSDBROW_KEY
(
piRow
);
...
...
@@ -2009,12 +2009,12 @@ static int64_t getCurrentKeyInLastBlock(SLastBlockReader* pLastBlockReader) {
}
static
bool
hasDataInLastBlock
(
SLastBlockReader
*
pLastBlockReader
)
{
return
pLastBlockReader
->
mergeTree
.
pIter
!=
NULL
;
}
bool
hasDataInFileBlock
(
const
SBlockData
*
pBlockData
,
const
SFileBlockDumpInfo
*
pDumpInfo
)
{
if
(
pBlockData
->
nRow
>
0
)
{
ASSERT
(
pBlockData
->
nRow
==
pDumpInfo
->
totalRows
);
bool
hasDataInFileBlock
(
const
SBlockData
*
pBlockData
,
const
SFileBlockDumpInfo
*
pDumpInfo
)
{
if
(
pBlockData
->
nRow
>
0
)
{
ASSERT
(
pBlockData
->
nRow
==
pDumpInfo
->
totalRows
);
}
return
pBlockData
->
nRow
>
0
&&
(
!
pDumpInfo
->
allDumped
);
return
pBlockData
->
nRow
>
0
&&
(
!
pDumpInfo
->
allDumped
);
}
int32_t
mergeRowsInFileBlocks
(
SBlockData
*
pBlockData
,
STableBlockScanInfo
*
pBlockScanInfo
,
int64_t
key
,
...
...
@@ -2452,7 +2452,8 @@ static int32_t doBuildDataBlock(STsdbReader* pReader) {
code
=
buildComposedDataBlock
(
pReader
);
}
else
if
(
fileBlockShouldLoad
(
pReader
,
pBlockInfo
,
pBlock
,
pScanInfo
,
keyInBuf
,
pLastBlockReader
))
{
tBlockDataReset
(
&
pStatus
->
fileBlockData
);
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
pReader
->
suid
,
pScanInfo
->
uid
,
pReader
->
pSchema
);
TABLEID
tid
=
{.
suid
=
pReader
->
suid
,
.
uid
=
pScanInfo
->
uid
};
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
&
tid
,
pReader
->
pSchema
,
NULL
,
0
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
...
...
@@ -2932,7 +2933,8 @@ static int32_t checkForNeighborFileBlock(STsdbReader* pReader, STableBlockScanIn
// 3. load the neighbor block, and set it to be the currently accessed file data block
tBlockDataReset
(
&
pStatus
->
fileBlockData
);
int32_t
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
pReader
->
suid
,
pFBlock
->
uid
,
pReader
->
pSchema
);
TABLEID
tid
=
{.
suid
=
pReader
->
suid
,
.
uid
=
pFBlock
->
uid
};
int32_t
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
&
tid
,
pReader
->
pSchema
,
NULL
,
0
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
return
code
;
}
...
...
@@ -3684,7 +3686,8 @@ static SArray* doRetrieveDataBlock(STsdbReader* pReader) {
STableBlockScanInfo
*
pBlockScanInfo
=
taosHashGet
(
pStatus
->
pTableMap
,
&
pFBlock
->
uid
,
sizeof
(
pFBlock
->
uid
));
tBlockDataReset
(
&
pStatus
->
fileBlockData
);
int32_t
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
pReader
->
suid
,
pBlockScanInfo
->
uid
,
pReader
->
pSchema
);
TABLEID
tid
=
{.
suid
=
pReader
->
suid
,
.
uid
=
pBlockScanInfo
->
uid
};
int32_t
code
=
tBlockDataInit
(
&
pStatus
->
fileBlockData
,
&
tid
,
pReader
->
pSchema
,
NULL
,
0
);
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
code
;
return
NULL
;
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
4bfdfe89
...
...
@@ -926,12 +926,13 @@ _err:
return
code
;
}
static
int32_t
tsdbReadBlockDataImpl
(
SDataFReader
*
pReader
,
SBlockInfo
*
pBlkInfo
,
SBlockData
*
pBlockData
)
{
static
int32_t
tsdbReadBlockDataImpl
(
SDataFReader
*
pReader
,
SBlockInfo
*
pBlkInfo
,
SBlockData
*
pBlockData
,
int32_t
iStt
)
{
int32_t
code
=
0
;
tBlockDataClear
(
pBlockData
);
STsdbFD
*
pFD
=
pReader
->
pDataFD
;
STsdbFD
*
pFD
=
(
iStt
<
0
)
?
pReader
->
pDataFD
:
pReader
->
aSttFD
[
iStt
]
;
// uid + version + tskey
code
=
tRealloc
(
&
pReader
->
aBuf
[
0
],
pBlkInfo
->
szKey
);
...
...
@@ -1070,9 +1071,12 @@ _err:
int32_t
tsdbReadDataBlock
(
SDataFReader
*
pReader
,
SDataBlk
*
pDataBlk
,
SBlockData
*
pBlockData
)
{
int32_t
code
=
0
;
code
=
tsdbReadBlockDataImpl
(
pReader
,
&
pDataBlk
->
aSubBlock
[
0
],
pBlockData
);
code
=
tsdbReadBlockDataImpl
(
pReader
,
&
pDataBlk
->
aSubBlock
[
0
],
pBlockData
,
-
1
);
if
(
code
)
goto
_err
;
ASSERT
(
pDataBlk
->
nSubBlock
==
1
);
#if 0
if (pDataBlk->nSubBlock > 1) {
SBlockData bData1;
SBlockData bData2;
...
...
@@ -1113,6 +1117,7 @@ int32_t tsdbReadDataBlock(SDataFReader *pReader, SDataBlk *pDataBlk, SBlockData
tBlockDataDestroy(&bData1, 1);
tBlockDataDestroy(&bData2, 1);
}
#endif
return
code
;
...
...
@@ -1124,6 +1129,10 @@ _err:
int32_t
tsdbReadSttBlock
(
SDataFReader
*
pReader
,
int32_t
iStt
,
SSttBlk
*
pSttBlk
,
SBlockData
*
pBlockData
)
{
int32_t
code
=
0
;
code
=
tsdbReadBlockDataImpl
(
pReader
,
&
pSttBlk
->
bInfo
,
pBlockData
,
iStt
);
if
(
code
)
goto
_err
;
#if 0
// alloc
code = tRealloc(&pReader->aBuf[0], pSttBlk->bInfo.szBlock);
if (code) goto _err;
...
...
@@ -1136,6 +1145,7 @@ int32_t tsdbReadSttBlock(SDataFReader *pReader, int32_t iStt, SSttBlk *pSttBlk,
code = tDecmprBlockData(pReader->aBuf[0], pSttBlk->bInfo.szBlock, pBlockData, &pReader->aBuf[1]);
if (code) goto _err;
#endif
return
code
;
_err:
...
...
source/dnode/vnode/src/tsdb/tsdbSnapshot.c
浏览文件 @
4bfdfe89
...
...
@@ -319,7 +319,7 @@ static int32_t tsdbSnapReadData(STsdbSnapReader* pReader, uint8_t** ppData) {
code
=
tsdbUpdateTableSchema
(
pTsdb
->
pVnode
->
pMeta
,
id
.
suid
,
id
.
uid
,
&
pReader
->
skmTable
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
pBlockData
,
id
.
suid
,
id
.
uid
,
pReader
->
skmTable
.
pTSchema
);
code
=
tBlockDataInit
(
pBlockData
,
&
id
,
pReader
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
while
(
pRowInfo
->
suid
==
id
.
suid
&&
pRowInfo
->
uid
==
id
.
uid
)
{
...
...
@@ -715,7 +715,7 @@ static int32_t tsdbSnapWriteTableDataStart(STsdbSnapWriter* pWriter, TABLEID* pI
if
(
code
)
goto
_err
;
tMapDataReset
(
&
pWriter
->
dWriter
.
mDataBlk
);
code
=
tBlockDataInit
(
&
pWriter
->
dWriter
.
bData
,
pId
->
suid
,
pId
->
uid
,
pWriter
->
skmTable
.
pTSchema
);
code
=
tBlockDataInit
(
&
pWriter
->
dWriter
.
bData
,
pId
,
pWriter
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
return
code
;
...
...
@@ -1000,7 +1000,8 @@ static int32_t tsdbSnapWriteToSttFile(STsdbSnapWriter* pWriter, int32_t iRow) {
code
=
tsdbUpdateTableSchema
(
pWriter
->
pTsdb
->
pVnode
->
pMeta
,
pWriter
->
id
.
suid
,
pWriter
->
id
.
uid
,
&
pWriter
->
skmTable
);
if
(
code
)
goto
_err
;
code
=
tBlockDataInit
(
pBData
,
pWriter
->
id
.
suid
,
pWriter
->
id
.
suid
?
0
:
pWriter
->
id
.
uid
,
pWriter
->
skmTable
.
pTSchema
);
TABLEID
tid
=
{.
suid
=
pWriter
->
id
.
suid
,
.
uid
=
pWriter
->
id
.
suid
?
0
:
pWriter
->
id
.
uid
};
code
=
tBlockDataInit
(
pBData
,
&
tid
,
pWriter
->
skmTable
.
pTSchema
,
NULL
,
0
);
if
(
code
)
goto
_err
;
}
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
4bfdfe89
...
...
@@ -948,24 +948,47 @@ void tBlockDataDestroy(SBlockData *pBlockData, int8_t deepClear) {
pBlockData
->
aColData
=
NULL
;
}
int32_t
tBlockDataInit
(
SBlockData
*
pBlockData
,
int64_t
suid
,
int64_t
uid
,
STSchema
*
pTSchema
)
{
int32_t
tBlockDataInit
(
SBlockData
*
pBlockData
,
TABLEID
*
pId
,
STSchema
*
pTSchema
,
int16_t
*
aCid
,
int32_t
nCid
)
{
int32_t
code
=
0
;
ASSERT
(
suid
||
uid
);
ASSERT
(
pId
->
suid
||
pId
->
uid
);
pBlockData
->
suid
=
suid
;
pBlockData
->
uid
=
uid
;
pBlockData
->
suid
=
pId
->
suid
;
pBlockData
->
uid
=
pId
->
uid
;
pBlockData
->
nRow
=
0
;
taosArrayClear
(
pBlockData
->
aIdx
);
for
(
int32_t
iColumn
=
1
;
iColumn
<
pTSchema
->
numOfCols
;
iColumn
++
)
{
if
(
aCid
)
{
int32_t
iColumn
=
1
;
STColumn
*
pTColumn
=
&
pTSchema
->
columns
[
iColumn
];
for
(
int32_t
iCid
=
0
;
iCid
<
nCid
;
iCid
++
)
{
while
(
pTColumn
&&
pTColumn
->
colId
<
aCid
[
iCid
])
{
iColumn
++
;
pTColumn
=
(
iColumn
<
pTSchema
->
numOfCols
)
?
&
pTSchema
->
columns
[
iColumn
]
:
NULL
;
}
SColData
*
pColData
;
code
=
tBlockDataAddColData
(
pBlockData
,
iColumn
-
1
,
&
pColData
);
if
(
code
)
goto
_exit
;
if
(
pTColumn
==
NULL
)
{
break
;
}
else
if
(
pTColumn
->
colId
==
aCid
[
iCid
])
{
SColData
*
pColData
;
code
=
tBlockDataAddColData
(
pBlockData
,
taosArrayGetSize
(
pBlockData
->
aIdx
),
&
pColData
);
if
(
code
)
goto
_exit
;
tColDataInit
(
pColData
,
pTColumn
->
colId
,
pTColumn
->
type
,
(
pTColumn
->
flags
&
COL_SMA_ON
)
?
1
:
0
);
tColDataInit
(
pColData
,
pTColumn
->
colId
,
pTColumn
->
type
,
(
pTColumn
->
flags
&
COL_SMA_ON
)
?
1
:
0
);
iColumn
++
;
pTColumn
=
(
iColumn
<
pTSchema
->
numOfCols
)
?
&
pTSchema
->
columns
[
iColumn
]
:
NULL
;
}
}
}
else
{
for
(
int32_t
iColumn
=
1
;
iColumn
<
pTSchema
->
numOfCols
;
iColumn
++
)
{
STColumn
*
pTColumn
=
&
pTSchema
->
columns
[
iColumn
];
SColData
*
pColData
;
code
=
tBlockDataAddColData
(
pBlockData
,
iColumn
-
1
,
&
pColData
);
if
(
code
)
goto
_exit
;
tColDataInit
(
pColData
,
pTColumn
->
colId
,
pTColumn
->
type
,
(
pTColumn
->
flags
&
COL_SMA_ON
)
?
1
:
0
);
}
}
_exit:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录