fix(redshift-mcp-server): Handle transaction abort errors properly #1495
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.
Fixes transaction abort issue where failed queries break session
Fixes
Summary
Changes
Fixed critical transaction abort error handling in the Redshift MCP server. Modified _execute_protected_statement function to properly execute ROLLBACK instead of END when a SQL query fails within a transaction block, preventing session corruption and subsequent query failures.
User experience
Before: When a SQL query failed, the database session would enter an aborted state, causing all subsequent queries in the same session to fail with "ERROR: current transaction is aborted, commands ignored until end of transaction block", the agent would continue to retry using the same session and would ultimately fail.
After: When a SQL query fails, the transaction is properly cleaned up with ROLLBACK, allowing the session to remain functional for subsequent queries and retries. Agent can continue using the MCP server normally after query failures, with reframed queries.
Checklist
If your change doesn't seem to apply, please leave them unchecked.
Is this a breaking change? N
RFC issue number: N/A
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the project license.