Re: Changes in serial / sequence introduced in Postgresql 10

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Pantelis Theodosiou <ypercube(at)gmail(dot)com>
Cc: pgsql-docs(at)postgresql(dot)org
Subject: Re: Changes in serial / sequence introduced in Postgresql 10
Date: 2018-06-19 18:49:08
Message-ID: 20180619184908.GF3637@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-docs

On Sat, May 19, 2018 at 12:05:26PM +0100, Pantelis Theodosiou wrote:
> I guess no one noticed this (for almost a year!) but I keep wondering whether
> it would be worth adding a note in the docs about the different behaviour or
> perhaps it's a bug that should be addressed.
>
> Should I post it to the bugs list?

I don't think we realize there was a behavioral change here. I think we
were just trying to fix the case where the sequence maximum didn't match
the serial maximum. I am not sure if it is worth documenting it at this
point though.

---------------------------------------------------------------------------

>
> Best regards,
>
> Pantelis Theodosiou
>
> On Fri, Oct 6, 2017 at 2:08 PM, Pantelis Theodosiou <ypercube(at)gmail(dot)com> wrote:
>
> I noticed that for a column is defined as serial, there are differences in
> the created sequence (type and maximum value) in Postgres 10.
>
> In 9.6, the sequence create would have a maximum value of 2**64-1. In 10,
> it's created with 2**32-1 and I couldn't find this change in the release
> notes or in the docs.
>
>
> -- Postgres 9.6 --
>
> x=# select version() ;
>                                                     
> version                                                    
> ------------------------------------------------------------
> -----------------------------------------------------
>  PostgreSQL 9.6.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu
> 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit
> (1 row)
>
> x=# create table test (id serial primary key) ;
> CREATE TABLE
> x=# \d test_id_seq
>                         Sequence "public.test_id_seq"
>   Type  | Start | Minimum |       Maximum       | Increment | Cycles? |
> Cache
> --------+-------+---------+---------------------+-----------
> +---------+-------
>  bigint |     1 |       1 | 9223372036854775807 |         1 | no      |    
> 1
> Owned by: public.test.id
>
>
> -- Postgres 10 --
>
> x=# select version() ;
>                                                    
> version                                                    
> ------------------------------------------------------------
> ----------------------------------------------------
>  PostgreSQL 10.0 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu
> 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit
> (1 row)
>
> x=# create table test (id serial primary key) ;
> CREATE TABLE
> x=# \d test_id_seq
>                     Sequence "public.test_id_seq"
>   Type   | Start | Minimum |  Maximum   | Increment | Cycles? | Cache
> ---------+-------+---------+------------+-----------+---------+-------
>  integer |     1 |       1 | 2147483647 |         1 | no      |     1
> Owned by: public.test.id
>
>
> I suppose it's not a very common use case but I noticed because I had some
> tables that were created with serial columns, then later converted to
> bigint with:
>
>     alter table test alter column id type bigint using id::bigint ;
>
> without need to modify the sequence.
>
> In 10, the same operation would modify only the column that later cause an
> error when the maximum value is reached.
>
> The change in behaviour is I guess due to the identity columns feature and
> I think it would be good to be somewhere in the documentation or the
> release notes - assuming that it was intentional.
>
> Pantelis Theodosiou
>
>

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +

In response to

Responses

Browse pgsql-docs by date

  From Date Subject
Next Message Michael Paquier 2018-06-20 02:05:52 Re: Changes in serial / sequence introduced in Postgresql 10
Previous Message Euler Taveira 2018-06-19 18:39:42 Re: postgresql 11 release notes