Fix deteministic fetch when table has a composite primary key #936
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.
Even though Rails does not support tables with primary keys, it still allows
those tables to be defined without any problems.
The SQL Server adapter will always try to retrieve records in a deterministic
way but it currently fails if the table has a composite primary key, which
shouldn't happen.
This PR fixes how the adapter determines which column (generally the PK) is
used as the default order when multiple primary keys are detected.
It first checks if one of the primary keys is also an identity column. If
there's an identity column, it will choose it as the "main primary key",
otherwise it will just fallback to the first of the primary keys.
Fix #719.