Improvement: join primary key to unique constraint #7128
Closed
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.
Checklist:
Important
Please review the checklist below before submitting your pull request.
dev/reformat
(backend) andcd web && npx lint-staged
(frontend) to appease the lint godsDescription
This submission modifies the table definitions by adding the primary key
id
to allUniqueConstraint
constraints, ensuring that table creation succeeds in a distributed database. This is because in a distributed database, the distribution key must be a subset of the unique keys in order to perform deduplication. If there are two unique keys, then the distribution key needs to be selected from the intersection of these two unique keys. This PR addresses the issue discussed in #6720. However, this requires that all future unique declarations must include the primary key to ensure persistent effectiveness.I do understand that this may introduce some burden, but I kindly ask the maintainers to consider this suggestion as it will help Dify support large-scale distributed deployments.
Type of Change
Testing Instructions
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration