diff --git a/alembic/runtime/migration.py b/alembic/runtime/migration.py index e811a36..6711841 100644 --- a/alembic/runtime/migration.py +++ b/alembic/runtime/migration.py @@ -495,6 +495,8 @@ class HeadMaintainer(object): self._insert_version(insrev) self._update_version(update_from_rev, update_to_rev) else: + import pdb + pdb.set_trace() from_, to_ = step.update_version_num(self.heads) log.debug("update %s to %s", from_, to_) self._update_version(from_, to_) @@ -572,7 +574,10 @@ class RevisionStep(MigrationStep): @property def _has_scalar_down_revision(self): - return len(self.revision._all_down_revisions) == 1 + if self.is_upgrade: + return len(self.revision._all_down_revisions) == 1 + else: + return len(self.revision._versioned_down_revisions) == 1 def should_delete_branch(self, heads): if not self.is_downgrade: @@ -588,6 +593,7 @@ class RevisionStep(MigrationStep): elif len(downrevs) == 1: downrev = self.revision_map.get_revision(downrevs[0]) +# if not downrev.is_branch_point: if not downrev._is_real_branch_point: return False @@ -699,7 +705,7 @@ class RevisionStep(MigrationStep): if not self.is_downgrade: return False - downrevs = self.revision._all_down_revisions + downrevs = self.revision._versioned_down_revisions if self.revision.revision in heads and len(downrevs) > 1: return True @@ -707,6 +713,7 @@ class RevisionStep(MigrationStep): return False def update_version_num(self, heads): + if not self._has_scalar_down_revision: downrev = heads.intersection(self.revision._all_down_revisions) assert len(downrev) == 1, \