Rework sqlite fk pragma handling #2365
Open
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.
PR reworks how we handle the foreign key pragma in sqlite, so that we turn on the pragma before doing any plan actions, and turn it back on after all actions have run (vs doing it within an action sequence, potentially repeatedly). This is accomplished by introducing a new
pre
andpost
hook to theexecuteActions
flow that the sqlite adapter specifically takes advantage of. This should make it possible to potentially re-order and rework how certain plans are generated for sqlite, with an immediate goal of allowing a user to both change a primary key and set identity on it within the same alter chain.The only downside I could think of is that this may make us do the FK validation step more often as some commands could avoid it, but it's quick enough that I don't think there's real harm in it.