1-- 2-- Copyright 2024 The Android Open Source Project 3-- 4-- Licensed under the Apache License, Version 2.0 (the 'License'); 5-- you may not use this file except in compliance with the License. 6-- You may obtain a copy of the License at 7-- 8-- https://www.apache.org/licenses/LICENSE-2.0 9-- 10-- Unless required by applicable law or agreed to in writing, software 11-- distributed under the License is distributed on an 'AS IS' BASIS, 12-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13-- See the License for the specific language governing permissions and 14-- limitations under the License. 15 16INCLUDE PERFETTO MODULE graphs.search; 17 18-- Given a table containing the edges in a tree and a table of start_nodes, 19-- returns the ids of all the nodes reachable by walking up the tree from each 20-- of the start nodes. 21CREATE PERFETTO MACRO _tree_reachable_ancestors_or_self( 22 tree TableOrSubquery, 23 start_nodes TableOrSubquery 24) 25RETURNS TableOrSubquery AS 26( 27 SELECT 28 node_id AS id 29 FROM graph_reachable_dfs!( 30 (SELECT id AS source_node_id, parent_id AS dest_node_id FROM $tree), 31 (SELECT id AS node_id FROM $start_nodes) 32 ) 33); 34