Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
31f2f7f1
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,发现更多精彩内容 >>
未验证
提交
31f2f7f1
编写于
2月 02, 2021
作者:
V
Vitaly Baranov
提交者:
GitHub
2月 02, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #19937 from ClickHouse/backport/20.12/19884
Backport #19884 to 20.12: BloomFilter index crash fix
上级
3e1bcff3
4bcc732a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
71 addition
and
1 deletion
+71
-1
src/Interpreters/Set.cpp
src/Interpreters/Set.cpp
+10
-1
tests/queries/0_stateless/01681_bloom_filter_nullable_column.reference
.../0_stateless/01681_bloom_filter_nullable_column.reference
+10
-0
tests/queries/0_stateless/01681_bloom_filter_nullable_column.sql
...ueries/0_stateless/01681_bloom_filter_nullable_column.sql
+51
-0
未找到文件。
src/Interpreters/Set.cpp
浏览文件 @
31f2f7f1
...
...
@@ -140,7 +140,16 @@ void Set::setHeader(const Block & header)
ConstNullMapPtr
null_map
{};
ColumnPtr
null_map_holder
;
if
(
!
transform_null_in
)
{
/// We convert nullable columns to non nullable we also need to update nullable types
for
(
size_t
i
=
0
;
i
<
set_elements_types
.
size
();
++
i
)
{
data_types
[
i
]
=
removeNullable
(
data_types
[
i
]);
set_elements_types
[
i
]
=
removeNullable
(
set_elements_types
[
i
]);
}
extractNestedColumnsAndNullMap
(
key_columns
,
null_map
);
}
if
(
fill_set_elements
)
{
...
...
@@ -182,7 +191,7 @@ bool Set::insertFromBlock(const Block & block)
ConstNullMapPtr
null_map
{};
ColumnPtr
null_map_holder
;
if
(
!
transform_null_in
)
null_map_holder
=
extractNestedColumnsAndNullMap
(
key_columns
,
null_map
);
null_map_holder
=
extractNestedColumnsAndNullMap
(
key_columns
,
null_map
);
/// Filter to extract distinct values from the block.
ColumnUInt8
::
MutablePtr
filter
;
...
...
tests/queries/0_stateless/01681_bloom_filter_nullable_column.reference
0 → 100644
浏览文件 @
31f2f7f1
NullableTuple with transform_null_in=0
NullableTuple with transform_null_in=1
NullableColumnFromCast with transform_null_in=0
1 test
NullableColumnFromCast with transform_null_in=1
1 test
NullableColumnFromTable with transform_null_in=0
1 test
NullableColumnFromTable with transform_null_in=1
1 test
tests/queries/0_stateless/01681_bloom_filter_nullable_column.sql
0 → 100644
浏览文件 @
31f2f7f1
DROP
TABLE
IF
EXISTS
bloom_filter_nullable_index
;
CREATE
TABLE
bloom_filter_nullable_index
(
order_key
UInt64
,
str
Nullable
(
String
),
INDEX
idx
(
str
)
TYPE
bloom_filter
GRANULARITY
1
)
ENGINE
=
MergeTree
()
ORDER
BY
order_key
SETTINGS
index_granularity
=
6
;
INSERT
INTO
bloom_filter_nullable_index
VALUES
(
1
,
'test'
);
INSERT
INTO
bloom_filter_nullable_index
VALUES
(
2
,
'test2'
);
SELECT
'NullableTuple with transform_null_in=0'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
'1048576'
,
str
FROM
bloom_filter_nullable_index
)
SETTINGS
transform_null_in
=
0
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
'1048576'
,
str
FROM
bloom_filter_nullable_index
)
SETTINGS
transform_null_in
=
0
;
SELECT
'NullableTuple with transform_null_in=1'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
'1048576'
,
str
FROM
bloom_filter_nullable_index
)
SETTINGS
transform_null_in
=
1
;
-- { serverError 20 }
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
'1048576'
,
str
FROM
bloom_filter_nullable_index
)
SETTINGS
transform_null_in
=
1
;
-- { serverError 20 }
SELECT
'NullableColumnFromCast with transform_null_in=0'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
cast
(
'test'
,
'Nullable(String)'
))
SETTINGS
transform_null_in
=
0
;
SELECT
'NullableColumnFromCast with transform_null_in=1'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
cast
(
'test'
,
'Nullable(String)'
))
SETTINGS
transform_null_in
=
1
;
DROP
TABLE
IF
EXISTS
nullable_string_value
;
CREATE
TABLE
nullable_string_value
(
value
Nullable
(
String
))
ENGINE
=
TinyLog
;
INSERT
INTO
nullable_string_value
VALUES
(
'test'
);
SELECT
'NullableColumnFromTable with transform_null_in=0'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
value
FROM
nullable_string_value
)
SETTINGS
transform_null_in
=
0
;
SELECT
'NullableColumnFromTable with transform_null_in=1'
;
SELECT
*
FROM
bloom_filter_nullable_index
WHERE
str
IN
(
SELECT
value
FROM
nullable_string_value
)
SETTINGS
transform_null_in
=
1
;
DROP
TABLE
nullable_string_value
;
DROP
TABLE
bloom_filter_nullable_index
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录