sqlx-cli: implement sqlx revalidate command #4076
Draft
+126
−5
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.
Does your PR solve an issue?
fixes #4063.
This is useful for having a two-phase validation of the queries in the
.sqlx/offline cache directory.cargo buildwill check that they are still compatible with the code, while the newsqlx revalidatecommand will check them against the database. This allows the checks to run independently in a CI (and fail early, if a database migration changes things).Furthermore, this allows the CI to test if a given PR has breaking changes in relation to the destination branch, so its possible to validate that an old instance can still operate on the database after a migration without re-running
cargo checkor similar for the target branch.Testing
I want to add an integration test for this feature, however that would entail to run
cargo checkon a project using query macros. This is not present till now forsqlx-cli. I can add it, but I would like to discuss this first.Other changes
For now I have simply copied the struct for
DynQueryDatatosqlx-cli. If this is likely to change it could be migrated fromsqlx-macros-coretosql-core, however only with some other refactoring (e.g. the struct methods are also tied to macro-core specific types).Is this a breaking change?
No. This just adds a new sub-command for sqlx-cli.