Re: BUG #3668: type error in serial

Lists: pgsql-bugs
From: "Eric Weimer" <eweimer(at)thelocalphonecompany(dot)net>
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #3668: type error in serial
Date: 2007-10-10 19:02:21
Message-ID: 200710101902.l9AJ2Lbn080555@wwwmaster.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs


The following bug has been logged online:

Bug reference: 3668
Logged by: Eric Weimer
Email address: eweimer(at)thelocalphonecompany(dot)net
PostgreSQL version: 8.1
Operating system: Linux
Description: type error in serial
Details:

Creating a table with a column of type serial causes the creation of a
sequence tied as the default value for the column.
The actual type of the column is integer, however the sequence created is of
type bigint. If the sequence is created as a bigint, then the column should
also be defined as bigint.

Example:
dev=# create temp table testing (id serial);
NOTICE: CREATE TABLE will create implicit sequence "testing_id_seq" for
serial column "testing.id"
CREATE TABLE
dev=# \d testing_id_seq
Sequence "pg_temp_1.testing_id_seq"
Column | Type
---------------+---------
sequence_name | name
last_value | bigint
increment_by | bigint
max_value | bigint
min_value | bigint
cache_value | bigint
log_cnt | bigint
is_cycled | boolean
is_called | boolean

dev=# \d testing
Table "pg_temp_1.testing"
Column | Type | Modifiers
--------+---------+------------------------------------------------------
id | integer | not null default nextval('testing_id_seq'::regclass)


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Eric Weimer" <eweimer(at)thelocalphonecompany(dot)net>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #3668: type error in serial
Date: 2007-10-10 21:32:17
Message-ID: 24664.1192051937@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

"Eric Weimer" <eweimer(at)thelocalphonecompany(dot)net> writes:
> Creating a table with a column of type serial causes the creation of a
> sequence tied as the default value for the column.
> The actual type of the column is integer, however the sequence created is of
> type bigint. If the sequence is created as a bigint, then the column should
> also be defined as bigint.

This is not a bug, primarily because we have only one size of sequence.

regards, tom lane


From: Dave Johansen <davejohansen(at)gmail(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #3668: type error in serial
Date: 2012-08-29 23:38:27
Message-ID: 5a4b25cd-3398-4b5c-90a6-9788b4957bdd@googlegroups.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-bugs

On Wednesday, October 10, 2007 2:32:17 PM UTC-7, Tom Lane wrote:
> "Eric Weimer" <eweimer(at)thelocalphonecompany(dot)net> writes:
> > Creating a table with a column of type serial causes the creation of a
> > sequence tied as the default value for the column.
> > The actual type of the column is integer, however the sequence created is of
> > type bigint. If the sequence is created as a bigint, then the column should
> > also be defined as bigint.
>
> This is not a bug, primarily because we have only one size of sequence.
>
> regards, tom lane
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings

I believe that the SERIAL type should set the MAXVALUE appropriately (that of a 32 bit number) because then it could give an error like "reached maximum value of sequence" rather than having people beating their heads against the wall because they can't figure out why they're getting an error of "integer out of range". That seems like a relatively minor change that could save people a LOT of headache.

Dave