@@ -38,7 +38,7 @@ namespace ErrorCodes
3838namespace
3939{
4040
41- std::vector<TableNode *> collectTableNodesWithStorage (const StoragePtr & storage , IQueryTreeNode * root)
41+ std::vector<TableNode *> collectTableNodesWithTemporaryTableName (const std::string & temporary_table_name , IQueryTreeNode * root)
4242{
4343 std::vector<TableNode *> result;
4444
@@ -51,7 +51,7 @@ std::vector<TableNode *> collectTableNodesWithStorage(const StoragePtr & storage
5151 nodes_to_process.pop_back ();
5252
5353 auto * table_node = subtree_node->as <TableNode>();
54- if (table_node && table_node->getStorageID () == storage-> getStorageID () )
54+ if (table_node && table_node->getTemporaryTableName () == temporary_table_name )
5555 result.push_back (table_node);
5656
5757 for (auto & child : subtree_node->getChildren ())
@@ -77,7 +77,9 @@ class RecursiveCTEChunkGenerator
7777 chassert (recursive_cte_union_node_typed.hasRecursiveCTETable ());
7878
7979 auto & recursive_cte_table = recursive_cte_union_node_typed.getRecursiveCTETable ();
80- recursive_table_nodes = collectTableNodesWithStorage (recursive_cte_table->storage , recursive_cte_union_node.get ());
80+
81+ const auto & cte_name = recursive_cte_union_node_typed.getCTEName ();
82+ recursive_table_nodes = collectTableNodesWithTemporaryTableName (cte_name, recursive_cte_union_node.get ());
8183 if (recursive_table_nodes.empty ())
8284 throw Exception (ErrorCodes::LOGICAL_ERROR, " UNION query {} is not recursive" , recursive_cte_union_node->formatASTForErrorMessage ());
8385
0 commit comments