✅ Eugene trace report

Script name: examples/W14/good/1.sql

✅ Statement number 1 for 10ms

-- 1.sql
create table authors(
    name text
)

Locks at start

No locks held at the start of this statement.

New locks taken

No new locks taken by this statement.

✅ Eugene trace report

Script name: examples/W14/good/2.sql

✅ Statement number 1 for 10ms

-- 2.sql
create unique index concurrently
    authors_name_key on authors(name)

Locks at start

No locks held at the start of this statement.

New locks taken

No new locks taken by this statement.

✅ Eugene trace report

Script name: examples/W14/good/3.sql

✅ Statement number 1 for 10ms

-- 3.sql
set local lock_timeout = '2s'

Locks at start

No locks held at the start of this statement.

New locks taken

No new locks taken by this statement.

✅ Statement number 2 for 10ms

-- eugene: ignore E2
-- This is a demo of W14, so we can ignore E2 instead of the
-- multi-step migration to make the column NOT NULL safely
alter table authors
    alter column name set not null

Locks at start

No locks held at the start of this statement.

New locks taken

SchemaObjectModeRelkindOIDSafeDuration held (ms)
publicauthorsAccessExclusiveLockTable110

❌ Eugene trace report

Script name: examples/W14/good/4.sql

❌ Statement number 1 for 10ms

-- 4.sql
alter table authors
    add constraint authors_name_pkey
        primary key using index authors_name_key

Locks at start

No locks held at the start of this statement.

New locks taken

SchemaObjectModeRelkindOIDSafeDuration held (ms)
publicauthorsAccessExclusiveLockTable110

Triggered rules

E1: Validating table with a new constraint

A new constraint authors_name_pkey of type PRIMARY KEY was added to the table public.authors as VALID. Constraints that are NOT VALID can be made VALID by ALTER TABLE public.authors VALIDATE CONSTRAINT authors_name_pkey which takes a lesser lock.

E9: Taking dangerous lock without timeout

The statement took AccessExclusiveLock on the Table public.authors without a timeout. It blocks SELECT, FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE, FOR KEY SHARE, UPDATE, DELETE, INSERT, MERGE while waiting to acquire the lock.