Skip to content

Commit 397ea20

Browse files
committed
Prevent another LOGICAL_ERROR due to aliases
1 parent 0f47fc6 commit 397ea20

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed

src/Interpreters/TreeRewriter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,10 @@ void renameDuplicatedColumns(const ASTSelectQuery * select_query)
365365

366366
for (auto & expr : elements)
367367
{
368+
/// We can't rename with aliases if it doesn't support alias (e.g. asterisk)
369+
if (!expr->as<ASTWithAlias>())
370+
continue;
371+
368372
auto name = expr->getAliasOrColumnName();
369373

370374
if (!assigned_column_names.insert(name).second)
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
SELECT
2+
`_--t1.a` AS `t1.a`,
3+
`_--t1.b` AS `t1.b`,
4+
`_--t2.a` AS `t2.a`,
5+
`_--t2.b` AS `t2.b`,
6+
`toNullable(10)` AS `t3.toNullable(10)`,
7+
`_--t3.a` AS `t3.a`,
8+
`_--t3.b` AS `t3.b`,
9+
`isZeroOrNull(10)` AS `t3.isZeroOrNull(10)`,
10+
`_--t3.10` AS `t3.10`,
11+
`assumeNotNull(materialize(10))` AS `t3.assumeNotNull(materialize(10))`,
12+
`isNotNull(10)` AS `t3.isNotNull(10)`,
13+
x AS `t3.x`
14+
FROM
15+
(
16+
SELECT
17+
b AS `_--t1.b`,
18+
a AS `_--t1.a`,
19+
t2.b AS `_--t2.b`,
20+
t2.a AS `_--t2.a`
21+
FROM t1
22+
ALL INNER JOIN
23+
(
24+
SELECT
25+
a,
26+
b
27+
FROM t2
28+
) AS t2 ON if(`_--t2.b` > 0, `_--t2.a`, 0) = `_--t1.a`
29+
WHERE if(`_--t2.b` > 0, `_--t2.a`, 0) = `_--t1.a`
30+
) AS `--.s`
31+
CROSS JOIN
32+
(
33+
SELECT
34+
x,
35+
`assumeNotNull(materialize(10))`,
36+
`isNotNull(10)`,
37+
`isZeroOrNull(10)`,
38+
`toNullable(10)`,
39+
`10` AS `_--t3.10`,
40+
b AS `_--t3.b`,
41+
a AS `_--t3.a`
42+
FROM
43+
(
44+
SELECT
45+
toNullable(10),
46+
a,
47+
b,
48+
isZeroOrNull(10),
49+
10,
50+
assumeNotNull(materialize(10)),
51+
10 IS NOT NULL,
52+
a AS x
53+
FROM t3__fuzz_0
54+
WHERE (toNullable(toUInt256(1)) + a) = b
55+
) AS t3
56+
) AS `--.t`
57+
WHERE if(`_--t2.b` > 0, `_--t2.a`, 0) = `_--t1.a`
58+
ORDER BY
59+
x ASC NULLS FIRST,
60+
`_--t2.a` DESC NULLS LAST,
61+
`_--t1.a` DESC NULLS FIRST
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
-- Fuzzing `Can't set alias of * of Asterisk on alias`
2+
DROP TABLE IF EXISTS t1, t2, t3__fuzz_0;
3+
CREATE TABLE t1 (`a` UInt64, `b` UInt64) ENGINE = Log;
4+
CREATE TABLE t2 (`a` UInt64, `b` UInt64) ENGINE = Log;
5+
CREATE TABLE t3__fuzz_0 (`a` LowCardinality(UInt64), `b` UInt64) ENGINE = Log SETTINGS allow_suspicious_low_cardinality_types=1;
6+
EXPLAIN SYNTAX SELECT * FROM t1, t2, (SELECT toNullable(10), *, isZeroOrNull(10), 10, *, 10, *, *, 10, *, *, *, assumeNotNull(materialize(10)), 10 IS NOT NULL, a AS x FROM t3__fuzz_0 WHERE (toNullable(toUInt256(1)) + a) = b) AS t3 WHERE if(t2.b > 0, t2.a, 0) = t1.a ORDER BY t3.x ASC NULLS FIRST, t2.a DESC NULLS LAST, t1.a DESC NULLS FIRST;

0 commit comments

Comments
 (0)