Non blocking type change for primary column - Mailing list pgsql-sql

From Torge Kummerow
Subject Non blocking type change for primary column
Date
Msg-id 9c0ebcd1-92f3-3b51-0a3d-68195f6aec21@panaccess.com
Whole thread Raw
Responses Re: Non blocking type change for primary column  (Guillaume Lelarge <guillaume@lelarge.info>)
List pgsql-sql
Hi,

I wonder if there is a feature planned (or already available in 11+)
that allows one to change the column type of a table without making it
block until finished.

As seemingly many others, we used serial instead of bigserial in our
tables and some will at a not too distant future hit their limit.

I am currently evaluating our options. One, that seems possible would be

1. adding a new nullable column of type bigint.
2. copying the primary key into this field in small batches
3. Once done. rename the primary column and new column, to swap them
4. attach the sequence to the new column and deattach it from the old column
5. Make new column NON NULL (Not sure if this will block)
6. Remove primary key from old column, make new column to be the primary
key (I fear this will block to create the index, but I guess not nearly
as long as ALTER COLUMN type)
7. Delete old column.


This could be prevented, if this would be done in a non blocking way by
the database system itself, so I hope this is already implemented or at
least on the roadmap.

Any thoughts?

Greetings,
    Torge.




pgsql-sql by date:

Previous
From: Philip Semanchuk
Date:
Subject: Re: how to make query
Next
From: Guillaume Lelarge
Date:
Subject: Re: Non blocking type change for primary column