Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
4cacd72f
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看板
提交
4cacd72f
编写于
6月 20, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
50284207
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
113 addition
and
43 deletion
+113
-43
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+8
-8
source/dnode/vnode/src/tsdb/tsdbUtil.c
source/dnode/vnode/src/tsdb/tsdbUtil.c
+105
-35
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
4cacd72f
...
...
@@ -52,7 +52,6 @@ typedef struct SAggrBlkCol SAggrBlkCol;
typedef
struct
SColData
SColData
;
typedef
struct
SBlockDataHdr
SBlockDataHdr
;
typedef
struct
SBlockData
SBlockData
;
typedef
struct
SReadH
SReadH
;
typedef
struct
SDelFile
SDelFile
;
typedef
struct
STsdbCacheFile
STsdbCacheFile
;
typedef
struct
SHeadFile
SHeadFile
;
...
...
@@ -365,6 +364,7 @@ struct SBlockData {
TSKEY
*
aTSKEY
;
int32_t
maxCol
;
int32_t
nColData
;
SColData
**
apColData
;
SColData
*
aColData
;
};
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
4cacd72f
...
...
@@ -489,11 +489,11 @@ void tsdbFidKeyRange(int32_t fid, int32_t minutes, int8_t precision, TSKEY *minK
// TSDBROW ======================================================
TSDBKEY
tsdbRowKey
(
TSDBROW
*
pRow
)
{
//
if (pRow->type == 0) {
if
(
pRow
->
type
==
0
)
{
return
(
TSDBKEY
){.
version
=
pRow
->
version
,
.
ts
=
pRow
->
pTSRow
->
ts
};
//
} else {
//
return (TSDBKEY){.version = pRow->pBlockData->aVersion[pRow->iRow], .ts = pRow->pBlockData->aTSKEY[pRow->iRow]};
//
}
}
else
{
return
(
TSDBKEY
){.
version
=
pRow
->
pBlockData
->
aVersion
[
pRow
->
iRow
],
.
ts
=
pRow
->
pBlockData
->
aTSKEY
[
pRow
->
iRow
]};
}
}
void
tsdbRowGetColVal
(
TSDBROW
*
pRow
,
STSchema
*
pTSchema
,
int32_t
iCol
,
SColVal
*
pColVal
)
{
...
...
@@ -702,21 +702,97 @@ int32_t tGetKEYINFO(uint8_t *p, KEYINFO *pKeyInfo) {
return
n
;
}
// SColData ========================================
void
tColDataReset
(
SColData
*
pColData
)
{
// TODO
}
void
tColDataClear
(
SColData
*
pColData
)
{
// TODO
}
int32_t
tColDataAppendValue
(
SColData
*
pColData
,
SColVal
*
pColVal
)
{
int32_t
code
=
0
;
// TODO
return
code
;
}
int32_t
tColDataCmprFn
(
const
void
*
p1
,
const
void
*
p2
)
{
if
(((
SColData
*
)
p1
)
->
cid
<
((
SColData
*
)
p2
)
->
cid
)
{
return
-
1
;
}
else
if
(((
SColData
*
)
p1
)
->
cid
>
((
SColData
*
)
p2
)
->
cid
)
{
return
1
;
}
return
0
;
}
// SBlockData ======================================================
static
int32_t
tsdbBlockDataAppendRow0
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
)
{
static
int32_t
tBlockDataAddColData
(
SBlockData
*
pBlockData
,
int32_t
iColData
)
{
int32_t
code
=
0
;
int32_t
nColData
=
pBlockData
->
nColData
;
pBlockData
->
nColData
++
;
if
(
pBlockData
->
nColData
>
pBlockData
->
maxCol
)
{
if
(
pBlockData
->
maxCol
==
0
)
{
pBlockData
->
maxCol
=
16
;
}
else
{
pBlockData
->
maxCol
*=
2
;
}
code
=
tsdbRealloc
((
uint8_t
**
)
&
pBlockData
->
apColData
,
sizeof
(
SColData
*
)
*
pBlockData
->
maxCol
);
if
(
code
)
goto
_exit
;
code
=
tsdbRealloc
((
uint8_t
**
)
&
pBlockData
->
aColData
,
sizeof
(
SColData
)
*
pBlockData
->
maxCol
);
if
(
code
)
goto
_exit
;
for
(
int32_t
iColData
=
nColData
;
iColData
<
pBlockData
->
maxCol
;
iColData
++
)
{
pBlockData
->
aColData
[
iColData
]
=
tColDataInit
();
}
}
// memmove (todo)
// int32_t size = sizeof(SColData *) * (nColData - iColData);
// if (size) {
// memmove();
// }
pBlockData
->
apColData
[
iColData
]
=
&
pBlockData
->
aColData
[
nColData
];
_exit:
return
code
;
}
static
int32_t
tBlockDataAppendRow0
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
)
{
int32_t
code
=
0
;
int32_t
nRow
=
pBlockData
->
nRow
;
TSDBKEY
key
=
tsdbRowKey
(
pRow
);
int32_t
iColumn
;
int32_t
nColumn
;
int32_t
iColData
;
SColVal
cv
;
SColVal
colVal
;
SColVal
*
pColVal
=
&
colVal
;
ASSERT
(
pTSchema
);
ASSERT
(
pTSchema
->
version
==
TSDBROW_SVERSION
(
pRow
));
pBlockData
->
nRow
++
;
// TSDBKEY (todo)
// TSDBKEY
if
(
pBlockData
->
nRow
>
pBlockData
->
maxRow
)
{
if
(
pBlockData
->
maxRow
==
0
)
{
pBlockData
->
maxRow
=
1024
;
}
else
{
pBlockData
->
maxRow
*=
2
;
}
ASSERT
(
pBlockData
->
maxRow
>=
pBlockData
->
nRow
);
code
=
tsdbRealloc
((
uint8_t
**
)
&
pBlockData
->
aTSKEY
,
sizeof
(
TSKEY
)
*
pBlockData
->
maxRow
);
if
(
code
)
goto
_err
;
code
=
tsdbRealloc
((
uint8_t
**
)
&
pBlockData
->
aVersion
,
sizeof
(
int64_t
)
*
pBlockData
->
maxRow
);
if
(
code
)
goto
_err
;
}
pBlockData
->
aVersion
[
nRow
]
=
key
.
version
;
pBlockData
->
aTSKEY
[
nRow
]
=
key
.
ts
;
...
...
@@ -737,14 +813,14 @@ static int32_t tsdbBlockDataAppendRow0(SBlockData *pBlockData, TSDBROW *pRow, ST
if
(
pTColumn
&&
pColData
)
{
if
(
pTColumn
->
colId
==
pColData
->
cid
)
{
tsdbRowGetColVal
(
pRow
,
pTSchema
,
iColumn
,
&
cv
);
//
tsdbRowGetColVal(pRow, pTSchema, iColumn, &cv);
}
else
if
(
pTColumn
->
colId
<
pColData
->
cid
)
{
// add a new SColData, and append the column value cv to the SColData
}
else
{
// add a None to the column value
}
}
else
if
(
pTColumn
)
{
tsdbRowGetColVal
(
pRow
,
pTSchema
,
iColumn
,
&
cv
);
//
tsdbRowGetColVal(pRow, pTSchema, iColumn, &cv);
// add a new SColData, and append the column value cv to the SColData
}
else
{
iColData
++
;
...
...
@@ -752,15 +828,20 @@ static int32_t tsdbBlockDataAppendRow0(SBlockData *pBlockData, TSDBROW *pRow, ST
}
return
code
;
_err:
return
code
;
}
static
int32_t
t
sdb
BlockDataAppendRow1
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
)
{
static
int32_t
tBlockDataAppendRow1
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
)
{
int32_t
code
=
0
;
int32_t
nRow
=
pBlockData
->
nRow
;
TSDBKEY
key
=
tsdbRowKey
(
pRow
);
int32_t
iColData
;
int32_t
iColDataRow
;
int32_t
nColDataRow
;
SColVal
colVal
;
SColVal
*
pColVal
=
&
colVal
;
pBlockData
->
nRow
++
;
...
...
@@ -806,9 +887,9 @@ int32_t tBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTS
TSDBKEY
key
=
tsdbRowKey
(
pRow
);
if
(
pRow
->
type
==
0
)
{
code
=
t
sdb
BlockDataAppendRow0
(
pBlockData
,
pRow
,
pTSchema
);
code
=
tBlockDataAppendRow0
(
pBlockData
,
pRow
,
pTSchema
);
}
else
if
(
pRow
->
type
==
1
)
{
code
=
t
sdb
BlockDataAppendRow1
(
pBlockData
,
pRow
);
code
=
tBlockDataAppendRow1
(
pBlockData
,
pRow
);
}
return
code
;
...
...
@@ -827,14 +908,3 @@ void tBlockDataClear(SBlockData *pBlockData) {
tsdbFree
(
pBlockData
->
aColData
[
iCol
].
pData
);
}
}
// SColData ========================================
int32_t
tColDataCmprFn
(
const
void
*
p1
,
const
void
*
p2
)
{
if
(((
SColData
*
)
p1
)
->
cid
<
((
SColData
*
)
p2
)
->
cid
)
{
return
-
1
;
}
else
if
(((
SColData
*
)
p1
)
->
cid
>
((
SColData
*
)
p2
)
->
cid
)
{
return
1
;
}
return
0
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录