Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
50284207
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看板
提交
50284207
编写于
6月 20, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more work
上级
d17d6c50
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
88 addition
and
8 deletion
+88
-8
source/dnode/vnode/src/inc/tsdb.h
source/dnode/vnode/src/inc/tsdb.h
+3
-1
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
+84
-6
未找到文件。
source/dnode/vnode/src/inc/tsdb.h
浏览文件 @
50284207
...
...
@@ -109,6 +109,7 @@ int32_t tGetBlockIdx(uint8_t *p, void *ph);
#define tColDataInit() ((SColData){0})
void
tColDataReset
(
SColData
*
pColData
);
void
tColDataClear
(
SColData
*
pColData
);
int32_t
tColDataAppendValue
(
SColData
*
pColData
,
SColVal
*
pColVal
);
int32_t
tColDataCmprFn
(
const
void
*
p1
,
const
void
*
p2
);
// SBlockData
#define tBlockDataInit() ((SBlockData){0})
...
...
@@ -352,6 +353,7 @@ struct SColData {
int32_t
bytes
;
uint8_t
flags
;
uint8_t
*
pBitMap
;
int32_t
*
pOfst
;
uint32_t
nData
;
uint8_t
*
pData
;
};
...
...
@@ -362,7 +364,7 @@ struct SBlockData {
int64_t
*
aVersion
;
TSKEY
*
aTSKEY
;
int32_t
maxCol
;
int32_t
nCol
;
int32_t
nCol
Data
;
SColData
*
aColData
;
};
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
50284207
...
...
@@ -922,7 +922,7 @@ int32_t tsdbWriteBlockData(SDataFWriter *pWriter, SBlockData *pBlockData, uint8_
// other columns
offset
=
0
;
tMapDataClear
(
&
pSubBlock
->
mBlockCol
);
for
(
int32_t
iCol
=
0
;
iCol
<
pBlockData
->
nCol
;
iCol
++
)
{
for
(
int32_t
iCol
=
0
;
iCol
<
pBlockData
->
nCol
Data
;
iCol
++
)
{
SColData
*
pColData
=
&
pBlockData
->
aColData
[
iCol
];
ASSERT
(
pColData
->
flags
);
...
...
source/dnode/vnode/src/tsdb/tsdbUtil.c
浏览文件 @
50284207
...
...
@@ -506,7 +506,7 @@ void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *
SColData
*
pColData
;
void
*
p
;
p
=
taosbsearch
(
&
(
SColData
){.
cid
=
pTColumn
->
colId
},
pRow
->
pBlockData
->
aColData
,
pRow
->
pBlockData
->
nCol
,
p
=
taosbsearch
(
&
(
SColData
){.
cid
=
pTColumn
->
colId
},
pRow
->
pBlockData
->
aColData
,
pRow
->
pBlockData
->
nCol
Data
,
sizeof
(
SBlockCol
),
tColDataCmprFn
,
TD_EQ
);
if
(
p
)
{
pColData
=
(
SColData
*
)
p
;
...
...
@@ -705,29 +705,107 @@ int32_t tGetKEYINFO(uint8_t *p, KEYINFO *pKeyInfo) {
// SBlockData ======================================================
static
int32_t
tsdbBlockDataAppendRow0
(
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
;
// aKey
ASSERT
(
pTSchema
);
pBlockData
->
nRow
++
;
// TSDBKEY (todo)
pBlockData
->
aVersion
[
nRow
]
=
key
.
version
;
pBlockData
->
aTSKEY
[
nRow
]
=
key
.
ts
;
// other cols
iColumn
=
1
;
nColumn
=
pTSchema
->
numOfCols
;
iColData
=
0
;
while
(
iColumn
<
nColumn
||
iColData
<
pBlockData
->
nColData
)
{
STColumn
*
pTColumn
=
NULL
;
SColData
*
pColData
=
NULL
;
if
(
iColumn
<
nColumn
)
{
pTColumn
=
&
pTSchema
->
columns
[
iColumn
];
}
if
(
iColData
<
pBlockData
->
nColData
)
{
pColData
=
&
pBlockData
->
aColData
[
iColData
];
}
if
(
pTColumn
&&
pColData
)
{
if
(
pTColumn
->
colId
==
pColData
->
cid
)
{
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
);
// add a new SColData, and append the column value cv to the SColData
}
else
{
iColData
++
;
}
}
return
code
;
}
static
int32_t
tsdbBlockDataAppendRow1
(
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
;
// aKey
pBlockData
->
nRow
++
;
// aKey (TODO)
pBlockData
->
aVersion
[
nRow
]
=
key
.
version
;
pBlockData
->
aTSKEY
[
nRow
]
=
key
.
ts
;
// other cols
iColData
=
0
;
iColDataRow
=
0
;
nColDataRow
=
pRow
->
pBlockData
->
nColData
;
while
(
iColData
<
pBlockData
->
nColData
||
iColDataRow
<
nColDataRow
)
{
SColData
*
pColData
=
NULL
;
SColData
*
pColDataRow
=
NULL
;
if
(
iColData
<
pBlockData
->
nColData
)
{
pColData
=
&
pBlockData
->
aColData
[
iColData
];
}
if
(
iColDataRow
<
nColDataRow
)
{
pColDataRow
=
&
pRow
->
pBlockData
->
aColData
[
iColDataRow
];
}
if
(
pColData
&&
pColDataRow
)
{
if
(
pColData
->
cid
==
pColDataRow
->
cid
)
{
// TODO
}
else
if
(
pColData
->
cid
<
pColDataRow
->
cid
)
{
// TODO
}
else
{
// TODO
}
}
else
if
(
pColData
)
{
// TODO
}
else
{
// TODO
}
}
return
code
;
}
int32_t
tBlockDataAppendRow
(
SBlockData
*
pBlockData
,
TSDBROW
*
pRow
,
STSchema
*
pTSchema
)
{
int32_t
code
=
0
;
TSDBKEY
key
=
tsdbRowKey
(
pRow
);
if
(
pRow
->
type
==
0
)
{
ASSERT
(
pTSchema
);
code
=
tsdbBlockDataAppendRow0
(
pBlockData
,
pRow
,
pTSchema
);
}
else
if
(
pRow
->
type
==
1
)
{
code
=
tsdbBlockDataAppendRow1
(
pBlockData
,
pRow
);
...
...
@@ -738,13 +816,13 @@ int32_t tBlockDataAppendRow(SBlockData *pBlockData, TSDBROW *pRow, STSchema *pTS
void
tBlockDataReset
(
SBlockData
*
pBlockData
)
{
pBlockData
->
nRow
=
0
;
pBlockData
->
nCol
=
0
;
pBlockData
->
nCol
Data
=
0
;
}
void
tBlockDataClear
(
SBlockData
*
pBlockData
)
{
tsdbFree
((
uint8_t
*
)
pBlockData
->
aVersion
);
tsdbFree
((
uint8_t
*
)
pBlockData
->
aTSKEY
);
for
(
int32_t
iCol
=
0
;
iCol
<
pBlockData
->
nCol
;
iCol
++
)
{
for
(
int32_t
iCol
=
0
;
iCol
<
pBlockData
->
nCol
Data
;
iCol
++
)
{
tsdbFree
(
pBlockData
->
aColData
[
iCol
].
pBitMap
);
tsdbFree
(
pBlockData
->
aColData
[
iCol
].
pData
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录