Я пытаюсь выяснить, какая ситуация потребует использования флеша.
В качестве контрпримера, эта (тривиальная) ситуация не требует сброса:
defmodule MyRepo.Migrations.TestFlush do
use Ecto.Migration
def change do
create table(:test)
alter table(:test) do
add :a, :integer
end
end
end
Работает как «вперед», так и «назад», используя ecto.migrate
и ecto.rollback
соответственно. Второй макрос «изменить таблицу» зависит от завершения первого макроса «создать таблицу». flush () не требуется для указания какой-либо синхронной зависимости здесь.
Я пытаюсь определить ситуации, когда flush () должен вызываться для успешного выполнения конкретной миграции.
Вот документы для флеша:
https://hexdocs.pm/ecto/Ecto.Migration.html#flush/0
Вот исходный код для сброса:
https://github.com/elixir-ecto/ecto/blob/master/lib/ecto/migration/runner.ex#L96
Обратите внимание, что исходный код для flush переворачивает «команды», но он не определяет, что составляет команду.
спасибо!