9.29.0 - #547
Merged
Merged
9.29.0#547
Conversation
Clears 9.28's known upgrade break, makes the SQLite table rebuild safe against a database that has foreign keys, and adds two capabilities. - #542 closes #538. AssertPatchingIsValid no longer refuses a delta that can rebuild in place, which is what made a numeric or decimal SQLite column throw on 9.28 under every AutoCreate except All. CreateOrUpdate permits a rebuild; CreateOnly still refuses. - #539. The SQLite rebuild runs the way SQLite documents it -- enforcement suspended, one transaction, foreign_key_check before the commit -- instead of four autocommitting statements that wedged the database when the table was referenced. Also fixes an AUTOINCREMENT table reissuing a used id, and a view breaking the rename. - #540. Mutually referencing tables can be created from scratch. A migration holds back only the keys whose target it creates later, so a schema that never had the problem generates byte-for-byte identical DDL. - #543 closes #541. FullTextIndexDefinition can index a pre-built tsvector, making setweight() weighting reachable for JasperFx/marten#5298. - #545. SQLite delete-all names the schema instead of letting SQLite resolve by search order, which put temp first. Minor rather than patch: #543 and #540 add API, and #539 and #542 change what an existing migration does. Ships with one known issue, #546: on SQLite, resetting identity against a schema that has no AUTOINCREMENT table fails with "no such table: <schema>.sqlite_sequence". The single-schema form of this predates 9.29. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Version bump to 9.29.0, plus the upgrade guide.
Clears 9.28's known upgrade break, makes the SQLite table rebuild safe against a database
that has foreign keys, and adds two capabilities.
AssertPatchingIsValidno longer refuses a delta that can rebuild in place — closes #538tsvector— closes #541Minor rather than patch. #543 and #540 add API, and #539 and #542 change what an
existing migration does.
Worth knowing before merging
9.28's break is gone. Anyone who stayed on 9.27 because a
numericordecimalSQLite column made the first migration throw can upgrade straight to 9.29 — no pass
through 9.28, no run with
AutoCreate.All.Two of these can turn a quiet migration into a throwing one, both deliberately. A
SQLite rebuild that would leave a dangling reference is now refused and rolled back
rather than committing the damage; and a custom
IMigrationLoggerthat declines torethrow no longer lets a failed rebuild continue past
COMMIT. Both are documented inthe guide.
#539 and #540 did not compile together. Both restructure
SqliteMigrator.executeDelta,and #539 gave
executeCommandafailureIsFatalargument. Git auto-merged them with noconflict and the result failed to build — neither PR's CI could see it, since each
compiles alone. Fixed on #540 before merge; noting it because it is the same shape as
#532+#533.
Known issue
#546: on SQLite, resetting identity
against a schema with no
AUTOINCREMENTtable fails withno such table: <schema>.sqlite_sequence. The single-schema form predates 9.29; themulti-schema form is new with #545 and is the price of that fix being correct. Documented
in the guide with the workaround.
🤖 Generated with Claude Code