# PerfettoSQL Chrome Standard Library

The [PerfettoSQL Standard Library](https://perfetto.dev/docs/analysis/stdlib-docs) contains commonly used SQL tables, views, functions and macros to make it easier for users to query traces. The Chrome Standard Library contains those metrics that are specific to Chrome.

The source of truth of the Perfetto SQL Chrome stdlib is the Chromium repository in `base/tracing/stdlib/` which makes it easier to develop new metrics and add tests for them in a single Chromium CL. So any changes to the Chrome stdlib should be made here.

## Modifying the Chrome Stdlib

You can add or modify a metric in `base/tracing/stdlib/chrome/`. If you add a new file here, you must add this to `perfetto_sql_files.gni` as well so it can be added to the source set.

If you make changes to the chrome stdlib, you should add/modify a diff test too. You may also wish to add an end-to-end TestTraceProcessor unit/browser test. See [instructions](../../test/README) on how to add these tests.

## PerfettoSQL Schema

The Perfetto CI runs a [script](https://source.chromium.org/chromium/chromium/src/+/main:third_party/perfetto/tools/check_sql_modules.py) to check that standard library modules are documented with the proper schema. In Chromium, we can run these checks locally by running `tools/tracing/check_stdlib.py`. This is also run as a presubmit check, so you could also run `git cl presubmit` to run these after you've created a CL.