mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Fix heap-use-after-free for Merge table with alias
This commit is contained in:
parent
0b97f3ac16
commit
026ac4deb1
@ -681,8 +681,9 @@ public:
|
||||
{
|
||||
if (column->hasExpression())
|
||||
{
|
||||
auto column_name = column->getColumnName();
|
||||
node = column->getExpressionOrThrow();
|
||||
node->setAlias(column->getColumnName());
|
||||
node->setAlias(column_name);
|
||||
}
|
||||
else
|
||||
column->setColumnSource(replacement_table_expression);
|
||||
|
@ -0,0 +1,10 @@
|
||||
alias1
|
||||
1 4 16 23
|
||||
23 16 4 1
|
||||
2020-02-02 1 4 2 16 3 23
|
||||
alias2
|
||||
1 3 4 4
|
||||
4 4 3 1
|
||||
23 16 4 1
|
||||
2020-02-01 1 3 2 4 3 4
|
||||
2020-02-02 1 4 2 16 3 23
|
@ -0,0 +1,60 @@
|
||||
-- Tags: no-parallel
|
||||
|
||||
drop table if exists merge;
|
||||
set allow_experimental_analyzer = 1;
|
||||
create table merge
|
||||
(
|
||||
dt Date,
|
||||
colAlias0 Int32,
|
||||
colAlias1 Int32,
|
||||
col2 Int32,
|
||||
colAlias2 UInt32,
|
||||
col3 Int32,
|
||||
colAlias3 UInt32
|
||||
)
|
||||
engine = Merge(currentDatabase(), '^alias_');
|
||||
|
||||
drop table if exists alias_1;
|
||||
drop table if exists alias_2;
|
||||
|
||||
create table alias_1
|
||||
(
|
||||
dt Date,
|
||||
col Int32,
|
||||
colAlias0 UInt32 alias col,
|
||||
colAlias1 UInt32 alias col3 + colAlias0,
|
||||
col2 Int32,
|
||||
colAlias2 Int32 alias colAlias1 + col2 + 10,
|
||||
col3 Int32,
|
||||
colAlias3 Int32 alias colAlias2 + colAlias1 + col3
|
||||
)
|
||||
engine = MergeTree()
|
||||
order by (dt);
|
||||
|
||||
insert into alias_1 (dt, col, col2, col3) values ('2020-02-02', 1, 2, 3);
|
||||
|
||||
select 'alias1';
|
||||
select colAlias0, colAlias1, colAlias2, colAlias3 from alias_1;
|
||||
select colAlias3, colAlias2, colAlias1, colAlias0 from merge;
|
||||
select * from merge;
|
||||
|
||||
create table alias_2
|
||||
(
|
||||
dt Date,
|
||||
col Int32,
|
||||
col2 Int32,
|
||||
colAlias0 UInt32 alias col,
|
||||
colAlias3 Int32 alias col3 + colAlias0,
|
||||
colAlias1 UInt32 alias colAlias0 + col2,
|
||||
colAlias2 Int32 alias colAlias0 + colAlias1,
|
||||
col3 Int32
|
||||
)
|
||||
engine = MergeTree()
|
||||
order by (dt);
|
||||
|
||||
insert into alias_2 (dt, col, col2, col3) values ('2020-02-01', 1, 2, 3);
|
||||
|
||||
select 'alias2';
|
||||
select colAlias0, colAlias1, colAlias2, colAlias3 from alias_2;
|
||||
select colAlias3, colAlias2, colAlias1, colAlias0 from merge order by dt;
|
||||
select * from merge order by dt;
|
Loading…
Reference in New Issue
Block a user