#34510: sqlmigrate does not follows replaces in squashed migrations
-------------------------------------+-------------------------------------
               Reporter:             |          Owner:  nobody
  NeodymiumFerBore                   |
                   Type:  Bug        |         Status:  new
              Component:  Core       |        Version:  4.2
  (Management commands)              |       Keywords:  squashed migration
               Severity:  Normal     |  replaces sqlmigrate command core
           Triage Stage:             |  management
  Unreviewed                         |      Has patch:  1
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 The sqlmigrate command does not follow `replaces` in squashed migration,
 with original (squashed) migration files deleted. This ticket is roughly
 the same than #32205, #33583 and #31318. In #31318, the issue is marked as
 solved with commit
 
[https://github.com/django/django/commit/d88365708c554efe3c786c3be6da1d9de916360f
 d883657]. Since then, `MigrationLoader` accepts the argument
 `replace_migrations`. However,
 
[https://github.com/django/django/blob/d88365708c554efe3c786c3be6da1d9de916360f/django/core/management/commands/sqlmigrate.py#L37
 the loader instance here] has this option to `False`. I don't see a
 command option to set it to `True`.

 I tried to set it to `True` manually in 4.1.7, and it successfully showed
 SQL queries involved in the migration I wanted to inspect. `sqlmigrate.py`
 has not changed between 4.1.7 and 4.2, so I guess it also affects it.

 
[https://github.com/django/django/blob/4.1.7/django/core/management/commands/sqlmigrate.py#L46
 Link: MigrationLoader instance in 4.1.7 L46]
 
[https://github.com/django/django/blob/4.2/django/core/management/commands/sqlmigrate.py#L46
 Link: MigrationLoader instance in 4.2 L46]
 
[https://github.com/django/django/blob/main/django/core/management/commands/sqlmigrate.py#L46
 Link: MigrationLoader instance in main L46]

 I see that it always has been like this since commit `d883657`. Now maybe
 I don't understand why it works like so. Could you explain why it is set
 to `False` with no option to set it to `True`? Is it unreliable?

 Thank you.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34510>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/01070187ab915130-64b13fb1-0bf3-477c-9fb0-bb993a55ac86-000000%40eu-central-1.amazonses.com.

Reply via email to