Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
0cd932e8
T
TDengine
项目概览
taosdata
/
TDengine
大约 1 年 前同步成功
通知
1184
Star
22015
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0cd932e8
编写于
12月 22, 2021
作者:
dengyihao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor tindex write
上级
ebcb9be3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
43 addition
and
36 deletion
+43
-36
source/libs/index/inc/index_tfile.h
source/libs/index/inc/index_tfile.h
+9
-5
source/libs/index/src/index_tfile.c
source/libs/index/src/index_tfile.c
+34
-31
未找到文件。
source/libs/index/inc/index_tfile.h
浏览文件 @
0cd932e8
...
@@ -27,18 +27,22 @@ extern "C" {
...
@@ -27,18 +27,22 @@ extern "C" {
#endif
#endif
// tfile header content
// tfile header content
// |<---suid--->|<---version--->|<--
colLen-->|<-colName->|<---type-
->|
// |<---suid--->|<---version--->|<--
-----colName------>|<---type-->|<--fstOffset
->|
// |<-uint64_t->|<---int32_t--->|<--
int32_t->|<-colLen-->|<-uint8_t
->|
// |<-uint64_t->|<---int32_t--->|<--
TSDB_COL_NAME_LEN-->|<-uint8_t->|<---int32_t-
->|
#pragma pack(push, 1)
typedef
struct
TFileHeader
{
typedef
struct
TFileHeader
{
uint64_t
suid
;
uint64_t
suid
;
int32_t
version
;
int32_t
version
;
char
colName
[
128
];
//
char
colName
[
TSDB_COL_NAME_LEN
];
//
uint8_t
colType
;
uint8_t
colType
;
int32_t
fstOffset
;
}
TFileHeader
;
}
TFileHeader
;
#pragma pack(pop)
#define TFILE_HEADER_SIZE (sizeof(TFileHeader) + sizeof(uint32_t))
#define TFILE_HEADER_SIZE (sizeof(TFileHeader))
#define TFILE_HADER_PRE_SIZE (sizeof(uint64_t) + sizeof(int32_t) + sizeof(int32_t))
#define TFILE_HEADER_NO_FST (TFILE_HEADER_SIZE - sizeof(int32_t))
//#define TFILE_HADER_PRE_SIZE (sizeof(uint64_t) + sizeof(int32_t) + sizeof(int32_t))
typedef
struct
TFileCacheKey
{
typedef
struct
TFileCacheKey
{
uint64_t
suid
;
uint64_t
suid
;
...
...
source/libs/index/src/index_tfile.c
浏览文件 @
0cd932e8
...
@@ -48,21 +48,23 @@ static void tfileSerialTableIdsToBuf(char* buf, SArray* tableIds) {
...
@@ -48,21 +48,23 @@ static void tfileSerialTableIdsToBuf(char* buf, SArray* tableIds) {
SERIALIZE_VAR_TO_BUF
(
buf
,
*
v
,
uint64_t
);
SERIALIZE_VAR_TO_BUF
(
buf
,
*
v
,
uint64_t
);
}
}
}
}
static
FORCE_INLINE
int
tfileWriteFstOffset
(
TFileWriter
*
tw
,
int32_t
offset
)
{
int32_t
fstOffset
=
offset
+
sizeof
(
tw
->
header
.
fstOffset
);
tw
->
header
.
fstOffset
=
fstOffset
;
if
(
sizeof
(
fstOffset
)
!=
tw
->
ctx
->
write
(
tw
->
ctx
,
(
char
*
)
&
fstOffset
,
sizeof
(
fstOffset
)))
{
return
-
1
;
}
return
0
;
}
static
FORCE_INLINE
int
tfileWriteHeader
(
TFileWriter
*
writer
)
{
static
FORCE_INLINE
int
tfileWriteHeader
(
TFileWriter
*
writer
)
{
char
buf
[
TFILE_HEADER_
SIZE
]
=
{
0
};
char
buf
[
TFILE_HEADER_
NO_FST
]
=
{
0
};
char
*
p
=
buf
;
char
*
p
=
buf
;
TFileHeader
*
header
=
&
writer
->
header
;
TFileHeader
*
header
=
&
writer
->
header
;
SERIALIZE_MEM_TO_BUF
(
p
,
header
,
suid
);
memcpy
(
buf
,
(
char
*
)
header
,
sizeof
(
buf
));
SERIALIZE_MEM_TO_BUF
(
p
,
header
,
version
);
SERIALIZE_VAR_TO_BUF
(
p
,
strlen
(
header
->
colName
),
int32_t
);
int
nwrite
=
writer
->
ctx
->
write
(
writer
->
ctx
,
buf
,
sizeof
(
buf
));
if
(
sizeof
(
buf
)
!=
nwrite
)
{
return
-
1
;
}
SERIALIZE_STR_MEM_TO_BUF
(
p
,
header
,
colName
,
strlen
(
header
->
colName
));
writer
->
offset
=
nwrite
;
SERIALIZE_MEM_TO_BUF
(
p
,
header
,
colType
);
int
offset
=
p
-
buf
;
int
nwrite
=
writer
->
ctx
->
write
(
writer
->
ctx
,
buf
,
offset
);
if
(
offset
!=
nwrite
)
{
return
-
1
;
}
writer
->
offset
=
offset
;
return
0
;
return
0
;
}
}
static
int
tfileWriteData
(
TFileWriter
*
write
,
TFileValue
*
tval
)
{
static
int
tfileWriteData
(
TFileWriter
*
write
,
TFileValue
*
tval
)
{
...
@@ -82,26 +84,12 @@ static int tfileWriteData(TFileWriter* write, TFileValue* tval) {
...
@@ -82,26 +84,12 @@ static int tfileWriteData(TFileWriter* write, TFileValue* tval) {
}
}
static
FORCE_INLINE
int
tfileReadLoadHeader
(
TFileReader
*
reader
)
{
static
FORCE_INLINE
int
tfileReadLoadHeader
(
TFileReader
*
reader
)
{
// TODO simple tfile header later
// TODO simple tfile header later
char
buf
[
TFILE_H
ADER_PRE
_SIZE
];
char
buf
[
TFILE_H
EADER
_SIZE
];
char
*
p
=
buf
;
char
*
p
=
buf
;
int64_t
nread
=
reader
->
ctx
->
read
(
reader
->
ctx
,
buf
,
TFILE_HADER_PRE_SIZE
);
int64_t
nread
=
reader
->
ctx
->
read
(
reader
->
ctx
,
buf
,
TFILE_HEADER_SIZE
);
assert
(
nread
==
TFILE_HADER_PRE_SIZE
);
assert
(
nread
==
TFILE_HEADER_SIZE
);
memcpy
(
&
reader
->
header
,
buf
,
sizeof
(
buf
));
TFileHeader
*
header
=
&
reader
->
header
;
memcpy
(
&
header
->
suid
,
p
,
sizeof
(
header
->
suid
));
p
+=
sizeof
(
header
->
suid
);
memcpy
(
&
header
->
version
,
p
,
sizeof
(
header
->
version
));
p
+=
sizeof
(
header
->
version
);
int32_t
colLen
=
0
;
memcpy
(
&
colLen
,
p
,
sizeof
(
colLen
));
assert
(
colLen
<
sizeof
(
header
->
colName
));
nread
=
reader
->
ctx
->
read
(
reader
->
ctx
,
header
->
colName
,
colLen
);
assert
(
nread
==
colLen
);
nread
=
reader
->
ctx
->
read
(
reader
->
ctx
,
&
header
->
colType
,
sizeof
(
header
->
colType
));
return
0
;
return
0
;
}
}
...
@@ -285,7 +273,7 @@ TFileWriter* tfileWriterCreate(WriterCtx* ctx, TFileHeader* header) {
...
@@ -285,7 +273,7 @@ TFileWriter* tfileWriterCreate(WriterCtx* ctx, TFileHeader* header) {
return
tw
;
return
tw
;
}
}
int
TF
ileWriterPut
(
TFileWriter
*
tw
,
void
*
data
)
{
int
tf
ileWriterPut
(
TFileWriter
*
tw
,
void
*
data
)
{
// sort by coltype and write to tindex
// sort by coltype and write to tindex
__compar_fn_t
fn
=
getComparFunc
(
tw
->
header
.
colType
,
0
);
__compar_fn_t
fn
=
getComparFunc
(
tw
->
header
.
colType
,
0
);
taosArraySortPWithExt
((
SArray
*
)(
data
),
tfileValueCompare
,
&
fn
);
taosArraySortPWithExt
((
SArray
*
)(
data
),
tfileValueCompare
,
&
fn
);
...
@@ -294,6 +282,21 @@ int TFileWriterPut(TFileWriter* tw, void* data) {
...
@@ -294,6 +282,21 @@ int TFileWriterPut(TFileWriter* tw, void* data) {
char
*
buf
=
calloc
(
1
,
sizeof
(
bufLimit
));
char
*
buf
=
calloc
(
1
,
sizeof
(
bufLimit
));
char
*
p
=
buf
;
char
*
p
=
buf
;
int32_t
sz
=
taosArrayGetSize
((
SArray
*
)
data
);
int32_t
sz
=
taosArrayGetSize
((
SArray
*
)
data
);
int32_t
fstOffset
=
tw
->
offset
;
// ugly code, refactor later
for
(
size_t
i
=
0
;
i
<
sz
;
i
++
)
{
TFileValue
*
v
=
taosArrayGetP
((
SArray
*
)
data
,
i
);
int32_t
tbsz
=
taosArrayGetSize
(
v
->
tableId
);
int32_t
ttsz
=
TF_TABLE_TATOAL_SIZE
(
tbsz
);
fstOffset
+=
ttsz
;
}
// check result or not
tfileWriteFstOffset
(
tw
,
fstOffset
);
// tw->ctx->header.fstOffset = fstOffset;
// tw->ctx->write(tw->ctx, &fstOffset, sizeof(fstOffset));
for
(
size_t
i
=
0
;
i
<
sz
;
i
++
)
{
for
(
size_t
i
=
0
;
i
<
sz
;
i
++
)
{
TFileValue
*
v
=
taosArrayGetP
((
SArray
*
)
data
,
i
);
TFileValue
*
v
=
taosArrayGetP
((
SArray
*
)
data
,
i
);
...
@@ -311,7 +314,7 @@ int TFileWriterPut(TFileWriter* tw, void* data) {
...
@@ -311,7 +314,7 @@ int TFileWriterPut(TFileWriter* tw, void* data) {
tfileSerialTableIdsToBuf
(
p
,
v
->
tableId
);
tfileSerialTableIdsToBuf
(
p
,
v
->
tableId
);
offset
+=
ttsz
;
offset
+=
ttsz
;
p
=
buf
+
offset
;
p
=
buf
+
offset
;
// set up value offset
and
// set up value offset
v
->
offset
=
tw
->
offset
;
v
->
offset
=
tw
->
offset
;
tw
->
offset
+=
ttsz
;
tw
->
offset
+=
ttsz
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录