Opened 6 years ago

Last modified 6 years ago

#30189 closed Bug

sqlmigrate wraps it's outpout in BEGIN/COMMIT even if the database doesn't support transactional DDL — at Version 1

Reported by: Simon Charette Owned by: nobody
Component: Migrations Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: yes
Needs tests: no Patch needs improvement: no
Easy pickings: yes UI/UX: no

Description (last modified by Simon Charette)

The migration executor only adds the outer BEGIN/COMMIT if the migration is atomic and the schema editor can rollback DDL but the current sqlmigrate logic only takes migration.atomic into consideration.

The issue can be addressed by

  1. Changing sqlmigrate assignment of self.output_transaction to consider connection.features.can_rollback_ddl as well.
  2. Adding a test in tests/migrations/test_commands.py based on an existing test for non-atomic migrations that mocks connection.features.can_rollback_ddl to False instead of overdidding MIGRATION_MODULES to point to a non-atomic migration.

I marked the ticket as easy picking because I included the above guidelines but feel free to uncheck it if you deem it inappropriate.

Change History (1)

comment:1 by Simon Charette, 6 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.
Back to Top