blob: d9bf3df2afcdde29498272a0cecc9dddfd19020f [file] [view] [edit]
# SQLite Upgrade Guide
## Overview
Perfetto depends on SQLite internals:
- SQLite grammar processing via the syntaqlite library
- Internal SQLite constants and structures
## Upgrade Procedure
### Prerequisites
Only upgrade when Chrome, Android, and Google3 all support the target SQLite version.
### Steps
1. **Update version references:**
- `tools/install-build-deps` - update SQLite version/hash
- `bazel/deps.bzl` - update SQLite version/hash
2. **Regenerate the PerfettoSQL parser:**
```bash
python3 tools/gen_syntaqlite_parser
```
3. **Build and test:**
```bash
tools/ninja -C out/linux_clang_release trace_processor_shell perfetto_unittests
out/linux_clang_release/perfetto_unittests --gtest_filter="*Sql*"
tools/diff_test_trace_processor.py out/linux_clang_release/trace_processor_shell --quiet
```
## Common Issues
### SQLite Internal API Changes
**Error:** Compilation errors in `sqlite_utils.h` or `sqlite/bindings/*.h`
**Fix:** Update bindings for SQLite API changes
## Key Files
### Always Review
- `tools/install-build-deps` - SQLite version/hash
- `bazel/deps.bzl` - SQLite version/hash
- `tools/gen_syntaqlite_parser` - Parser regeneration script
### Generated (Don't Edit)
- `src/trace_processor/perfetto_sql/syntaqlite/syntaqlite_perfetto.c`
- `src/trace_processor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h`
### Grammar Sources (Edit These)
- `src/trace_processor/perfetto_sql/syntaqlite/perfetto.y` - Perfetto dialect grammar
- `src/trace_processor/perfetto_sql/syntaqlite/perfetto.synq` - AST node definitions
## Rollback
1. Revert version changes in `tools/install-build-deps` and `bazel/deps.bzl`
2. Re-run `python3 tools/gen_syntaqlite_parser`
3. Rebuild