PostgreSQLにおいて大きなテーブルのカラムをNOT NULLにするとき、読み書きがブロックされないか検証するリポジトリ。

ターミナル2つ開いて

# terminal 1
$ docker-compose up
# terminal 2
$ ./loop.sh

を行った上で、さらに別ターミナルで

# terminal 3
$ psql -U postgres -p 5444 -h localhost -f sql/ununique-column.sql
$ psql -U postgres -p 5444 -h localhost -f sql/unique-column.sql

するとSELECTとUPDATEが止まる。

# terminal 3
$ psql -U postgres -p 5444 -h localhost -f sql/ununique-column.sql
$ psql -U postgres -p 5444 -h localhost -f sql/unique-column-with-constraint.sql

なら止まらない。