Skip to content

Commit 0f47fc6

Browse files
committed
Prevent LOGICAL_ERROR on OptimizeIfWithConstantConditionVisitor
1 parent 002a873 commit 0f47fc6

File tree

3 files changed

+7
-1
lines changed

3 files changed

+7
-1
lines changed

src/Interpreters/OptimizeIfWithConstantConditionVisitor.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,14 @@ void OptimizeIfWithConstantConditionVisitorData::visit(ASTFunction & function_no
9898
if (tryExtractConstValueFromCondition(condition_expr, condition))
9999
{
100100
ASTPtr replace_ast = condition ? then_expr : else_expr;
101+
bool replacement_supports_alias = replace_ast->as<ASTWithAlias>() != nullptr;
102+
String if_alias = ast->tryGetAlias();
103+
/// We cannot set the resulting alias if the replace ast does not support it (e.g. ASTAsterisk), so it's better to do nothing
104+
if (!if_alias.empty() && !replacement_supports_alias)
105+
return;
106+
101107
ASTPtr child_copy = ast;
102108
String replace_alias = replace_ast->tryGetAlias();
103-
String if_alias = ast->tryGetAlias();
104109

105110
if (replace_alias.empty())
106111
{

tests/queries/0_stateless/03443_alias_with_asterisk.reference

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CREATE TABLE t0 (c0 Int ALIAS if(NULL, 1, *)) ENGINE = Memory; -- { serverError UNKNOWN_IDENTIFIER }

0 commit comments

Comments
 (0)