v0.8.0
Release Notes — 2026-05-22
Fixed
- SQL slow-query MCP tools (
search_sql,search_sql_api,
search_sql_granite,search_sql_api_granite) no longer leak rows that
don't matchmin_time/min_lock_timewhen combined withtable_filter.
LanceDB's bypass-index path was demoting prefilters to postfilters;
filters now apply before the index strategy. - Hybrid search no longer returns the same fingerprint twice. The vector +
FTS branches could double-emit; results are now deduped by fingerprint id. - The "Showing N of M results" header is no longer arithmetically impossible.
If a future regression makes search andcount_matchingdisagree, the
header surfaces both numbers in-band and a WARNING is logged — no
fabricated clamping.
Documentation
config.yaml/config.yaml.exampleengine descriptions now spell out
the filter contract:min_time— milliseconds, cumulativeexecution_time_msacross all
calls of a fingerprint (not per-call avg).min_lock_time— seconds, cumulativelock_time_sec.table_filter— matches against thetableslist column.
Skills
- New:
slow-query-triage— finds the most impacted query in one MCP call
(min_time=999999is the leverage point); Phase 2 validates root cause
against live MySQL. - New:
locking-query-triage— surfaces the entire lock-contention universe
in one call and attributes damage to tables and services. - Removed:
slow-query-investigator(had structural bugs in predicate
attribution across JOINs).
Internals
IVectorStore.count_matching(...)added to the ports protocol, mirrored
onSearchService, and implemented byLanceDBStore(filter-correct via
table.count_rows(filter=...)). Used to computetotal_matchingfor the
result header._normalize_table_name()centralizestable_filtercanonicalization:
handles SQLGlot quoted identifiers, schema-qualified names, and case
folding.- Python-side postfilter loop after
to_polars()acts as defense-in-depth
on the LanceDB prefilter, in case its prefilter semantics change again.
Tests
tests/integration/test_lancedb_filter_bugs.pypins all three bugs
against a real LanceDB instance (4 tests, all green).- New unit tests guard the filter-ordering invariant, the dedup behavior,
and the anomaly-flagged header.
Full Changelog: v0.7.3...v0.8.0