elixir-sqlite / ecto_sqlite3

An Ecto SQLite3 adapter.
https://hexdocs.pm/ecto_sqlite3
MIT License
300 stars 45 forks source link

Ecto Migration lock and DDL transaction support #87

Open dbernheisel opened 2 years ago

dbernheisel commented 2 years ago

I noticed that this adapter doesn't seem to support DDL transactions or a migration lock during ecto migrations. Does that support need to be implemented?

I'm probably missing something, but I figure that a DDL transaction can be started with exclusive mode, and perhaps the migration lock is satisfied with a file lock?

https://github.com/elixir-sqlite/ecto_sqlite3/blob/main/lib/ecto/adapters/sqlite3.ex#L218-L224

I'll be happy to contribute if there's a clear way forward.

warmwaffles commented 2 years ago

I don't know if SQLite actually supports DDL transactions, but like you said, we could "fake" it with exclusive. I didn't implement it because ecto sqlite 2 did not implement it.

recursiveGecko commented 1 year ago

I don't know if SQLite actually supports DDL transactions

ALTER TABLE documentation confirms that it does, as well as this simple demo:

image

Having support for DDL transactions would be really appreciated!

warmwaffles commented 1 year ago

I'll take a look into this. I'll check if there is some upstream integration tests that test the DDL transactions and see if we can get that implemented.