The tables, made by the migrations not yet recorded in effecttea_migrations. Every entity of every program sits in
them: the name of the program and the id are the entity's address (decision 0022). Every table, index, trigger and
function the runtime makes is named with effecttea_, so that the tables of an application in the same database are
never taken for its own. The first migration creates each object without IF NOT EXISTS, so that a launch on a
database that already holds an object under one of those names dies, and leaves none of its own (decision 0218).
Migrator runs the pending migrations in one transaction, so that two
launches on one database run each migration once (decision 0216). On SQLite the transaction takes the file's write
lock as it begins, which the driver does by default and this asks for by name, since a transaction begun without
it dies while another runs; on PostgreSQL Migrator locks its table.
Dies within a transaction of its client, and makes nothing. Within one, the migrations' transaction would be a
savepoint, which begins after the caller's snapshot and does not take SQLite's write lock (decision 0279).
The tables, made by the migrations not yet recorded in
effecttea_migrations. Every entity of every program sits in them: the name of the program and the id are the entity's address (decision 0022). Every table, index, trigger and function the runtime makes is named witheffecttea_, so that the tables of an application in the same database are never taken for its own. The first migration creates each object withoutIF NOT EXISTS, so that a launch on a database that already holds an object under one of those names dies, and leaves none of its own (decision 0218).Migratorruns the pending migrations in one transaction, so that two launches on one database run each migration once (decision 0216). On SQLite the transaction takes the file's write lock as it begins, which the driver does by default and this asks for by name, since a transaction begun without it dies while another runs; on PostgreSQLMigratorlocks its table.Dies within a transaction of its client, and makes nothing. Within one, the migrations' transaction would be a savepoint, which begins after the caller's snapshot and does not take SQLite's write lock (decision 0279).