fix: resolve nested Relation() with circular struct composition#1360
Open
joaquinhuigomez wants to merge 2 commits into
Open
fix: resolve nested Relation() with circular struct composition#1360joaquinhuigomez wants to merge 2 commits into
joaquinhuigomez wants to merge 2 commits into
Conversation
Aoang
approved these changes
Apr 2, 2026
Collaborator
Aoang
left a comment
There was a problem hiding this comment.
Thank you for this PR! The fix looks solid.
bevzzz
requested changes
Apr 7, 2026
Author
|
@bevzzz thanks for the review. Pushed:
|
Collaborator
|
great @joaquinhuigomez, thank you! |
- Drop the issue1243- prefix from struct names in issue1243_test.go since the file name and docstring already provide context. - Move the initStarted guard into Table.init() so callers no longer have to set or check it. - Refactor InProgress to delegate to Placeholder + init, removing the duplicated lookup and insert logic. TestNestedRelationWithSharedComposition still passes.
84830a8 to
e7a7efe
Compare
bevzzz
approved these changes
May 8, 2026
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.
When models use shared embedded relation structs that form circular dependencies (e.g. Business -> LeadRelation -> Lead -> BusinessRelation -> Business),
LookupFieldfails for nested columns likelead__business__idbecauseStructMapentries are missing due to initialization order.The fix splits struct field registration into a
Placeholderstep (registers the StructMap entry with the table pointer) before triggering recursiveInProgressinitialization. This ensures StructMap entries are visible to types in the same circular dependency chain during their ownprocessFields.Fixes #1243