warmFts5 method

Future<void> warmFts5(
  1. String tableName,
  2. String columnName
)

V44: build (or rebuild) the FTS5 corpus for a paged table so hybrid search TVFs can use it. In-memory tables don't need this — fts5IndexFor lazily builds their corpus on demand. Paged corpuses persist in the _fts5IndexCache until the next mutation of tableName invalidates them.

Implementation

Future<void> warmFts5(String tableName, String columnName) async {
  final pt = _pagedTable(tableName);
  if (pt == null) {
    // In-memory: just prime the lazy cache.
    fts5IndexFor(tableName, columnName);
    return;
  }
  final key = '${tableName.toLowerCase()}:${columnName.toLowerCase()}';
  final pkName = pt.primaryKey.name;
  final docs = <String>[];
  final pks = <Object>[];
  await for (final row in pt.scan()) {
    final pk = row[pkName];
    if (pk == null) continue;
    final txt = row[columnName] ?? row[columnName.toLowerCase()];
    docs.add(txt?.toString() ?? '');
    pks.add(pk);
  }
  _fts5IndexCache[key] = Fts5Index.build(docs);
  _pagedFts5Pks[key] = pks;
}