docs(eql): update the reference to the EQL 3.0.0 shapes#67
Open
coderdan wants to merge 2 commits into
Open
Conversation
Rewrites the EQL reference against the type and term shapes landing in EQL 3.0.0 (encrypt-query-language #391 and #389), verified against the generated schema and the domain SQL rather than against the PR bodies. Public domain types are now version-prefixed: `public.text_ord` becomes `public.eql_v3_text_ord`. 174 names across 15 pages. Ordering now defaults to CLLW OPE: - `_ord` carries `op` and extracts with `eql_v3.ord_term` - `_ord_ope` is its byte-identical, explicitly pinned twin - `_ord_ore` carries `ob` and extracts with `eql_v3.ord_term_ore` - `text_search` is `[hm, op, bf]`; the new `text_search_ore` is `[hm, ob, bf]` - `eql_v3.ord_ope_term` is gone; `eql_v3.ord_term` took its name OPE terms sort under `bytea_ops`, so ordering no longer needs a custom operator class. Where the installer runs as a non-superuser it cannot create one, and it disables the ORE-backed domains rather than let them install half-working. Documented on every page that offers the choice. Also corrects an equality claim the old pages had wrong in both directions. Equality on the non-text `_ord` variants compares the ordering term (those payloads carry no `hm`), but every text variant carries `hm` and compares that, because ordering over text is not equality-lossless. Confirmed in the domain SQL: `eq(bigint_ord)` calls `ord_term`, `eq(text_ord)` calls `eq_term`. The drift check stays red until EQL 3.0.0 publishes, because the pinned manifest is alpha.4, which predates both PRs. Every symbol this commit introduces was cross-checked against the SQL on the release branch.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Bumps EQL_RELEASE_TAG from eql-3.0.0-alpha.4. The drift check now passes against the real manifest, which confirms every domain and function this branch renamed. Two follow-ons the bump exposed: - The 40 scalar query-operand domains (`eql_v3.query_text_eq` and its siblings) are created inside a `DO ... EXECUTE` block, which the manifest's catalog generator does not walk, so the drift check rejected a correct reference. `eql_v3.query_jsonb`, created at the top level, is present. Added a narrow, documented allowlist rather than weakening the check; verified against the release SQL. - core-concepts named `public.text` / `public.json` / `public.integer` as the Postgres built-ins the `eql_v3_` prefix avoids shadowing. The drift check reads any `public.<name>` as an EQL domain reference. Say the same thing without schema-qualifying the built-ins.
Contributor
Author
|
EQL 3.0.0 is released, so the blocker is gone. Bumped Two things the bump exposed, both fixed here:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updates the EQL reference to the type and term shapes landing in EQL 3.0.0, from
encrypt-query-language#391 (version-prefixed public domains) and #389 (OPE as the default ordering mechanism).Verified against the generated schema in
crates/eql-bindings/schema/v3and the domain SQL insrc/v3, not against the PR descriptions. That matters here: #389's own body saystext_searchkeeps[hm, ob, bf], but the schema on its branch says[hm, op, bf].What changed
Version-prefixed domains.
public.text_ordis nowpublic.eql_v3_text_ord. 174 names across 15 pages. Query-operand domains already live in the versionedeql_v3schema, so they stay unprefixed.Ordering defaults to CLLW OPE.
_ordopeql_v3.ord_term_ord_opeopeql_v3.ord_term(byte-identical twin of_ord)_ord_oreobeql_v3.ord_term_oretext_searchhm,op,bfeq_term/ord_term/match_termtext_search_orehm,ob,bfeq_term/ord_term_ore/match_termeql_v3.ord_ope_termis gone;eql_v3.ord_termtook its name.ORE needs superuser. An OPE term is a
byteadomain, so an index oneql_v3.ord_term(col)binds the defaultbytea_ops. Block-ORE needs a hand-written operator class, andCREATE OPERATOR CLASSneeds superuser. Where the installer runs as a non-superuser (cloud Supabase, most managed Postgres) it cannot create the class, so it disables every ORE-backed domain: the types exist, but aCHECKrejects the first value written withfeature_not_supported. The pages previously said the domains were "not installed at all", which was wrong. Every page offering the choice now carries this callout.An equality claim that was wrong in both directions. The old pages said equality on any
_ordvariant compares the ORE term, so_ordpayloads carry nohm. Half right:eq(bigint_ord)isord_term(a) = ord_term(b). Nohm. Ordering over the numeric scalars is equality-lossless.eq(text_ord)iseq_term(a) = eq_term(b). Text carrieshmon every orderable variant, because OPE over text is not equality-lossless.Corrected in
core-concepts,filtering,joins,grouping-and-aggregates,indexes, and the three type pages.Also: payload examples now show
opas a single hex string rather than a block array; the<T>placeholder meantbiginton one page andeql_v3_biginton another, now consistently the former;json.mdxno longer date-stamps theoctooprename against an alpha.Blocked on the EQL 3.0.0 release
bun run buildruns the drift check, which validates every schema-qualified symbol against the pinned manifest. The pin iseql-3.0.0-alpha.4, which predates both PRs: it still has unprefixed domains (public.bigint) andord_ope_term. So the check reports 53 unknown symbols and the build fails.All 53 were cross-checked against the SQL on the release branch and every one exists:
To unblock: once EQL 3.0.0 publishes, bump
EQL_RELEASE_TAGinscripts/generate-eql-docs.tsfromeql-3.0.0-alpha.4toeql-3.0.0. That is the only change needed; CI should then go green.Checks
validate-content: passvalidate-links: passvalidate-mermaid: passlint: fails on pre-existingnoNonNullAssertioninscripts/generate-cli-docs.ts, unrelated and present on the base commitgenerate-docs:eql-api: fails as described aboveOne drive-by fix to the drift checker: it was extracting
public.eql_v3_as a symbol from thepublic.eql_v3_<T>prose placeholder. It now skips a match followed by<.