Skip to content

This release adds 1 notable feature for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

semantic-layer

Summary

AI summary

Reserved-word identifiers are now properly quoted in generated SQL.

Changes in this release

Feature Low

Postgres facade (`slayer pg-serve`) can refresh model and schema edits without client reconnection when a catalog TTL is set.

Postgres facade (`slayer pg-serve`) can refresh model and schema edits without client reconnection when a catalog TTL is set.

Source: llm_adapter@2026-07-17

Confidence: high

Performance Low

Ingesting a datasource is noticeably faster on wide schemas by skipping column sample profiling during ingest.

Ingesting a datasource is noticeably faster on wide schemas by skipping column sample profiling during ingest.

Source: llm_adapter@2026-07-17

Confidence: high

Bugfix Medium

Quotes reserved SQL keywords in generated queries, enabling querying of models/columns/tables named after them.

Quotes reserved SQL keywords in generated queries, enabling querying of models/columns/tables named after them.

Source: llm_adapter@2026-07-17

Confidence: high

Full changelog

SLayer 0.9.9

A small bug-fix and performance release.

Models, columns, and tables named after a SQL reserved word (order, user, group, grant, select, and friends) are now queryable. Previously the generated SQL emitted these names unquoted, so the database rejected the query. SLayer now quotes reserved-word identifiers everywhere it builds SQL - base tables, column qualifiers, join conditions, filters, and cross-model queries - across every supported dialect.

Ingesting a datasource is now noticeably faster on wide schemas. Column sample values are no longer profiled during ingest, where a full-table scan per column could dominate the run on datasources with many tables. Samples are now filled in lazily the first time you inspect a column (or explicitly via slayer search refresh-samples), so ingest stays fast and you still get sample values when you actually look at a column.

If you run the Postgres facade (slayer pg-serve), a connection can now pick up model and schema edits without reconnecting. This is opt-in: pass a catalog refresh window when starting the server, and idle connections re-check storage at most once per window, rebuilding only when something actually changed. The default behavior is unchanged - the catalog stays static for the life of the connection.

Additional technical details

Reserved-word handling has two mechanisms keyed off one curated keyword set: install_reserved_keywords() unions the set into every dialect generator so sqlglot quotes AST-built identifiers at emit time, and prequote_reserved_identifiers() token-quotes reserved words in qualifier and leaf position before SLayer-generated SQL strings are re-parsed (bare reserved words otherwise fail at parse time).

The Postgres facade refresh window is the catalog_ttl_seconds kwarg on serve(); it is throttled by a TTL and gated on the cheap graph_fingerprint staleness token, and never fires mid-transaction.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track SLayer, a semantic layer maintained by your agent

Get notified when new releases ship.

Sign up free

About SLayer, a semantic layer maintained by your agent

All releases →

Related context

Earlier breaking changes

  • v0.7.1 Changes `search()` response to a single flat `results` list capped by `max_results`, removing separate `memories`, `example_queries`, and `entities` buckets.
  • v0.7.1 Changes `search()` to return a single flat `results` list, removing per‑bucket caps.
  • v0.6.3 Datasource names now reject dots, slashes, nulls, empty/whitespace; existing names containing '.' will fail validation on upgrade.
  • v0.6.0 recall_memories surface entirely removed with no deprecation shim.
  • v0.5.1 Two-mode reference semantics enforced: SQL mode accepts arbitrary SQL; DSL mode strictly resolves identifiers.

Beta — feedback welcome: [email protected]