Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
a399c17f
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,发现更多精彩内容 >>
提交
a399c17f
编写于
3月 20, 2018
作者:
N
Nikolai Kochetov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
&& - qualified IColumn::mutate
上级
bbb12e89
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
36 addition
and
25 deletion
+36
-25
dbms/src/Columns/FilterDescription.cpp
dbms/src/Columns/FilterDescription.cpp
+2
-1
dbms/src/Columns/IColumn.h
dbms/src/Columns/IColumn.h
+2
-2
dbms/src/Common/COWPtr.h
dbms/src/Common/COWPtr.h
+14
-4
dbms/src/Core/Block.cpp
dbms/src/Core/Block.cpp
+1
-1
dbms/src/Core/Block.h
dbms/src/Core/Block.h
+1
-1
dbms/src/DataStreams/ColumnGathererStream.cpp
dbms/src/DataStreams/ColumnGathererStream.cpp
+2
-3
dbms/src/DataStreams/MergingSortedBlockInputStream.cpp
dbms/src/DataStreams/MergingSortedBlockInputStream.cpp
+1
-1
dbms/src/DataStreams/SquashingTransform.cpp
dbms/src/DataStreams/SquashingTransform.cpp
+1
-1
dbms/src/Dictionaries/ComplexKeyHashedDictionary.cpp
dbms/src/Dictionaries/ComplexKeyHashedDictionary.cpp
+1
-1
dbms/src/Dictionaries/ExternalResultDescription.cpp
dbms/src/Dictionaries/ExternalResultDescription.cpp
+1
-1
dbms/src/Dictionaries/FlatDictionary.cpp
dbms/src/Dictionaries/FlatDictionary.cpp
+1
-1
dbms/src/Dictionaries/HashedDictionary.cpp
dbms/src/Dictionaries/HashedDictionary.cpp
+1
-1
dbms/src/Functions/FunctionsConditional.h
dbms/src/Functions/FunctionsConditional.h
+4
-3
dbms/src/Functions/IFunction.cpp
dbms/src/Functions/IFunction.cpp
+1
-1
dbms/src/Interpreters/NullableUtils.cpp
dbms/src/Interpreters/NullableUtils.cpp
+1
-1
dbms/src/Storages/StorageBuffer.cpp
dbms/src/Storages/StorageBuffer.cpp
+2
-2
未找到文件。
dbms/src/Columns/FilterDescription.cpp
浏览文件 @
a399c17f
...
...
@@ -57,7 +57,8 @@ FilterDescription::FilterDescription(const IColumn & column)
if
(
const
ColumnNullable
*
nullable_column
=
typeid_cast
<
const
ColumnNullable
*>
(
&
column
))
{
MutableColumnPtr
mutable_holder
=
nullable_column
->
getNestedColumn
().
mutate
();
ColumnPtr
nested_column
=
nullable_column
->
getNestedColumnPtr
();
MutableColumnPtr
mutable_holder
=
(
*
std
::
move
(
nested_column
)).
mutate
();
ColumnUInt8
*
concrete_column
=
typeid_cast
<
ColumnUInt8
*>
(
mutable_holder
.
get
());
if
(
!
concrete_column
)
...
...
dbms/src/Columns/IColumn.h
浏览文件 @
a399c17f
...
...
@@ -247,10 +247,10 @@ public:
virtual
void
forEachSubcolumn
(
ColumnCallback
)
{}
MutablePtr
mutate
()
const
MutablePtr
mutate
()
const
&&
{
MutablePtr
res
=
COWPtr
<
IColumn
>::
mutate
();
res
->
forEachSubcolumn
([](
Ptr
&
subcolumn
)
{
subcolumn
=
subcolumn
->
mutate
();
});
res
->
forEachSubcolumn
([](
Ptr
&
subcolumn
)
{
subcolumn
=
(
*
std
::
move
(
subcolumn
)).
mutate
();
});
return
res
;
}
...
...
dbms/src/Common/COWPtr.h
浏览文件 @
a399c17f
...
...
@@ -80,12 +80,22 @@ private:
Derived
*
derived
()
{
return
static_cast
<
Derived
*>
(
this
);
}
const
Derived
*
derived
()
const
{
return
static_cast
<
const
Derived
*>
(
this
);
}
template
<
typename
T
>
class
IntrusivePtr
:
public
boost
::
intrusive_ptr
<
T
>
{
public:
using
boost
::
intrusive_ptr
<
T
>::
intrusive_ptr
;
T
&
operator
*
()
const
&
{
return
boost
::
intrusive_ptr
<
T
>::
operator
*
();
}
T
&&
operator
*
()
const
&&
{
return
const_cast
<
typename
std
::
remove_const
<
T
>::
type
&&>
(
*
boost
::
intrusive_ptr
<
T
>::
get
());
}
};
protected:
template
<
typename
T
>
class
mutable_ptr
:
public
boost
::
intrusive_p
tr
<
T
>
class
mutable_ptr
:
public
IntrusiveP
tr
<
T
>
{
private:
using
Base
=
boost
::
intrusive_p
tr
<
T
>
;
using
Base
=
IntrusiveP
tr
<
T
>
;
template
<
typename
>
friend
class
COWPtr
;
template
<
typename
,
typename
>
friend
class
COWPtrHelper
;
...
...
@@ -114,10 +124,10 @@ public:
protected:
template
<
typename
T
>
class
immutable_ptr
:
public
boost
::
intrusive_p
tr
<
const
T
>
class
immutable_ptr
:
public
IntrusiveP
tr
<
const
T
>
{
private:
using
Base
=
boost
::
intrusive_p
tr
<
const
T
>
;
using
Base
=
IntrusiveP
tr
<
const
T
>
;
template
<
typename
>
friend
class
COWPtr
;
template
<
typename
,
typename
>
friend
class
COWPtrHelper
;
...
...
dbms/src/Core/Block.cpp
浏览文件 @
a399c17f
...
...
@@ -312,7 +312,7 @@ MutableColumns Block::mutateColumns() const
size_t
num_columns
=
data
.
size
();
MutableColumns
columns
(
num_columns
);
for
(
size_t
i
=
0
;
i
<
num_columns
;
++
i
)
columns
[
i
]
=
data
[
i
].
column
?
data
[
i
].
column
->
mutate
()
:
data
[
i
].
type
->
createColumn
();
columns
[
i
]
=
data
[
i
].
column
?
(
*
std
::
move
(
data
[
i
].
column
)).
mutate
()
:
data
[
i
].
type
->
createColumn
();
return
columns
;
}
...
...
dbms/src/Core/Block.h
浏览文件 @
a399c17f
...
...
@@ -109,7 +109,7 @@ public:
/** Get empty columns with the same types as in block. */
MutableColumns
cloneEmptyColumns
()
const
;
/** Get columns from block for mutation. */
/** Get columns from block for mutation.
Columns in block will be nullptr.
*/
MutableColumns
mutateColumns
()
const
;
/** Replace columns in a block */
...
...
dbms/src/DataStreams/ColumnGathererStream.cpp
浏览文件 @
a399c17f
...
...
@@ -76,10 +76,9 @@ Block ColumnGathererStream::readImpl()
return
Block
();
output_block
=
Block
{
column
.
cloneEmpty
()};
MutableColumnPtr
output_column
=
output_block
.
getByPosition
(
0
).
column
->
mutate
();
MutableColumnPtr
output_column
=
(
*
std
::
move
(
output_block
.
getByPosition
(
0
).
column
)).
mutate
();
output_column
->
gather
(
*
this
);
if
(
!
output_column
->
empty
())
output_block
.
getByPosition
(
0
).
column
=
std
::
move
(
output_column
);
output_block
.
getByPosition
(
0
).
column
=
std
::
move
(
output_column
);
return
output_block
;
}
...
...
dbms/src/DataStreams/MergingSortedBlockInputStream.cpp
浏览文件 @
a399c17f
...
...
@@ -221,7 +221,7 @@ void MergingSortedBlockInputStream::merge(MutableColumns & merged_columns, std::
throw
Exception
(
"Logical error in MergingSortedBlockInputStream"
,
ErrorCodes
::
LOGICAL_ERROR
);
for
(
size_t
i
=
0
;
i
<
num_columns
;
++
i
)
merged_columns
[
i
]
=
source_blocks
[
source_num
]
->
getByPosition
(
i
).
column
->
mutate
();
merged_columns
[
i
]
=
(
*
std
::
move
(
source_blocks
[
source_num
]
->
getByPosition
(
i
).
column
)).
mutate
();
// std::cerr << "copied columns\n";
...
...
dbms/src/DataStreams/SquashingTransform.cpp
浏览文件 @
a399c17f
...
...
@@ -62,7 +62,7 @@ void SquashingTransform::append(Block && block)
for
(
size_t
i
=
0
;
i
<
columns
;
++
i
)
{
MutableColumnPtr
mutable_column
=
accumulated_block
.
getByPosition
(
i
).
column
->
mutate
();
MutableColumnPtr
mutable_column
=
(
*
std
::
move
(
accumulated_block
.
getByPosition
(
i
).
column
)).
mutate
();
mutable_column
->
insertRangeFrom
(
*
block
.
getByPosition
(
i
).
column
,
0
,
rows
);
accumulated_block
.
getByPosition
(
i
).
column
=
std
::
move
(
mutable_column
);
}
...
...
dbms/src/Dictionaries/ComplexKeyHashedDictionary.cpp
浏览文件 @
a399c17f
...
...
@@ -289,7 +289,7 @@ void ComplexKeyHashedDictionary::updateData()
for
(
const
auto
attribute_idx
:
ext
::
range
(
0
,
keys_size
+
attributes_size
))
{
const
IColumn
&
update_column
=
*
block
.
getByPosition
(
attribute_idx
).
column
.
get
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
mutat
e
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
assumeMutabl
e
();
saved_column
->
insertRangeFrom
(
update_column
,
0
,
update_column
.
size
());
}
}
...
...
dbms/src/Dictionaries/ExternalResultDescription.cpp
浏览文件 @
a399c17f
...
...
@@ -66,7 +66,7 @@ void ExternalResultDescription::init(const Block & sample_block_)
/// If default value for column was not provided, use default from data type.
if
(
sample_columns
.
back
()
->
empty
())
{
MutableColumnPtr
mutable_column
=
sample_columns
.
back
()
->
mutate
();
MutableColumnPtr
mutable_column
=
(
*
std
::
move
(
sample_columns
.
back
())).
mutate
();
column
.
type
->
insertDefaultInto
(
*
mutable_column
);
sample_columns
.
back
()
=
std
::
move
(
mutable_column
);
}
...
...
dbms/src/Dictionaries/FlatDictionary.cpp
浏览文件 @
a399c17f
...
...
@@ -316,7 +316,7 @@ void FlatDictionary::updateData()
for
(
const
auto
attribute_idx
:
ext
::
range
(
0
,
attributes
.
size
()
+
1
))
{
const
IColumn
&
update_column
=
*
block
.
getByPosition
(
attribute_idx
).
column
.
get
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
mutat
e
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
assumeMutabl
e
();
saved_column
->
insertRangeFrom
(
update_column
,
0
,
update_column
.
size
());
}
}
...
...
dbms/src/Dictionaries/HashedDictionary.cpp
浏览文件 @
a399c17f
...
...
@@ -310,7 +310,7 @@ void HashedDictionary::updateData()
for
(
const
auto
attribute_idx
:
ext
::
range
(
0
,
attributes
.
size
()
+
1
))
{
const
IColumn
&
update_column
=
*
block
.
getByPosition
(
attribute_idx
).
column
.
get
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
mutat
e
();
MutableColumnPtr
saved_column
=
saved_block
->
getByPosition
(
attribute_idx
).
column
->
assumeMutabl
e
();
saved_column
->
insertRangeFrom
(
update_column
,
0
,
update_column
.
size
());
}
}
...
...
dbms/src/Functions/FunctionsConditional.h
浏览文件 @
a399c17f
...
...
@@ -592,7 +592,7 @@ private:
const
ColumnPtr
&
result_column
=
temporary_block
.
getByPosition
(
3
).
column
;
if
(
result_column
->
isColumnNullable
())
{
MutableColumnPtr
mutable_result_column
=
result_column
->
mutate
();
MutableColumnPtr
mutable_result_column
=
(
*
std
::
move
(
result_column
)).
mutate
();
static_cast
<
ColumnNullable
&>
(
*
mutable_result_column
).
applyNullMap
(
static_cast
<
const
ColumnNullable
&>
(
*
arg_cond
.
column
));
block
.
getByPosition
(
result
).
column
=
std
::
move
(
mutable_result_column
);
return
true
;
...
...
@@ -744,7 +744,7 @@ private:
{
if
(
arg_else
.
column
->
isColumnNullable
())
{
auto
result_column
=
arg_else
.
column
->
mutate
();
auto
result_column
=
(
*
std
::
move
(
arg_else
.
column
)).
mutate
();
static_cast
<
ColumnNullable
&>
(
*
result_column
).
applyNullMap
(
static_cast
<
const
ColumnUInt8
&>
(
*
arg_cond
.
column
));
block
.
getByPosition
(
result
).
column
=
std
::
move
(
result_column
);
}
...
...
@@ -785,7 +785,8 @@ private:
if
(
arg_then
.
column
->
isColumnNullable
())
{
auto
result_column
=
arg_then
.
column
->
mutate
();
auto
arg_then_column
=
arg_then
.
column
;
auto
result_column
=
(
*
std
::
move
(
arg_then_column
)).
mutate
();
static_cast
<
ColumnNullable
&>
(
*
result_column
).
applyNegatedNullMap
(
static_cast
<
const
ColumnUInt8
&>
(
*
arg_cond
.
column
));
block
.
getByPosition
(
result
).
column
=
std
::
move
(
result_column
);
}
...
...
dbms/src/Functions/IFunction.cpp
浏览文件 @
a399c17f
...
...
@@ -63,7 +63,7 @@ ColumnPtr wrapInNullable(const ColumnPtr & src, Block & block, const ColumnNumbe
}
else
{
MutableColumnPtr
mutable_result_null_map_column
=
result_null_map_column
->
mutate
();
MutableColumnPtr
mutable_result_null_map_column
=
(
*
std
::
move
(
result_null_map_column
)).
mutate
();
NullMap
&
result_null_map
=
static_cast
<
ColumnUInt8
&>
(
*
mutable_result_null_map_column
).
getData
();
const
NullMap
&
src_null_map
=
static_cast
<
const
ColumnUInt8
&>
(
*
null_map_column
).
getData
();
...
...
dbms/src/Interpreters/NullableUtils.cpp
浏览文件 @
a399c17f
...
...
@@ -31,7 +31,7 @@ void extractNestedColumnsAndNullMap(ColumnRawPtrs & key_columns, ColumnPtr & nul
}
else
{
MutableColumnPtr
mutable_null_map_holder
=
null_map_holder
->
mutate
();
MutableColumnPtr
mutable_null_map_holder
=
(
*
std
::
move
(
null_map_holder
)).
mutate
();
PaddedPODArray
<
UInt8
>
&
mutable_null_map
=
static_cast
<
ColumnUInt8
&>
(
*
mutable_null_map_holder
).
getData
();
const
PaddedPODArray
<
UInt8
>
&
other_null_map
=
column_nullable
.
getNullMapData
();
...
...
dbms/src/Storages/StorageBuffer.cpp
浏览文件 @
a399c17f
...
...
@@ -164,7 +164,7 @@ static void appendBlock(const Block & from, Block & to)
for
(
size_t
column_no
=
0
,
columns
=
to
.
columns
();
column_no
<
columns
;
++
column_no
)
{
const
IColumn
&
col_from
=
*
from
.
getByPosition
(
column_no
).
column
.
get
();
MutableColumnPtr
col_to
=
to
.
getByPosition
(
column_no
).
column
->
mutate
();
MutableColumnPtr
col_to
=
(
*
std
::
move
(
to
.
getByPosition
(
column_no
).
column
)).
mutate
();
col_to
->
insertRangeFrom
(
col_from
,
0
,
rows
);
...
...
@@ -183,7 +183,7 @@ static void appendBlock(const Block & from, Block & to)
{
ColumnPtr
&
col_to
=
to
.
getByPosition
(
column_no
).
column
;
if
(
col_to
->
size
()
!=
old_rows
)
col_to
=
col_to
->
mutate
()
->
cut
(
0
,
old_rows
);
col_to
=
(
*
std
::
move
(
col_to
)).
mutate
()
->
cut
(
0
,
old_rows
);
}
}
catch
(...)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录