Обсуждение: bug in create table with serial

Поиск
Список
Период
Сортировка

bug in create table with serial

От
Cristóvão Dalla Costa
Дата:
In PostgreSQL 7.3b2, if I create a table like so:

create table customers (id serial primary key);

The id field will be created of type 32 bit integer, yet the upper limit
for the sequence will be relative to a 64 bit integer.

\d customers                                 Table "public.customers"    Column    |     Type     |
   Modifiers 
-------------+--------------+-----------------------------------------------------------  id          | integer      |
notnull default 
nextval('public.customers_id_seq'::text)



shop-devel=# select * from customers_id_seq;
-[ RECORD 1 ]-+--------------------
sequence_name | customers_id_seq
last_value    | 1
increment_by  | 1
max_value     | 9223372036854775807
min_value     | 1
cache_value   | 1
log_cnt       | 1
is_cycled     | f
is_called     | f



shop-devel=# select version ();                                version
---------------------------------------------------------------------  PostgreSQL 7.3b2 on i386-portbld-freebsd4.7,
compiledby GCC 2.95.4 




Re: bug in create table with serial

От
Tom Lane
Дата:
Cristóvão Dalla Costa <cbraga@bsi.com.br> writes:
> In PostgreSQL 7.3b2, if I create a table like so:
> create table customers (id serial primary key);

> The id field will be created of type 32 bit integer, yet the upper limit
> for the sequence will be relative to a 64 bit integer.

So?

AFAICS, you will get a failure when you reach 2^31 items.  Whether the
failure is "can't fit the value into int4" or "reached sequence maximum"
doesn't seem very exciting to me ...
        regards, tom lane


Re: bug in create table with serial

От
Kris Jurka
Дата:

On Wed, 16 Oct 2002, Tom Lane wrote:

> Cristóvão Dalla Costa <cbraga@bsi.com.br> writes:
> > In PostgreSQL 7.3b2, if I create a table like so:
> > create table customers (id serial primary key);
>
> > The id field will be created of type 32 bit integer, yet the upper limit
> > for the sequence will be relative to a 64 bit integer.
>
> So?
>
> AFAICS, you will get a failure when you reach 2^31 items.  Whether the
> failure is "can't fit the value into int4" or "reached sequence maximum"
> doesn't seem very exciting to me ...
>

Unless of course the column's data type was int8.

Kris Jurka