Easy to reproduce. Introduced in v25.4.7.
<Fatal> : Logical error: 'Expected to have only one join clause, got 1: [Left keys: [] Right keys [] Condition columns: '', ''], query: ' ALL FULL OUTER JOIN ... USING ()''.
<Fatal> : Stack trace (when copying this message, always include the lines below):
0. contrib/llvm-project/libcxx/include/__exception/exception.h:113: Poco::Exception::Exception(String const&, int) @ 0x00000000203c2892
1. src/Common/Exception.cpp:115: DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x0000000013624ea6
2. src/Common/Exception.h:119: DB::Exception::Exception(PreformattedMessage&&, int) @ 0x000000000c7094cc
3. src/Common/Exception.h:137: DB::Exception::Exception<unsigned long, fmt::v11::join_view<std::__wrap_iter<String*>, std::__wrap_iter<String*>, char>, String>(int, FormatStringHelperImpl<std::type_identity<unsigned long>::type, std::type_identity<fmt::v11::join_view<std::__wrap_iter<String*>, std::__wrap_iter<String*>, char>>::type, std::type_identity<String>::type>, unsigned long&&, fmt::v11::join_view<std::__wrap_iter<String*>, std::__wrap_iter<String*>, char>&&, String&&) @ 0x000000001a2a1e96
4. src/Interpreters/TableJoin.cpp:1082: DB::TableJoin::assertHasOneOnExpr() const @ 0x000000001a29efd7
5. src/Interpreters/TableJoin.h:325: DB::StorageJoin::getJoinLocked(std::shared_ptr<DB::TableJoin>, String, std::chrono::duration<long long, std::ratio<1l, 1000l>>, std::vector<String, std::allocator<String>> const&) const @ 0x000000001b540ed4
6. src/Planner/PlannerJoins.cpp:1257: DB::chooseJoinAlgorithm(std::shared_ptr<DB::TableJoin>&, DB::PreparedJoinStorage const&, DB::Block const&, DB::Block const&, DB::JoinAlgorithmSettings const&, unsigned long, std::optional<unsigned long>) @ 0x00000000197dd779
7. src/Planner/PlannerJoinTree.cpp:1516: DB::(anonymous namespace)::buildJoinQueryPlan(DB::QueryPlan, DB::QueryPlan, std::shared_ptr<DB::TableJoin>&, DB::JoinClausesAndActions&, std::unordered_set<std::shared_ptr<DB::FutureSet>, std::hash<std::shared_ptr<DB::FutureSet>>, std::equal_to<std::shared_ptr<DB::FutureSet>>, std::allocator<std::shared_ptr<DB::FutureSet>>>&, std::shared_ptr<DB::IQueryTreeNode> const&, std::unordered_set<String, std::hash<String>, std::equal_to<String>, std::allocator<String>> const&, std::shared_ptr<DB::PlannerContext>&, DB::SelectQueryInfo const&) @ 0x00000000197b7977
8. src/Planner/PlannerJoinTree.cpp:2063: DB::(anonymous namespace)::buildQueryPlanForJoinNodeLegacy(std::shared_ptr<DB::IQueryTreeNode> const&, DB::JoinTreeQueryPlan, DB::JoinTreeQueryPlan, std::unordered_set<String, std::hash<String>, std::equal_to<String>, std::allocator<String>> const&, std::shared_ptr<DB::PlannerContext>&, DB::SelectQueryInfo const&) @ 0x00000000197b5661
9. src/Planner/PlannerJoinTree.cpp:2154: DB::buildJoinTreeQueryPlan(std::shared_ptr<DB::IQueryTreeNode> const&, DB::SelectQueryInfo const&, DB::SelectQueryOptions&, std::unordered_set<String, std::hash<String>, std::equal_to<String>, std::allocator<String>> const&, std::shared_ptr<DB::PlannerContext>&) @ 0x00000000197a4f57
10. src/Planner/Planner.cpp:1604: DB::Planner::buildPlanForQueryNode() @ 0x000000001978bea7
11. src/Planner/Planner.cpp:1377: DB::Planner::buildQueryPlanIfNeeded() @ 0x0000000019788db3
12. src/Interpreters/InterpreterSelectQueryAnalyzer.cpp:269: DB::InterpreterSelectQueryAnalyzer::getQueryPlan() @ 0x000000001a09498d
13. src/Interpreters/executeQuery.cpp:1470: DB::executeQueryImpl(char const*, char const*, std::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, DB::ReadBuffer*, std::shared_ptr<DB::IAST>&) @ 0x000000001a36e079
14. src/Interpreters/executeQuery.cpp:1715: DB::executeQuery(String const&, std::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum) @ 0x000000001a368a31
15. src/Server/TCPHandler.cpp:721: DB::TCPHandler::runImpl() @ 0x000000001c12a652
16. src/Server/TCPHandler.cpp:2727: DB::TCPHandler::run() @ 0x000000001c143d84
17. base/poco/Net/src/TCPServerConnection.cpp:40: Poco::Net::TCPServerConnection::start() @ 0x0000000020467c27
18. base/poco/Net/src/TCPServerDispatcher.cpp:115: Poco::Net::TCPServerDispatcher::run() @ 0x0000000020468125
19. base/poco/Foundation/src/ThreadPool.cpp:205: Poco::PooledThread::run() @ 0x000000002041061f
20. base/poco/Foundation/src/Thread_POSIX.cpp:335: Poco::ThreadImpl::runnableEntry(void*) @ 0x000000002040e1d1
21. start_thread @ 0x00000000000a2ef1
22. __clone3 @ 0x000000000013445c
Describe the bug
Easy to reproduce. Introduced in v25.4.7.
How to reproduce
Run Fiddle: https://fiddle.clickhouse.com/4515ce4a-43da-404c-aacc-0848bb2c04ff
Error message and/or stacktrace
Stack trace: