Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
729eb668
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1192
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看板
提交
729eb668
编写于
10月 21, 2021
作者:
C
Cary Xu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
code optimization
上级
5e34c410
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
35 addition
and
13 deletion
+35
-13
src/common/src/ttypes.c
src/common/src/ttypes.c
+4
-2
src/tsdb/inc/tsdbReadImpl.h
src/tsdb/inc/tsdbReadImpl.h
+22
-5
src/tsdb/src/tsdbCommit.c
src/tsdb/src/tsdbCommit.c
+4
-3
src/tsdb/src/tsdbReadImpl.c
src/tsdb/src/tsdbReadImpl.c
+5
-3
未找到文件。
src/common/src/ttypes.c
浏览文件 @
729eb668
...
...
@@ -327,6 +327,7 @@ static void getStatics_d(const void *pData, int32_t numOfRow, int64_t *min, int6
SET_DOUBLE_PTR
(
min
,
&
dmin
);
}
#if 0 // statis part is extracted into aggr file(e.g. smad/smal), and bin/nchar statis cols are not stored anymore
static void getStatics_bin(const void *pData, int32_t numOfRow, int64_t *min, int64_t *max,
int64_t *sum, int16_t *minIndex, int16_t *maxIndex, int16_t *numOfNull) {
const char* data = pData;
...
...
@@ -366,6 +367,7 @@ static void getStatics_nchr(const void *pData, int32_t numOfRow, int64_t *min, i
*minIndex = 0;
*maxIndex = 0;
}
#endif
tDataTypeDescriptor
tDataTypes
[
15
]
=
{
{
TSDB_DATA_TYPE_NULL
,
6
,
1
,
"NOTYPE"
,
0
,
0
,
NULL
,
NULL
,
NULL
},
...
...
@@ -376,9 +378,9 @@ tDataTypeDescriptor tDataTypes[15] = {
{
TSDB_DATA_TYPE_BIGINT
,
6
,
LONG_BYTES
,
"BIGINT"
,
INT64_MIN
,
INT64_MAX
,
tsCompressBigint
,
tsDecompressBigint
,
getStatics_i64
},
{
TSDB_DATA_TYPE_FLOAT
,
5
,
FLOAT_BYTES
,
"FLOAT"
,
0
,
0
,
tsCompressFloat
,
tsDecompressFloat
,
getStatics_f
},
{
TSDB_DATA_TYPE_DOUBLE
,
6
,
DOUBLE_BYTES
,
"DOUBLE"
,
0
,
0
,
tsCompressDouble
,
tsDecompressDouble
,
getStatics_d
},
{
TSDB_DATA_TYPE_BINARY
,
6
,
0
,
"BINARY"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_bin
},
{
TSDB_DATA_TYPE_BINARY
,
6
,
0
,
"BINARY"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
NULL
},
{
TSDB_DATA_TYPE_TIMESTAMP
,
9
,
LONG_BYTES
,
"TIMESTAMP"
,
INT64_MIN
,
INT64_MAX
,
tsCompressTimestamp
,
tsDecompressTimestamp
,
getStatics_i64
},
{
TSDB_DATA_TYPE_NCHAR
,
5
,
8
,
"NCHAR"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
getStatics_nchr
},
{
TSDB_DATA_TYPE_NCHAR
,
5
,
8
,
"NCHAR"
,
0
,
0
,
tsCompressString
,
tsDecompressString
,
NULL
},
{
TSDB_DATA_TYPE_UTINYINT
,
16
,
CHAR_BYTES
,
"TINYINT UNSIGNED"
,
0
,
UINT8_MAX
,
tsCompressTinyint
,
tsDecompressTinyint
,
getStatics_u8
},
{
TSDB_DATA_TYPE_USMALLINT
,
17
,
SHORT_BYTES
,
"SMALLINT UNSIGNED"
,
0
,
UINT16_MAX
,
tsCompressSmallint
,
tsDecompressSmallint
,
getStatics_u16
},
{
TSDB_DATA_TYPE_UINT
,
12
,
INT_BYTES
,
"INT UNSIGNED"
,
0
,
UINT32_MAX
,
tsCompressInt
,
tsDecompressInt
,
getStatics_u32
},
...
...
src/tsdb/inc/tsdbReadImpl.h
浏览文件 @
729eb668
...
...
@@ -72,11 +72,11 @@ typedef struct {
* aggrOffset; // only valid when blkVer > 0 and aggrStat > 0
*/
#define SBlockFieldsP1 \
uint64_t aggrStat :
3
; \
uint64_t blkVer :
5
; \
uint64_t aggrStat :
1
; \
uint64_t blkVer :
7
; \
uint64_t aggrOffset : 56; \
uint32_t aggrLen; \
char padding[4]
uint32_t padding
typedef
struct
{
SBlockFieldsP0
;
...
...
@@ -160,10 +160,16 @@ typedef struct {
uint64_t
uid
;
// For recovery usage
SBlockCol
cols
[];
}
SBlockData
;
#if 0
typedef struct {
int32_t numOfCols; // For recovery usage
uint32_t padding;
SAggrBlkCol cols[];
} SAggrBlkData;
#endif
typedef
void
SAggrBlkData
;
struct
SReadH
{
STsdbRepo
*
pRepo
;
...
...
@@ -207,8 +213,8 @@ static FORCE_INLINE size_t tsdbBlockStatisSize(int nCols, uint32_t blkVer) {
}
}
#define TSDB_BLOCK_AGGR_
SIZE(ncols, blkVer) \
(sizeof(SAggrBlkData) +
sizeof(SAggrBlkColV##blkVer) * (ncols) + sizeof(TSCKSUM))
#define TSDB_BLOCK_AGGR_
COLS(blkLen, blkVer) ((blkLen - sizeof(TSCKSUM)) / sizeof(SAggrBlkColV##blkVer))
#define TSDB_BLOCK_AGGR_SIZE(ncols, blkVer) (
sizeof(SAggrBlkColV##blkVer) * (ncols) + sizeof(TSCKSUM))
static
FORCE_INLINE
size_t
tsdbBlockAggrSize
(
int
nCols
,
uint32_t
blkVer
)
{
switch
(
blkVer
)
{
...
...
@@ -221,6 +227,17 @@ static FORCE_INLINE size_t tsdbBlockAggrSize(int nCols, uint32_t blkVer) {
}
}
static
FORCE_INLINE
int32_t
tsdbBlockAggrCols
(
uint32_t
blkLen
,
uint32_t
blkVer
)
{
switch
(
blkVer
)
{
case
TSDB_SBLK_VER_0
:
ASSERT
(
false
);
return
0
;
case
TSDB_SBLK_VER_1
:
default:
return
TSDB_BLOCK_AGGR_COLS
(
blkLen
,
1
);
}
}
int
tsdbInitReadH
(
SReadH
*
pReadh
,
STsdbRepo
*
pRepo
);
void
tsdbDestroyReadH
(
SReadH
*
pReadh
);
int
tsdbSetAndOpenReadFSet
(
SReadH
*
pReadh
,
SDFileSet
*
pSet
);
...
...
src/tsdb/src/tsdbCommit.c
浏览文件 @
729eb668
...
...
@@ -1084,7 +1084,7 @@ int tsdbWriteBlockImpl(STsdbRepo *pRepo, STable *pTable, SDFile *pDFile, SDFile
for
(
int
ncol
=
1
;
ncol
<
pDataCols
->
numOfCols
;
ncol
++
)
{
// ncol from 1, we skip the timestamp column
SDataCol
*
pDataCol
=
pDataCols
->
cols
+
ncol
;
SBlockCol
*
pBlockCol
=
pBlockData
->
cols
+
nColsNotAllNull
;
SAggrBlkCol
*
pAggrBlkCol
=
pAggrBlkData
->
cols
+
nColsNotAllNull
;
SAggrBlkCol
*
pAggrBlkCol
=
(
SAggrBlkCol
*
)
pAggrBlkData
+
nAggrCols
;
if
(
isAllRowsNull
(
pDataCol
))
{
// all data to commit are NULL, just ignore it
continue
;
...
...
@@ -1120,7 +1120,7 @@ int tsdbWriteBlockImpl(STsdbRepo *pRepo, STable *pTable, SDFile *pDFile, SDFile
int32_t
lsize
=
tsize
;
int32_t
keyLen
=
0
;
uint32_t
tsizeAggr
=
(
uint32_t
)
tsdbBlockAggrSize
(
n
ColsNotAllNull
,
SBlockVerLatest
);
uint32_t
tsizeAggr
=
(
uint32_t
)
tsdbBlockAggrSize
(
n
AggrCols
,
SBlockVerLatest
);
for
(
int
ncol
=
0
;
ncol
<
pDataCols
->
numOfCols
;
ncol
++
)
{
// All not NULL columns finish
...
...
@@ -1190,7 +1190,7 @@ int tsdbWriteBlockImpl(STsdbRepo *pRepo, STable *pTable, SDFile *pDFile, SDFile
uint32_t
aggrStatus
=
((
nAggrCols
>
0
)
&&
(
rowsToWrite
>
8
))
?
1
:
0
;
// TODO: How to make the decision?
if
(
aggrStatus
>
0
)
{
pAggrBlkData
->
numOfCols
=
nColsNotAllNull
;
//
pAggrBlkData->numOfCols = nColsNotAllNull;
taosCalcChecksumAppend
(
0
,
(
uint8_t
*
)
pAggrBlkData
,
tsizeAggr
);
tsdbUpdateDFileMagic
(
pDFileAggr
,
POINTER_SHIFT
(
pAggrBlkData
,
tsizeAggr
-
sizeof
(
TSCKSUM
)));
...
...
@@ -1217,6 +1217,7 @@ int tsdbWriteBlockImpl(STsdbRepo *pRepo, STable *pTable, SDFile *pDFile, SDFile
pBlock
->
blkVer
=
SBlockVerLatest
;
pBlock
->
aggrOffset
=
(
uint64_t
)
offsetAggr
;
pBlock
->
aggrLen
=
tsizeAggr
;
pBlock
->
padding
=
0
;
// padding filled with 0
tsdbDebug
(
"vgId:%d tid:%d a block of data is written to file %s, offset %"
PRId64
" numOfRows %d len %d numOfCols %"
PRId16
" keyFirst %"
PRId64
" keyLast %"
PRId64
,
...
...
src/tsdb/src/tsdbReadImpl.c
浏览文件 @
729eb668
...
...
@@ -469,7 +469,8 @@ static int tsdbLoadBlockStatisFromAggr(SReadH *pReadh, SBlock *pBlock) {
return
-
1
;
}
size_t
sizeAggr
=
tsdbBlockAggrSize
(
pBlock
->
numOfCols
,
(
uint32_t
)
pBlock
->
blkVer
);
size_t
sizeAggr
=
pBlock
->
aggrLen
;
// tsdbBlockAggrSize(pBlock->numOfCols, (uint32_t)pBlock->blkVer);
if
(
tsdbMakeRoom
((
void
**
)(
&
(
pReadh
->
pAggrBlkData
)),
sizeAggr
)
<
0
)
return
-
1
;
int64_t
nreadAggr
=
tsdbReadDFile
(
pDFileAggr
,
(
void
*
)(
pReadh
->
pAggrBlkData
),
sizeAggr
);
...
...
@@ -578,14 +579,15 @@ void tsdbGetBlockStatis(SReadH *pReadh, SDataStatis *pStatis, int numOfCols, SBl
}
}
else
if
(
pBlock
->
aggrStat
)
{
SAggrBlkData
*
pAggrBlkData
=
pReadh
->
pAggrBlkData
;
int32_t
nAggrBlkCols
=
tsdbBlockAggrCols
(
pBlock
->
aggrLen
,
pBlock
->
blkVer
);
for
(
int
i
=
0
,
j
=
0
;
i
<
numOfCols
;)
{
if
(
j
>=
pAggrBlkData
->
numOf
Cols
)
{
if
(
j
>=
nAggrBlk
Cols
)
{
pStatis
[
i
].
numOfNull
=
-
1
;
i
++
;
continue
;
}
SAggrBlkCol
*
pAggrBlkCol
=
((
SAggrBlkCol
*
)(
pAggrBlkData
->
cols
))
+
j
;
SAggrBlkCol
*
pAggrBlkCol
=
((
SAggrBlkCol
*
)(
pAggrBlkData
))
+
j
;
if
(
pStatis
[
i
].
colId
==
pAggrBlkCol
->
colId
)
{
pStatis
[
i
].
sum
=
pAggrBlkCol
->
sum
;
pStatis
[
i
].
max
=
pAggrBlkCol
->
max
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录