@@ -1382,17 +1382,17 @@ IdentifierResolveResult QueryAnalyzer::tryResolveIdentifierInParentScopes(const
13821382 {
13831383 auto current = nodes_to_process.back ();
13841384 nodes_to_process.pop_back ();
1385- if (ColumnNodePtr current_column = std::dynamic_pointer_cast<ColumnNode>(current) )
1385+ if (current-> getNodeType () == QueryTreeNodeType::COLUMN )
13861386 {
1387- auto is_correlated_column = checkCorrelatedColumn (&scope, current_column );
1387+ auto is_correlated_column = checkCorrelatedColumn (&scope, current );
13881388 if (is_correlated_column && !scope.context ->getSettingsRef ()[Setting::allow_experimental_correlated_subqueries])
13891389 {
13901390 throw Exception (ErrorCodes::UNSUPPORTED_METHOD,
13911391 " Resolved identifier '{}' in parent scope to expression '{}' with correlated column '{}'"
13921392 " (Enable 'allow_experimental_correlated_subqueries' setting to allow correlated subqueries execution). In scope {}" ,
13931393 identifier_lookup.identifier .getFullName (),
13941394 resolved_identifier->formatASTForErrorMessage (),
1395- current_column ->getColumnName (),
1395+ current-> as <ColumnNode>() ->getColumnName (),
13961396 scope.scope_node ->formatASTForErrorMessage ());
13971397 }
13981398 }
@@ -2932,13 +2932,13 @@ ProjectionNames QueryAnalyzer::resolveFunction(QueryTreeNodePtr & node, Identifi
29322932 if (is_special_function_exists)
29332933 {
29342934 checkFunctionNodeHasEmptyNullsAction (*function_node_ptr);
2935- // / Rewrite EXISTS (subquery) into 1 IN (SELECT 1 FROM (subquery) LIMIT 1).
29362935 auto & exists_subquery_argument = function_node_ptr->getArguments ().getNodes ().at (0 );
29372936 bool correlated_exists_subquery = exists_subquery_argument->getNodeType () == QueryTreeNodeType::QUERY
29382937 ? exists_subquery_argument->as <QueryNode>()->isCorrelated ()
29392938 : exists_subquery_argument->as <UnionNode>()->isCorrelated ();
29402939 if (!correlated_exists_subquery)
29412940 {
2941+ // / Rewrite EXISTS (subquery) into 1 IN (SELECT 1 FROM (subquery) LIMIT 1).
29422942 auto constant_data_type = std::make_shared<DataTypeUInt64>();
29432943
29442944 auto in_subquery = std::make_shared<QueryNode>(Context::createCopy (scope.context ));
0 commit comments