Fix 1758 constraint validation #5076
Open
+29
−14
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.
Summary
This PR adds validation to prevent invalid column IDs from reaching create_constraint() which previously caused a 500 Internal Server Error.
Now, when the user sends an invalid column id (ex: column does not exist in table), the RPC returns a 400 Bad Request with IntegrityAPIException, instead of crashing.
What was changed
Valid column IDs are collected using get_column_info_for_table(table_oid)
Before calling create_constraint(), each column is checked
If an invalid ID is found, IntegrityAPIException is raised and request stops early
Prevents database failure and the bug mentioned in reviewer feedback
Files Modified
✔ mathesar/rpc/constraints.py
✔ mathesar/api/exceptions/database_exceptions/base_exceptions.py
(Attach your screenshot here)
Checklist
Changes tested locally
Only required files modified
No breaking behavior for valid constraints
Fix prevents 500 error and returns meaningful response