ui: Show thread timestamps in userspace slice details panel

When selecting a slice we gather information form several different
places and displays it together in the details panel.

Previously there were three places:
- columns of the slice table
- The arguments associated with the slice (if any)
- The 'description' generated by trace_processor

Since we only looked at the root table (slice) this missed some
information that could be present on the subclass table of the slice.
On Chrome slices for example the thread_ts/thread_dur information is
stored on the thread_slice table.

This CL instead finds the 'child-most' or leaf subclass of the slice
table which contains the slice and queries that table appending the
additional columns to the arguments of the slice.

In order to do this we make a few small improvements to the query
iterator methods to:
a) Neatly parse queries which should return at most one row
b) Add support for queries where we do not know the columns at
   build time (i.e. select * from foo;)

Bug: b/141753510
Change-Id: I613fbb80d052725d6e5b308c20a34069861231b1
2 files changed
tree: b960b9824a433dcd9701bf7b3b41fe91c2ce06d8
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. src/
  13. test/
  14. tools/
  15. ui/
  16. .clang-format
  17. .clang-tidy
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. Android.bp
  23. Android.bp.extras
  24. BUILD
  25. BUILD.extras
  26. BUILD.gn
  27. CHANGELOG
  28. codereview.settings
  29. DIR_METADATA
  30. heapprofd.rc
  31. LICENSE
  32. meson.build
  33. METADATA
  34. MODULE_LICENSE_APACHE2
  35. OWNERS
  36. perfetto.rc
  37. PerfettoIntegrationTests.xml
  38. PRESUBMIT.py
  39. README.chromium
  40. README.md
  41. TEST_MAPPING
  42. traced_perf.rc
  43. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.