Hi,

Your approach to migrating the ID column from int4 to int8 with minimal
downtime is generally sound but in my option, consider the following also:


   - Consider using PostgreSQL's CONCURRENTLY option when creating the
   unique index to avoid locking the entire table
   - Make sure to first alter the new column to be non-nullable if it’s not
   already


On Fri, 27 Sept 2024 at 06:57, Aditya Singh <aditya.si...@lji.io> wrote:

> I am just contacting you to talk about a current issue with our database.
> We have run out of a positive sequence in one of our tables and are now
> operating with negative sequences. To address this, we plan to migrate from
> the int4 ID column to an int8 ID column.
>
> The plan involves renaming the int8 column to the id column and setting
> it as the primary key. However, this process will require downtime, which
> may be substantial in a production environment. Fortunately, we have noted
> that other tables do not use the id column as a foreign key, which may
> help mitigate some concerns.
> Our Approach:
>
>    1.
>
>    *Create a Unique Index*: We will first create a unique index on the
>    new ID column before renaming it and altering it to be non-nullable. This
>    step will necessitate scanning the entire table to verify uniqueness.
>    2.
>
>    *Add Primary Key*: After ensuring the uniqueness, we will add the ID
>    column as the primary key. By doing this, we hope to bypass the additional
>    scanning for uniqueness and nullability, as the column will already be set
>    as not nullable and will have the uniqueness constraint from the unique
>    index.
>
> We want to confirm if this approach will work as expected. If we should be
> aware of any potential pitfalls or considerations, could you please provide
> insights or point us toward relevant documentation?
>
> Thank you so much for your help, and I look forward to your guidance.
>
> Best regards,
>
> Aditya Narayan Singh
> Loyalty Juggernaut Inc.
>
> ------------------------------
> *Confidentiality Warning:*
> This message and any attachments are intended only for the use of the
> intended recipient(s), are confidential, and may be privileged. If you are
> not the intended recipient, you are hereby notified that any disclosure,
> copying, distribution, or other use of this message and any attachments is
> strictly prohibited. If received in error, please notify the sender
> immediately and permanently delete it.
>

Reply via email to