Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
546bf6ac
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看板
提交
546bf6ac
编写于
3月 09, 2022
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more TDB
上级
dcdc577b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
37 addition
and
18 deletion
+37
-18
source/libs/tdb/src/db/tdbBtree.c
source/libs/tdb/src/db/tdbBtree.c
+8
-6
source/libs/tdb/src/db/tdbPCache.c
source/libs/tdb/src/db/tdbPCache.c
+1
-1
source/libs/tdb/src/db/tdbPage.c
source/libs/tdb/src/db/tdbPage.c
+16
-0
source/libs/tdb/src/inc/tdbPage.h
source/libs/tdb/src/inc/tdbPage.h
+12
-11
未找到文件。
source/libs/tdb/src/db/tdbBtree.c
浏览文件 @
546bf6ac
...
...
@@ -450,12 +450,14 @@ static int tdbBtreeBalanceDeeper(SBTree *pBt, SPage *pRoot, SPage **ppChild) {
return
0
;
}
static
int
tdbBtreeBalanceNonRoot
(
SBTree
*
pBt
,
SPage
*
pParent
,
bool
isRoot
)
{
#if 0
int i;
static
int
tdbBtreeBalanceNonRoot
(
SBTree
*
pBt
,
SPage
*
pParent
,
int
idx
,
bool
isRoot
)
{
int
nOldPages
;
SPage
*
pOldPages
[
3
];
int
nNewPages
;
SPage
*
pNewPages
[
5
];
// Find three or less sibling pages
i = pParent->pPageHdr->nCells + pParent->nOverFlow;
#endif
/* TODO */
return
0
;
}
...
...
@@ -500,7 +502,7 @@ static int tdbBtreeBalance(SBtCursor *pCur) {
// Generalized balance step
pParent
=
pCur
->
pgStack
[
pCur
->
iPage
-
1
];
ret
=
tdbBtreeBalanceNonRoot
(
pCur
->
pBt
,
pParent
,
(
iPage
==
1
));
ret
=
tdbBtreeBalanceNonRoot
(
pCur
->
pBt
,
pParent
,
pCur
->
idxStack
[
pCur
->
iPage
-
1
],
(
iPage
==
1
));
if
(
ret
<
0
)
{
return
-
1
;
}
...
...
source/libs/tdb/src/db/tdbPCache.c
浏览文件 @
546bf6ac
...
...
@@ -188,7 +188,7 @@ static void tdbPCacheUnpinPage(SPage *pPage) {
tdbPCacheLock
(
pCache
);
nRef
=
TDB_PAGE_REF
(
pPage
);
nRef
=
TDB_
GET_
PAGE_REF
(
pPage
);
ASSERT
(
nRef
>=
0
);
if
(
nRef
==
0
)
{
// Add the page to LRU list
...
...
source/libs/tdb/src/db/tdbPage.c
0 → 100644
浏览文件 @
546bf6ac
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "tdbInt.h"
\ No newline at end of file
source/libs/tdb/src/inc/tdbPage.h
浏览文件 @
546bf6ac
...
...
@@ -32,26 +32,27 @@ typedef struct SPage SPage;
struct
SPage
{
pthread_spinlock_t
lock
;
// Fields below used by page cache
void
*
pData
;
void
*
pData
;
SPgid
pgid
;
u8
isAnchor
;
u8
isLocalPage
;
u8
isDirty
;
i32
nRef
;
SPCache
*
pCache
;
SPage
*
pFreeNext
;
SPage
*
pHashNext
;
SPage
*
pLruNext
;
SPage
*
pLruPrev
;
SPage
*
pDirtyNext
;
SPager
*
pPager
;
SPage
*
pFreeNext
;
SPage
*
pHashNext
;
SPage
*
pLruNext
;
SPage
*
pLruPrev
;
SPage
*
pDirtyNext
;
SPager
*
pPager
;
// Fields below used by pager and am
SPageHdr
*
pPageHdr
;
u16
*
aCellIdx
;
u16
*
aCellIdx
;
int
kLen
;
int
vLen
;
int
maxLocal
;
int
minLocal
;
int
nOverflow
;
};
// For page lock
...
...
@@ -76,16 +77,16 @@ struct SPage {
ret; \
})
// For page ref
(TODO: Need atomic operation)
// For page ref
#define TDB_INIT_PAGE_REF(pPage) ((pPage)->nRef = 0)
#if 0
#define TDB_REF_PAGE(pPage) (++(pPage)->nRef)
#define TDB_UNREF_PAGE(pPage) (--(pPage)->nRef)
#define TDB_PAGE_REF(pPage) ((pPage)->nRef)
#define TDB_
GET_
PAGE_REF(pPage) ((pPage)->nRef)
#else
#define TDB_REF_PAGE(pPage) atomic_add_fetch_32(&((pPage)->nRef), 1)
#define TDB_UNREF_PAGE(pPage) atomic_sub_fetch_32(&((pPage)->nRef), 1)
#define TDB_PAGE_REF(pPage) atomic_load_32(&((pPage)->nRef))
#define TDB_
GET_
PAGE_REF(pPage) atomic_load_32(&((pPage)->nRef))
#endif
#ifdef __cplusplus
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录