* Lightweight maintenance to run after bulk writes (indexAll, sync). * Two operations: * * - `PRAGMA optimize` — incremental ANALYZE; SQLite only re-analyzes * tables whose row counts changed materially since the last * ANALYZE. Without it, the query planner has no statistic
()
| 700 | * CLI has already disarmed its watchdog). |
| 701 | */ |
| 702 | async runMaintenance(): Promise<void> { |
| 703 | // In-memory / test databases: nothing worth a worker round-trip. |
| 704 | if (!this.dbPath || this.dbPath === ':memory:') { |
| 705 | try { this.db.exec('PRAGMA optimize'); } catch { /* ignore */ } |
| 706 | try { this.db.exec('PRAGMA wal_checkpoint(PASSIVE)'); } catch { /* ignore */ } |
| 707 | return; |
| 708 | } |
| 709 | await this.runPragmasOffThread( |
| 710 | ['PRAGMA analysis_limit=1000', 'PRAGMA optimize', 'PRAGMA wal_checkpoint(PASSIVE)'], |
| 711 | // Worker threads unavailable — bounded in-line fallback, no checkpoint. |
| 712 | ['PRAGMA analysis_limit=1000', 'PRAGMA optimize'] |
| 713 | ); |
| 714 | } |
| 715 | |
| 716 | /** |
| 717 | * Run pragmas on a worker thread against its own connection to this DB |
no test coverage detected