Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
1c82fe86
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1c82fe86
编写于
11月 12, 2019
作者:
H
Hongze Cheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix more bugs
上级
6e48ca27
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
4 deletion
+10
-4
src/system/detail/src/vnodeImport.c
src/system/detail/src/vnodeImport.c
+10
-4
未找到文件。
src/system/detail/src/vnodeImport.c
浏览文件 @
1c82fe86
...
...
@@ -1465,7 +1465,7 @@ int vnodeImportDataToCache(SImportInfo *pImport, const char *payload, const int
((
!
isCacheIterEnd
)
&&
(
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
)
>
KEY_AT_INDEX
(
pInfo
->
cacheBlocks
[
cacheIter
.
slot
]
->
offset
[
0
],
sizeof
(
TSKEY
),
cacheIter
.
pos
))))
{
// if (payload end || (cacheIter not end && payloadKey > blockKey))
cacheIter
.
pos
))))
{
// if (payload end || (cacheIter not end && payloadKey > blockKey))
, consume cache
for
(
int
col
=
0
;
col
<
pObj
->
numOfColumns
;
col
++
)
{
memcpy
(
pBuffer
->
offset
[
col
]
+
pObj
->
schema
[
col
].
bytes
*
pBuffer
->
epos
,
pInfo
->
cacheBlocks
[
cacheIter
.
slot
]
->
offset
[
col
]
+
pObj
->
schema
[
col
].
bytes
*
cacheIter
.
pos
,
...
...
@@ -1477,18 +1477,23 @@ int vnodeImportDataToCache(SImportInfo *pImport, const char *payload, const int
((
payloadIter
<
rows
)
&&
(
KEY_AT_INDEX
(
payload
,
pObj
->
bytesPerPoint
,
payloadIter
)
<
KEY_AT_INDEX
(
pInfo
->
cacheBlocks
[
cacheIter
.
slot
]
->
offset
[
0
],
sizeof
(
TSKEY
),
cacheIter
.
pos
))))
{
// cacheIter end || (payloadIter not end && payloadKey < blockKey)
cacheIter
.
pos
))))
{
// cacheIter end || (payloadIter not end && payloadKey < blockKey)
, consume payload
if
(
availPoints
==
0
)
{
// Need to allocate a new cache block
pthread_mutex_lock
(
&
(
pPool
->
vmutex
));
// TODO: Need to check if there are enough slots to hold a new one
SCacheBlock
*
pNewBlock
=
vnodeGetFreeCacheBlock
(
pVnode
);
if
(
pNewBlock
==
NULL
)
{
// Failed to allocate a new cache block
if
(
pNewBlock
==
NULL
)
{
// Failed to allocate a new cache block
, need to commit and loop over the remaining cache records
pthread_mutex_unlock
(
&
(
pPool
->
vmutex
));
payloadIter
=
rows
;
code
=
TSDB_CODE_ACTION_IN_PROGRESS
;
pImport
->
commit
=
1
;
// TODO: Fix here
continue
;
}
assert
(
pInfo
->
numOfBlocks
<=
pInfo
->
maxBlocks
);
if
(
pInfo
->
numOfBlocks
==
pInfo
->
maxBlocks
)
{
vnodeFreeCacheBlock
(
pInfo
->
cacheBlocks
[(
pInfo
->
currentSlot
+
1
)
%
pInfo
->
maxBlocks
]);
}
pNewBlock
->
pMeterObj
=
pObj
;
pNewBlock
->
offset
[
0
]
=
(
char
*
)
pNewBlock
+
sizeof
(
SCacheBlock
)
+
sizeof
(
char
*
)
*
pObj
->
numOfColumns
;
...
...
@@ -1593,6 +1598,7 @@ int vnodeImportDataToCache(SImportInfo *pImport, const char *payload, const int
}
}
pImport
->
importedRows
+=
rowsImported
;
__sync_fetch_and_sub
(
&
(
pObj
->
freePoints
),
rowsImported
);
code
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录