mirror of
https://github.com/xataio/pgroll.git
synced 2024-08-15 16:50:22 +03:00
PostgreSQL zero-downtime migrations made easy
Implement the **drop column** migration operation. A migration to drop a column looks like this: ```json { "name": "09_drop_column", "operations": [ { "drop_column": { "table": "fruits", "column": "price", "down": "0" } } ] } ``` The migration takes the name of the table and column that should be dropped along with (optionally) some `down` SQL to run to populate the field in the underlying table when insertions are done via the new schema version while the migration is in progress. * On `Start`, the relevant view in the new version schema is created without the dropped column. The column is not deleted from the underlying table. * If `down` SQL is specified, a trigger is created on the underlying table to populate the column to be removed when inserts are made from the new schema version. * On `Rollback` any triggers on the underlying table are removed. * On `Complete` the old version of the schema is removed and the column is removed from the underlying table. Any triggers are also removed. |
||
---|---|---|
.github | ||
.vscode | ||
cmd | ||
examples | ||
pkg | ||
.golangci.yml | ||
docker-compose.yml | ||
go.mod | ||
go.sum | ||
main.go | ||
README.md |
pg-roll
⚠️ Under development ⚠️
PostgreSQL zero-downtime migrations made easy.
Getting started (development)
-
Bring a development PostgreSQL up:
docker compose up
-
Initialize pg-roll (first time only):
go run . init
-
Start a migration:
go run . start examples/01_create_tables.json
-
Inspect the results:
psql postgres://localhost -U postgres
\d+ public.* \d+ 01_create_tables.*
-
(Optional) Rollback the migration (undo):
go run . rollback
-
Complete the migration:
go run . complete