diff --git a/src/Analyzer/Resolve/QueryAnalyzer.cpp b/src/Analyzer/Resolve/QueryAnalyzer.cpp index 34e1d7e54b50..9086da916423 100644 --- a/src/Analyzer/Resolve/QueryAnalyzer.cpp +++ b/src/Analyzer/Resolve/QueryAnalyzer.cpp @@ -292,6 +292,11 @@ bool isFromJoinTree(const IQueryTreeNode * node_source, const IQueryTreeNode * t stack.push(child_join_node->getLeftTableExpression().get()); stack.push(child_join_node->getRightTableExpression().get()); } + + if (const auto * child_join_node = current->as()) + { + stack.push_range(child_join_node->getTableExpressions() | std::views::transform(&QueryTreeNodePtr::get)); + } } return false; } diff --git a/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.reference b/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.reference new file mode 100644 index 000000000000..e6b34838e275 --- /dev/null +++ b/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.reference @@ -0,0 +1,7 @@ +000 +011 +022 +100 +111 +122 +\N diff --git a/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.sql b/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.sql new file mode 100644 index 000000000000..7035d1439ed1 --- /dev/null +++ b/tests/queries/0_stateless/03749_cross_join_use_nulls_matcher.sql @@ -0,0 +1,7 @@ +SET enable_analyzer = 1; + +SELECT concat(*) +FROM numbers(2) AS n1, numbers(3) AS n2 +RIGHT JOIN numbers(4) AS n3 + ON n2.number = n3.number +SETTINGS join_use_nulls = true;