pub const CORE_DDL: &str = "
CREATE TABLE IF NOT EXISTS sessions (
id TEXT PRIMARY KEY,
kind TEXT NOT NULL CHECK (kind IN ('debug','profile')),
target TEXT NOT NULL,
target_class TEXT NOT NULL,
target_hash TEXT,
started_at TEXT NOT NULL,
ended_at TEXT,
label TEXT NOT NULL,
created_by TEXT NOT NULL DEFAULT 'auto'
);
CREATE TABLE IF NOT EXISTS layers (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
source TEXT NOT NULL,
file TEXT,
collected_at TEXT,
command_used TEXT,
collection_secs REAL,
target_hash TEXT
);
CREATE INDEX IF NOT EXISTS idx_layers_session ON layers(session_id);
CREATE TABLE IF NOT EXISTS symbols (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
lang TEXT NOT NULL,
fqn TEXT NOT NULL,
file TEXT,
line INTEGER,
demangled TEXT,
raw TEXT NOT NULL,
is_synthetic INTEGER NOT NULL DEFAULT 0,
UNIQUE(session_id, lang, fqn)
);
CREATE INDEX IF NOT EXISTS idx_symbols_fqn ON symbols(lang, fqn);
CREATE TABLE IF NOT EXISTS meta (
session_id TEXT NOT NULL REFERENCES sessions(id),
key TEXT NOT NULL,
value TEXT,
PRIMARY KEY (session_id, key)
);
CREATE TABLE IF NOT EXISTS failures (
session_id TEXT NOT NULL REFERENCES sessions(id),
phase TEXT,
error TEXT
);
CREATE TABLE IF NOT EXISTS regions (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
name TEXT NOT NULL,
start_us REAL,
duration_us REAL,
thread TEXT,
layer_id INTEGER REFERENCES layers(id)
);
CREATE INDEX IF NOT EXISTS idx_regions_session ON regions(session_id);
CREATE TABLE IF NOT EXISTS allocations (
id INTEGER PRIMARY KEY,
session_id TEXT NOT NULL REFERENCES sessions(id),
op TEXT NOT NULL,
address INTEGER NOT NULL,
bytes INTEGER NOT NULL,
start_us REAL,
heap TEXT NOT NULL DEFAULT 'default',
thread TEXT,
stack_json TEXT,
layer_id INTEGER REFERENCES layers(id)
);
CREATE INDEX IF NOT EXISTS idx_alloc_addr ON allocations(session_id, address);
CREATE INDEX IF NOT EXISTS idx_alloc_time ON allocations(session_id, start_us);
";Expand description
Shared meta tables — always created regardless of track or target class.