Dev tools

PlanetScale releases Lead, a slow but exact Postgres text-search extension for testing Tin-compatible SQL locally

September 19, 2026 at 9:25 PM PT

GitHub page for the planetscale/lead repository

Image: GitHub

Why it mattersA team using Tin in production can now run the same queries in development, CI and staging environments without paying for a Tin cluster in every branch, because Lead evaluates the operator directly in Postgres and returns the same rows.

PlanetScale released Lead on 17 September, a Postgres text-search extension that answers the same TINQL queries as Tin, the paid full-text index it launched last week. Lead is licensed under AGPL-3.0, has reached 131 stars in three days, and is built to run in the places Tin was never meant to run: a developer's laptop, a test suite, a CI job and a staging database.

Lead ships the same access method name (tin), the same operator (==>), the same query language, and the same scoring functions (tin.score, tin.full_score, tin.max_score, tin.score_inspect) as Tin, plus explicit and implicit tin.highlight and tin.highlight_ansi. A query that runs against a Lead index runs unchanged against a Tin index, and PlanetScale calls this the compatibility boundary. Postgres 17 and 18 are the supported build targets, through the cargo-pgrx extension framework at version 0.19.1.

What Lead is not

PlanetScale is direct that Lead is deliberately unsuitable for production. Every index scan returns the whole table's heap pages as candidates, and Postgres rechecks their visible rows for exact TINQL and MVCC behaviour. The index stores no search data at all. That is what makes the results exact, and it is also why the extension gets slower with every row: a lookup that Tin answers from its index has to walk the whole heap in Lead. PlanetScale calls the trade "correctness and a small implementation over production query performance", and puts a plain warning in the README: "It is intentionally unsuitable for production workloads."

What it fixes for a team already on Tin

The gap Tin left when it went generally available on 18 September was a way to run its queries without a Tin cluster in front of every environment. Application SQL that uses ==>, tin.score or tin.highlight has to run somewhere in development, CI and preview environments, and a production database was the only place it ran. Lead closes the loop: the same SELECT ... WHERE column ==> 'query' statement that runs against Tin in production runs against Lead in a Docker Postgres, a laptop, a pull-request preview database, or a GitHub Actions job, and returns the same rows. Score values are ordinal rather than identical, so equality tests on raw scores will not translate; ranking order does.

Lead allocates no extension shared memory, creates no files outside Postgres's normal storage, does not need shared_preload_libraries and loads on demand. Server restarts and crash recovery do not require rebuilding a Lead index because the scans use the recovered heap directly. Index builds evaluate the expressions and predicates for validation, but inserts and VACUUM have nothing to maintain because there is no index data.

Correctness over speed, for a test environment

For a team writing tests against a search feature, exactness at the row level matters more than speed. Lead makes that trade on purpose: the same rows come back in the same order, the query language is identical, and the tests that pass against Lead in CI will pass against Tin in production. The AGPL-3.0 licence and the extension's use of a private PlanetScale test suite for its own regression runs point in the same direction: Lead is built to match Tin, not to replace it.

Source

Source: GitHub

This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.

More from AI News

PlanetScale released TIN, a new Postgres full-text search extension, and Lead, an open dev-only companion

PlanetScale published TIN on 16 September as a general-availability full-text search extension for Postgres and its Neki platform, and released Lead as an AGPL-3.0 companion that lets developers exercise the same SQL locally without paying for the managed engine.

Source: Hacker NewsDev tools

pg-jev puts plain-language conditions inside a Postgres WHERE clause and reports the cost per row

pg-jev is an open-source PostgreSQL extension that lets a SELECT statement filter, rank or classify rows with a plain-language condition, judged by TypeSafe's Jev model with calibrated probabilities and no embeddings.

Source: GitHubDev tools

MCPJam launches a paid testing and evals platform for MCP servers with Swarms, User Testing and CI/CD

MCPJam went live with a paid platform on 17 September that tests, evaluates and runs CI on MCP servers before they are released, adding Swarms, User Testing, Evals and CI/CD on top of its open-source Inspector, which has 2,207 stars on GitHub.

Source: Product HuntDev tools