Re: Non blocking type change for primary column

From: Guillaume Lelarge <guillaume(at)lelarge(dot)info>
To: Torge Kummerow <tk(at)panaccess(dot)com>
Cc: pgsql-sql(at)lists(dot)postgresql(dot)org
Subject: Re: Non blocking type change for primary column
Date: 2021-01-15 09:42:51
Message-ID: CAECtzeU=9GBTbvo=Q_=LOwUmSbimoVZMj4TiEc=Sz+vHD0UGMg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi,

Le jeu. 14 janv. 2021 à 17:27, Torge Kummerow <tk(at)panaccess(dot)com> a écrit :

> 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?
>
>
Nope, the table needs to be re-written to change the 4-byte column into an
8-byte column. And I don't expect to see this anytime soon.

--
Guillaume.

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Mohamed Wael Khobalatte 2021-01-16 05:18:39 Re: Non blocking type change for primary column
Previous Message Torge Kummerow 2021-01-14 16:26:55 Non blocking type change for primary column