Repository navigation
ci: run the soundness oracle on postgres 18 and mysql 8.4 - #38
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
There was a problem hiding this comment.
ℹ️ No blocking issues. One minor suggestion inline.
Reviewed changes
I reviewed the new oracle CI job and the script that builds the five Postgres JSON Schema validators the json_schema_* cases need.
oraclejob intest.yml: MySQL 8.4 runs as a service. Postgres 18 comes from pgdg and runs on the runner (initdb --locale=C,pg_ctlon 55432). The oracle runs with--strict-coverageoveroracle/cases.release.ymlcallstest.ymlthroughworkflow_call, so releases also pass through this gate.json-schema-validators.sh: builds pg_jsonschema v0.3.4 with cargo-pgrx 0.16.1 and pg-jsonschema-boon v0.1.10 with 0.18.1 (both match the upstreamCargo.lock), plus three PGXS extensions at pinned SHAs. All are staged by install path into one directory. I confirmed thatcargo pgrx package --out-dircreates the directory but never clears it in either pgrx version, so the two pgrx packages and themake install DESTDIR=trees can share the stage.- Validator cache: restore and save are separate, so the quarter hour build is kept even when the oracle fails afterwards.
The oracle check run on e1b10b0 was still in progress when this review was written.
claude-opus-5-5 | 𝕏
Contributor
There was a problem hiding this comment.
✅ No new issues found. The cache key suggestion is applied cleanly.
Reviewed changes
I reviewed the one commit since the prior review, which changes the validator cache key.
- Cache key from the installed server:
Install Postgres 18now hasid: pgand outputskey=$ImageOS-pg<release>.<release>comes frompg_config --version(e.g.18.1), and the restore key uses that output in place ofpg18. A new 18.x minor release or a different runner OS (ubuntu22→ubuntu24) now misses the cache and rebuilds the validators once. Thetest -nguards fail the step under the defaultbash -eshell if either value is empty, so the key can't silently fall back to a stale prefix. - Comment refreshed: the build time is now given as "several minutes", and the comment explains why the key names the Postgres release.
claude-opus-5-5 | 𝕏
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.

The soundness oracle (
oracle/) is the check that catches an unsound inference change: it analyzes every statement inoracle/caseswith the engine's sources, runs it on live servers over seeded edge values, and fails a case when a returned value contradicts the inferred type or row count. Until now it ran only by hand. This adds it totest.ymlas anoraclejob, beside theenginejob, so every pull request and every release runs it.json_schema_*cases call five JSON Schema validator extensions built into the server. The cluster is initialized with--locale=C, the locale the cases' expected output was recorded under..github/scripts/json-schema-validators.sh, each at the commit the cases were measured at, and staged by install path. The build takes about a quarter of an hour, so the staged files are cached under a key on the script, and saved right after they are built rather than only when the job passes.--strict-coverage, so a statement that fails or times out on every run fails its case unless the case'sunchecked.txtlists it.