{"slug": "a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev", "title": "A MySQL plugin that filters rows by meaning (built on TypeSafe Jev)", "summary": "A preview-release native MySQL plugin called mysql-ailike lets SQL queries filter rows and compare text columns using natural-language conditions via the AILIKE operator, powered by TypeSafe Jev and requiring a TypeSafe API key. AILIKE returns 1 for a match and 0 otherwise, returns NULL for any NULL argument, and sends evaluated values and prompts to TypeSafe, with each uncached evaluation making an API request. The plugin is licensed GPL-2.0-only and ships with a Docker demo and a join demo dataset of three supplier products and three catalog products.", "body_md": "A native MySQL plugin for filtering rows and comparing text columns with\nnatural-language conditions, powered by [TypeSafe Jev](https://docs.typesafe.ai).\n\n[Install and check compatibility](https://github.com/maayanlevy/mysql-ailike/blob/main/docs/install.md) · [Try the Docker demo](https://github.com/maayanlevy/mysql-ailike/blob/main/docs/sample-data.md#run-the-local-demo)\n\nPreview release. Requires a TypeSafe API key. Note: evaluated values and prompts are sent to TypeSafe.\n\nFind columns based on NL meaning:\n\n```\nSELECT film_id, title, description\nFROM sakila.film\nWHERE film_id BETWEEN 1 AND 8\n  AND description AILIKE 'The story takes place somewhere in Asia';\n```\n\n| Syntax | Question | \n|---|---|\n| `column AILIKE 'condition'` | Does this value satisfy the condition? | \n| `ailike(value, prompt)` | Does this value satisfy the condition? | \n| `ailike(left, right, prompt)` | Do these values satisfy the relationship? | \n\nAILIKE returns `1` for a match and `0` otherwise. Any `NULL` argument returns\n`NULL`. Arguments are string. use `CAST(... AS CHAR)` for other types.\n\nNarrow candidates with ordinary SQL conditions: each uncached evaluation makes an API request.\n\nThe [demo dataset](https://github.com/maayanlevy/mysql-ailike/blob/main/sql/join-demo.sql) contains three supplier products and three\ncatalog products. With AILIKE installed, open `mysql -u root -p` from the repository\nroot and load it into a fresh database:\n\n```\nCREATE DATABASE ailike_join_demo;\nUSE ailike_join_demo;\nSOURCE sql/join-demo.sql;\n```\n\nPass both columns and describe the relationship:\n\n```\nSELECT a.id AS supplier_id, a.description AS supplier,\n       b.id AS catalog_id, b.description AS catalog\nFROM supplier_products AS a\nJOIN catalog_products AS b\n  ON a.category_id = b.category_id\n AND ailike(\n   a.description,\n   b.description,\n   'Left and right describe the same kind of product, '\n   'with matching material and key features. Wording may differ.'\n )\nORDER BY a.id, b.id;\n```\n\nExpected matches: `(1, 1)` for the steel bottle and vacuum flask, and `(3, 3)` for\nthe headphones. The glass carafe and plastic bottle have no matching pair.\n\n## Format-independent date/period match\n\n```\nSELECT rental_id, rental_date\nFROM sakila.rental\nWHERE customer_id = 1\n  AND ailike(CAST(rental_date AS CHAR),\n             'In July 2005')\nORDER BY rental_id;\n```\n\nAILIKE returns a model judgment. Use SQL date functions for exact comparisons.\n\n[Contributing](https://github.com/maayanlevy/mysql-ailike/blob/main/CONTRIBUTING.md) · [Report a vulnerability](https://github.com/maayanlevy/mysql-ailike/blob/main/SECURITY.md) ·\n[AI coding agent skill](https://github.com/maayanlevy/mysql-ailike/blob/main/skills/mysql-ailike/SKILL.md) · [GPL-2.0-only](https://github.com/maayanlevy/mysql-ailike/blob/main/LICENSE)", "url": "https://wpnews.pro/news/a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev", "canonical_source": "https://github.com/maayanlevy/mysql-ailike", "published_at": "2026-09-20 11:04:51+00:00", "updated_at": "2026-09-20 11:52:58.614690+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "natural-language-processing", "ai-products"], "entities": ["MySQL", "TypeSafe Jev", "TypeSafe", "mysql-ailike", "AILIKE", "Docker", "GPL-2.0-only"], "alternates": {"html": "https://wpnews.pro/news/a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev", "markdown": "https://wpnews.pro/news/a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev.md", "text": "https://wpnews.pro/news/a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev.txt", "jsonld": "https://wpnews.pro/news/a-mysql-plugin-that-filters-rows-by-meaning-built-on-typesafe-jev.jsonld"}}