You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
SQL Server (T-SQL) is now a first-class datasource: configure with type: mssql (or sqlserver / tsql), and SLayer auto-generates T-SQL flavoured date math, stat aggregations, and full type mappings. A Docker Compose example with SQL Server 2022 ships under examples/sqlserver/.
search() accepts a new cypher_filter parameter - an openCypher MATCH ... RETURN n.id AS id query that narrows results to a subset of your semantic graph (e.g. "only columns reachable from the orders model") before any ranking happens.
search() now returns a single flat results list capped by max_results, instead of three separate memories/example_queries/entities buckets with per-bucket caps. If you were reading the bucket fields or passing max_memories / max_example_queries / max_entities, update your call sites - you can use the Cypher filter to narrow down the search to a particular set of entities.
The pip extra for embedding-based search has been renamed from embedding_search to advanced_search (it now also pulls in the graph backend for cypher_filter). Install with pip install motley-slayer[advanced_search].
Column hits from search() now surface the full top-50 sample values (was previously truncated to ~20) plus a Distinct count: N line when the underlying column has more distinct values than the snapshot captured.
Fix: ordering a query by a ModelMeasure referenced by name (e.g. order=[{"column": "aov"}]) no longer fails on PostgreSQL with an undefined-column error - the ORDER BY alias now matches the SELECT alias.
Fix: filters that reference a multi-term Column.sql (arithmetic composites, AND/OR expressions, NOT, BETWEEN, IN) now emit correctly parenthesised SQL. Previously, a filter like <col> IS NULL against a column defined as archived AND deleted could parse as archived AND (deleted IS NULL) instead of the intended (archived AND deleted) IS NULL.