Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
465e7925
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,发现更多精彩内容 >>
提交
465e7925
编写于
8月 10, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refact: a little optimize
上级
a34d0590
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
38 addition
and
29 deletion
+38
-29
source/dnode/vnode/src/tsdb/tsdbMemTable.c
source/dnode/vnode/src/tsdb/tsdbMemTable.c
+38
-29
未找到文件。
source/dnode/vnode/src/tsdb/tsdbMemTable.c
浏览文件 @
465e7925
...
...
@@ -393,16 +393,17 @@ static void tbDataMovePosTo(STbData *pTbData, SMemSkipListNode **pos, TSDBKEY *p
SMemSkipListNode
*
px
;
SMemSkipListNode
*
pn
;
TSDBKEY
*
pTKey
;
int
c
;
int
backward
=
flags
&
SL_MOVE_BACKWARD
;
int
fromPos
=
flags
&
SL_MOVE_FROM_POS
;
int32_t
backward
=
flags
&
SL_MOVE_BACKWARD
;
int32_t
fromPos
=
flags
&
SL_MOVE_FROM_POS
;
if
(
backward
)
{
px
=
pTbData
->
sl
.
pTail
;
for
(
int8_t
iLevel
=
pTbData
->
sl
.
maxLevel
-
1
;
iLevel
>=
pTbData
->
sl
.
level
;
iLevel
--
)
{
if
(
!
fromPos
)
{
for
(
int8_t
iLevel
=
pTbData
->
sl
.
level
;
iLevel
<
pTbData
->
sl
.
maxLevel
;
iLevel
++
)
{
pos
[
iLevel
]
=
px
;
}
}
if
(
pTbData
->
sl
.
level
)
{
if
(
fromPos
)
px
=
pos
[
pTbData
->
sl
.
level
-
1
];
...
...
@@ -412,7 +413,7 @@ static void tbDataMovePosTo(STbData *pTbData, SMemSkipListNode **pos, TSDBKEY *p
while
(
pn
!=
pTbData
->
sl
.
pHead
)
{
pTKey
=
(
TSDBKEY
*
)
SL_NODE_DATA
(
pn
);
c
=
tsdbKeyCmprFn
(
pTKey
,
pKey
);
int32_t
c
=
tsdbKeyCmprFn
(
pTKey
,
pKey
);
if
(
c
<=
0
)
{
break
;
}
else
{
...
...
@@ -427,9 +428,11 @@ static void tbDataMovePosTo(STbData *pTbData, SMemSkipListNode **pos, TSDBKEY *p
}
else
{
px
=
pTbData
->
sl
.
pHead
;
for
(
int8_t
iLevel
=
pTbData
->
sl
.
maxLevel
-
1
;
iLevel
>=
pTbData
->
sl
.
level
;
iLevel
--
)
{
if
(
!
fromPos
)
{
for
(
int8_t
iLevel
=
pTbData
->
sl
.
level
;
iLevel
<
pTbData
->
sl
.
maxLevel
;
iLevel
++
)
{
pos
[
iLevel
]
=
px
;
}
}
if
(
pTbData
->
sl
.
level
)
{
if
(
fromPos
)
px
=
pos
[
pTbData
->
sl
.
level
-
1
];
...
...
@@ -437,9 +440,7 @@ static void tbDataMovePosTo(STbData *pTbData, SMemSkipListNode **pos, TSDBKEY *p
for
(
int8_t
iLevel
=
pTbData
->
sl
.
level
-
1
;
iLevel
>=
0
;
iLevel
--
)
{
pn
=
SL_NODE_FORWARD
(
px
,
iLevel
);
while
(
pn
!=
pTbData
->
sl
.
pTail
)
{
pTKey
=
(
TSDBKEY
*
)
SL_NODE_DATA
(
pn
);
c
=
tsdbKeyCmprFn
(
pTKey
,
pKey
);
int32_t
c
=
tsdbKeyCmprFn
(
SL_NODE_DATA
(
pn
),
pKey
);
if
(
c
>=
0
)
{
break
;
}
else
{
...
...
@@ -480,34 +481,42 @@ static int32_t tbDataDoPut(SMemTable *pMemTable, STbData *pTbData, SMemSkipListN
goto
_exit
;
}
pNode
->
level
=
level
;
for
(
int8_t
iLevel
=
0
;
iLevel
<
level
;
iLevel
++
)
{
SL_NODE_FORWARD
(
pNode
,
iLevel
)
=
NULL
;
SL_NODE_BACKWARD
(
pNode
,
iLevel
)
=
NULL
;
}
tPutTSDBRow
((
uint8_t
*
)
SL_NODE_DATA
(
pNode
),
pRow
);
// put
for
(
int8_t
iLevel
=
0
;
iLevel
<
pNode
->
level
;
iLevel
++
)
{
SMemSkipListNode
*
px
=
pos
[
iLevel
]
;
for
(
int8_t
iLevel
=
level
-
1
;
iLevel
>=
0
;
iLevel
--
)
{
SMemSkipListNode
*
pn
=
pos
[
iLevel
];
SMemSkipListNode
*
px
;
if
(
forward
)
{
SMemSkipListNode
*
pNext
=
SL_NODE_FORWARD
(
px
,
iLevel
);
px
=
SL_NODE_FORWARD
(
pn
,
iLevel
);
SL_NODE_BACKWARD
(
pNode
,
iLevel
)
=
pn
;
SL_NODE_FORWARD
(
pNode
,
iLevel
)
=
px
;
}
else
{
px
=
SL_NODE_BACKWARD
(
pn
,
iLevel
);
SL_NODE_FORWARD
(
pNode
,
iLevel
)
=
pNext
;
SL_NODE_BACKWARD
(
pNode
,
iLevel
)
=
px
;
SL_NODE_FORWARD
(
pNode
,
iLevel
)
=
pn
;
}
}
SL_NODE_BACKWARD
(
pNext
,
iLevel
)
=
pNode
;
SL_NODE_FORWARD
(
px
,
iLevel
)
=
pNode
;
}
else
{
SMemSkipListNode
*
pPrev
=
SL_NODE_BACKWARD
(
px
,
iLevel
);
for
(
int8_t
iLevel
=
level
-
1
;
iLevel
>=
0
;
iLevel
--
)
{
SMemSkipListNode
*
pn
=
pos
[
iLevel
];
SMemSkipListNode
*
px
;
SL_NODE_FORWARD
(
pNode
,
iLevel
)
=
px
;
SL_NODE_BACKWARD
(
pNode
,
iLevel
)
=
pPrev
;
if
(
forward
)
{
px
=
SL_NODE_FORWARD
(
pn
,
iLevel
)
;
SL_NODE_FORWARD
(
p
Prev
,
iLevel
)
=
pNode
;
SL_NODE_FORWARD
(
p
n
,
iLevel
)
=
pNode
;
SL_NODE_BACKWARD
(
px
,
iLevel
)
=
pNode
;
}
else
{
px
=
SL_NODE_BACKWARD
(
pn
,
iLevel
);
SL_NODE_FORWARD
(
px
,
iLevel
)
=
pNode
;
SL_NODE_BACKWARD
(
pn
,
iLevel
)
=
pNode
;
}
pos
[
iLevel
]
=
pNode
;
}
pTbData
->
sl
.
size
++
;
...
...
@@ -548,7 +557,7 @@ static int32_t tsdbInsertTableDataImpl(SMemTable *pMemTable, STbData *pTbData, i
// forward put rest data
row
.
pTSRow
=
tGetSubmitBlkNext
(
&
blkIter
);
if
(
row
.
pTSRow
)
{
for
(
int8_t
iLevel
=
0
;
iLevel
<
pTbData
->
sl
.
maxLevel
;
iLevel
++
)
{
for
(
int8_t
iLevel
=
pos
[
0
]
->
level
;
iLevel
<
pTbData
->
sl
.
maxLevel
;
iLevel
++
)
{
pos
[
iLevel
]
=
SL_NODE_BACKWARD
(
pos
[
iLevel
],
iLevel
);
}
do
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录