PostgreSQL zero-downtime migrations made easy
Go to file
Andrew Farries 7e209da2ea
Pin Go to 1.20.5 to work around testcontainers/Go breakage (#40)
Pin Go to version `1.20.5` to fix
[testcontainer](https://golang.testcontainers.org/) tests.

Go `1.20.6` introduced changes in `Host` header parsing
([issue](https://github.com/golang/go/issues/61431)) which breaks
`testcontainers-go`
([issue](https://github.com/testcontainers/testcontainers-go/issues/1359)).

Our tests started failing consistently yesterday due to this issue
([example
run](https://github.com/xataio/pg-roll/actions/runs/5612153506)).

The suggested workaround until this is resolved upstream is to pin to
`1.20.5`.
2023-07-21 07:44:35 +01:00
.github Pin Go to 1.20.5 to work around testcontainers/Go breakage (#40) 2023-07-21 07:44:35 +01:00
.vscode Add linter to tests (#9) 2023-06-27 16:33:50 +01:00
cmd Add a --complete flag to to the start command (#33) 2023-07-18 09:08:49 +01:00
examples Support up SQL on add column operations (#34) 2023-07-20 06:37:03 +01:00
pkg Backfill existing rows with up SQL on add column migration start (#36) 2023-07-20 06:54:15 +01:00
.golangci.yml Add linter to tests (#9) 2023-06-27 16:33:50 +01:00
docker-compose.yml Initial commit 2023-06-22 17:30:40 +02:00
go.mod Rename table op (#23) 2023-07-11 08:01:05 +00:00
go.sum Rename table op (#23) 2023-07-11 08:01:05 +00:00
main.go Add linter to tests (#9) 2023-06-27 16:33:50 +01:00
README.md Add migrations state handling (#7) 2023-06-28 11:10:03 +02:00

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