pglockanalyze 0.0.4

See what PostgreSQL locks your migrations acquired
Documentation
- initial_schema: |-
    CREATE TABLE users (
      id serial PRIMARY KEY,
      foo text
    );
  statements: |-
    ALTER TABLE users ADD COLUMN email text;
  expected:
    - sql: ALTER TABLE users ADD COLUMN email TEXT
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            alias: users

- initial_schema: |-
    CREATE TABLE products (
      id serial PRIMARY KEY,
      price numeric
    );
  statements: |-
    ALTER TABLE products RENAME COLUMN price TO cost;
  expected:
    - sql: ALTER TABLE products RENAME COLUMN price TO cost
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            alias: products

- initial_schema: |-
    CREATE TABLE orders (
      id serial PRIMARY KEY
    );
  statements: |-
    ALTER TABLE orders RENAME TO orders_archive;
  expected:
    - sql: ALTER TABLE orders RENAME TO orders_archive
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            # since the locks observer is a different pid, it cannot see the
            # rename (otherwise this would be orders_archive)
            alias: orders

- initial_schema: |-
    CREATE TABLE customers (
      id    serial PRIMARY KEY,
      email text
    );
  statements: |-
    ALTER TABLE customers ALTER COLUMN email SET NOT NULL;
    ALTER TABLE customers RENAME COLUMN email TO contact_email;
  expected:
    - sql: ALTER TABLE customers ALTER COLUMN email SET NOT NULL
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            alias: customers
    - sql: ALTER TABLE customers RENAME COLUMN email TO contact_email
      location:
        start_line: 2
        end_line: 2
      locks_acquired: []

- initial_schema: |-
    CREATE TABLE logs (
      id      serial PRIMARY KEY,
      message text,
      details text
    );
  statements: |-
    ALTER TABLE logs DROP COLUMN details;
  expected:
    - sql: ALTER TABLE logs DROP COLUMN details
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            alias: logs

- initial_schema: |-
    CREATE TABLE audits (
      id     serial PRIMARY KEY,
      amount numeric
    );
  statements: |-
    ALTER TABLE audits ADD CHECK (amount >= 0);
    ALTER TABLE audits RENAME TO audit_logs;
  expected:
    - sql: ALTER TABLE audits ADD CHECK (amount >= 0)
      location:
        start_line: 1
        end_line: 1
      locks_acquired:
        - database:
            name: pglatests
          mode: AccessExclusive
          lock_target: !relation
            alias: audits
    - sql: ALTER TABLE audits RENAME TO audit_logs
      location:
        start_line: 2
        end_line: 2
      locks_acquired: []