Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
4c73eea3
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,体验更适合开发者的 AI 搜索 >>
提交
4c73eea3
编写于
6月 28, 2016
作者:
A
Alexey Milovidov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixed error with ARRAY JOIN of arrays of strings [#METR-21863].
上级
aafe85e4
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
27 addition
and
10 deletion
+27
-10
dbms/src/Columns/ColumnArray.cpp
dbms/src/Columns/ColumnArray.cpp
+7
-10
dbms/tests/queries/0_stateless/00338_replicate_array_of_strings.reference
...es/0_stateless/00338_replicate_array_of_strings.reference
+2
-0
dbms/tests/queries/0_stateless/00338_replicate_array_of_strings.sql
.../queries/0_stateless/00338_replicate_array_of_strings.sql
+18
-0
未找到文件。
dbms/src/Columns/ColumnArray.cpp
浏览文件 @
4c73eea3
...
...
@@ -361,16 +361,14 @@ ColumnPtr ColumnArray::replicateString(const Offsets_t & replicate_offsets) cons
size_t
size_to_replicate
=
replicate_offsets
[
i
]
-
prev_replicate_offset
;
/// Количество строк в массиве.
size_t
value_size
=
src_offsets
[
i
]
-
prev_src_offset
;
size_t
sum_chars_size
=
0
;
/// Количество символов в строках массива, включая нулевые байты.
size_t
sum_chars_size
=
value_size
==
0
?
0
:
(
src_string_offsets
[
prev_src_offset
+
value_size
-
1
]
-
prev_src_string_offset
)
;
for
(
size_t
j
=
0
;
j
<
size_to_replicate
;
++
j
)
{
current_res_offset
+=
value_size
;
res_offsets
.
push_back
(
current_res_offset
);
sum_chars_size
=
0
;
size_t
prev_src_string_offset_local
=
prev_src_string_offset
;
for
(
size_t
k
=
0
;
k
<
value_size
;
++
k
)
{
...
...
@@ -380,14 +378,13 @@ ColumnPtr ColumnArray::replicateString(const Offsets_t & replicate_offsets) cons
current_res_string_offset
+=
chars_size
;
res_string_offsets
.
push_back
(
current_res_string_offset
);
/// Копирование символов одной строки.
res_chars
.
resize
(
res_chars
.
size
()
+
chars_size
);
memcpySmallAllowReadWriteOverflow15
(
&
res_chars
[
res_chars
.
size
()
-
chars_size
],
&
src_chars
[
prev_src_string_offset_local
],
chars_size
);
sum_chars_size
+=
chars_size
;
prev_src_string_offset_local
+=
chars_size
;
}
/// Копирование символов массива строк.
res_chars
.
resize
(
res_chars
.
size
()
+
sum_chars_size
);
memcpySmallAllowReadWriteOverflow15
(
&
res_chars
[
res_chars
.
size
()
-
sum_chars_size
],
&
src_chars
[
prev_src_string_offset
],
sum_chars_size
);
}
prev_replicate_offset
=
replicate_offsets
[
i
];
...
...
dbms/tests/queries/0_stateless/00338_replicate_array_of_strings.reference
0 → 100644
浏览文件 @
4c73eea3
['']
['abc']
dbms/tests/queries/0_stateless/00338_replicate_array_of_strings.sql
0 → 100644
浏览文件 @
4c73eea3
DROP
TABLE
IF
EXISTS
test
.
bad_arrays
;
CREATE
TABLE
test
.
bad_arrays
(
a
Array
(
String
),
b
Array
(
UInt8
))
ENGINE
=
Memory
;
INSERT
INTO
test
.
bad_arrays
VALUES
([
''
],[]),([
''
],[
1
]);
SELECT
a
FROM
test
.
bad_arrays
ARRAY
JOIN
b
;
DROP
TABLE
test
.
bad_arrays
;
DROP
TABLE
IF
EXISTS
test
.
bad_arrays
;
CREATE
TABLE
test
.
bad_arrays
(
a
Array
(
String
),
b
Array
(
String
))
ENGINE
=
Memory
;
INSERT
INTO
test
.
bad_arrays
VALUES
([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
'abc'
],[
'223750'
]),([
'ноутбук acer aspire e5-532-p3p2'
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
''
],[]),([
'лучшие моноблоки 2016'
],[]),([
'лучшие моноблоки 2016'
],[]),([
''
],[]),([
''
],[]);
SELECT
a
FROM
test
.
bad_arrays
ARRAY
JOIN
b
;
DROP
TABLE
test
.
bad_arrays
;
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录