Skip to content

Conversation

@jayantsing-db
Copy link
Contributor

Implement PEP 249-compliant transaction control with extensions for manual commit/rollback operations. This enables atomic multi-table operations with REPEATABLE_READ isolation semantics.

Core API additions:

  • connection.autocommit property for enabling/disabling auto-commit mode
  • connection.commit() to commit active transactions
  • connection.rollback() to rollback active transactions
  • connection.get_transaction_isolation() returns current isolation level
  • connection.set_transaction_isolation() validates isolation level
  • TransactionError exception for transaction-specific failures

Implementation details:

  • Added autocommit state caching in Session with optional server query
  • Added TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ constant
  • All transaction operations include proper error handling and telemetry
  • Supports fetch_autocommit_from_server connection parameter

Testing:

  • Unit tests covering all transaction methods and error scenarios
  • e2e integration tests validating transaction behavior including multi-table atomicity, sequential transactions, and isolation semantics

Documentation:

  • Comprehensive TRANSACTIONS.md guide with examples and best practices
  • Updated README.md with basic usage and reference to detailed docs

Requires MST-enabled Databricks SQL warehouse and Delta tables with 'delta.feature.catalogOwned-preview' table property.

What type of PR is this?

  • Refactor
  • Feature
  • Bug Fix
  • Other

Description

How is this tested?

  • Unit tests
  • E2E Tests
  • Manually
  • N/A

Related Tickets & Documents

Implement PEP 249-compliant transaction control with extensions for
manual commit/rollback operations. This enables atomic multi-table
operations with REPEATABLE_READ isolation semantics.

Core API additions:
- connection.autocommit property for enabling/disabling auto-commit mode
- connection.commit() to commit active transactions
- connection.rollback() to rollback active transactions
- connection.get_transaction_isolation() returns current isolation level
- connection.set_transaction_isolation() validates isolation level
- TransactionError exception for transaction-specific failures

Implementation details:
- Added autocommit state caching in Session with optional server query
- Added TRANSACTION_ISOLATION_LEVEL_REPEATABLE_READ constant
- All transaction operations include proper error handling and telemetry
- Supports fetch_autocommit_from_server connection parameter

Testing:
- Unit tests covering all transaction methods and error scenarios
- e2e integration tests validating transaction behavior including
  multi-table atomicity, sequential transactions, and isolation semantics

Documentation:
- Comprehensive TRANSACTIONS.md guide with examples and best practices
- Updated README.md with basic usage and reference to detailed docs

Requires MST-enabled Databricks SQL warehouse and Delta tables with
'delta.feature.catalogOwned-preview' table property.
@jayantsing-db
Copy link
Contributor Author

Closing as the dev loop currently requires to push the branch on main remote. Otherwise creds are not picked up for integration tests.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant