Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
c9f81125
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c9f81125
编写于
8月 07, 2020
作者:
N
Nikolai Kochetov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Review fixes.
上级
ac52726f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
7 addition
and
7 deletion
+7
-7
src/Storages/StorageMemory.cpp
src/Storages/StorageMemory.cpp
+7
-7
未找到文件。
src/Storages/StorageMemory.cpp
浏览文件 @
c9f81125
...
...
@@ -23,8 +23,8 @@ class MemorySource : public SourceWithProgress
{
public:
/// We use range [first, last] which includes right border.
///
It is needed because new elements may be added to list in
other thread.
///
Appending of new element changes end() of std::list, which may cause data race otherwise
.
///
Blocks are stored in std::list which may be appended in an
other thread.
///
We don't use synchronisation here, because elements in range [first, last] won't be modified
.
MemorySource
(
Names
column_names_
,
BlocksList
::
iterator
first_
,
...
...
@@ -33,7 +33,7 @@ public:
const
StorageMetadataPtr
&
metadata_snapshot
)
:
SourceWithProgress
(
metadata_snapshot
->
getSampleBlockForColumns
(
column_names_
,
storage
.
getVirtuals
(),
storage
.
getStorageID
()))
,
column_names
(
std
::
move
(
column_names_
))
,
firs
t
(
first_
)
,
curren
t
(
first_
)
,
last
(
last_
)
/// [first, last]
{
}
...
...
@@ -49,7 +49,7 @@ protected:
}
else
{
Block
src
=
*
firs
t
;
const
Block
&
src
=
*
curren
t
;
Columns
columns
;
columns
.
reserve
(
column_names
.
size
());
...
...
@@ -57,16 +57,16 @@ protected:
for
(
const
auto
&
name
:
column_names
)
columns
.
emplace_back
(
src
.
getByName
(
name
).
column
);
if
(
firs
t
==
last
)
if
(
curren
t
==
last
)
is_finished
=
true
;
else
++
firs
t
;
++
curren
t
;
return
Chunk
(
std
::
move
(
columns
),
src
.
rows
());
}
}
private:
Names
column_names
;
BlocksList
::
iterator
firs
t
;
BlocksList
::
iterator
curren
t
;
BlocksList
::
iterator
last
;
bool
is_finished
=
false
;
};
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录