xref: /aosp_15_r20/external/perfetto/src/trace_processor/perfetto_sql/stdlib/slices/with_context.sql (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
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
16-- All thread slices with data about thread, thread track and process.
17-- Where possible, use available view functions which filter this view.
18CREATE PERFETTO VIEW thread_slice(
19  -- Slice
20  id JOINID(slice.id),
21  -- Alias for `slice.type`.
22  type STRING,
23  -- Alias for `slice.ts`.
24  ts TIMESTAMP,
25  -- Alias for `slice.dur`.
26  dur DURATION,
27  -- Alias for `slice.category`.
28  category STRING,
29  -- Alias for `slice.name`.
30  name STRING,
31  -- Alias for `slice.track_id`.
32  track_id JOINID(track.id),
33  -- Alias for `thread_track.name`.
34  track_name STRING,
35  -- Alias for `thread.name`.
36  thread_name STRING,
37  -- Alias for `thread.utid`.
38  utid JOINID(thread.id),
39  -- Alias for `thread.tid`.
40  tid LONG,
41  -- Alias for `thread.is_main_thread`.
42  is_main_thread BOOL,
43  -- Alias for `process.name`.
44  process_name STRING,
45  -- Alias for `process.upid`.
46  upid JOINID(process.id),
47  -- Alias for `process.pid`.
48  pid LONG,
49  -- Alias for `slice.depth`.
50  depth LONG,
51  -- Alias for `slice.parent_id`.
52  parent_id JOINID(slice.id),
53  -- Alias for `slice.arg_set_id`.
54  arg_set_id ARGSETID,
55  -- Alias for `slice.thread_ts`.
56  thread_ts TIMESTAMP,
57  -- Alias for `slice.thread_dur`.
58  thread_dur LONG
59) AS
60SELECT
61  slice.id,
62  slice.type,
63  slice.ts,
64  slice.dur,
65  slice.category,
66  slice.name,
67  slice.track_id,
68  thread_track.name AS track_name,
69  thread.name AS thread_name,
70  thread.utid,
71  thread.tid,
72  thread.is_main_thread,
73  process.name AS process_name,
74  process.upid,
75  process.pid,
76  slice.depth,
77  slice.parent_id,
78  slice.arg_set_id,
79  slice.thread_ts,
80  slice.thread_dur
81FROM slice
82JOIN thread_track ON slice.track_id = thread_track.id
83JOIN thread USING (utid)
84LEFT JOIN process USING (upid);
85
86-- All process slices with data about process track and process.
87-- Where possible, use available view functions which filter this view.
88CREATE PERFETTO VIEW process_slice(
89  -- Slice
90  id JOINID(slice.id),
91  -- Alias for `slice.type`.
92  type STRING,
93  -- Alias for `slice.ts`.
94  ts TIMESTAMP,
95  -- Alias for `slice.dur`.
96  dur DURATION,
97  -- Alias for `slice.category`.
98  category STRING,
99  -- Alias for `slice.name`.
100  name STRING,
101  -- Alias for `slice.track_id`.
102  track_id JOINID(track.id),
103  -- Alias for `process_track.name`.
104  track_name STRING,
105  -- Alias for `process.name`.
106  process_name STRING,
107  -- Alias for `process.upid`.
108  upid JOINID(process.id),
109  -- Alias for `process.pid`.
110  pid LONG,
111  -- Alias for `slice.depth`.
112  depth LONG,
113  -- Alias for `slice.parent_id`.
114  parent_id JOINID(slice.id),
115  -- Alias for `slice.arg_set_id`.
116  arg_set_id ARGSETID,
117  -- Alias for `slice.thread_ts`.
118  thread_ts TIMESTAMP,
119  -- Alias for `slice.thread_dur`.
120  thread_dur LONG
121) AS
122SELECT
123  slice.id,
124  slice.type,
125  slice.ts,
126  slice.dur,
127  slice.category,
128  slice.name,
129  slice.track_id,
130  process_track.name AS track_name,
131  process.name AS process_name,
132  process.upid,
133  process.pid,
134  slice.depth,
135  slice.parent_id,
136  slice.arg_set_id,
137  slice.thread_ts,
138  slice.thread_dur
139FROM slice
140JOIN process_track ON slice.track_id = process_track.id
141JOIN process USING (upid);