• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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