Thread: BUG #3668: type error in serial
The following bug has been logged online: Bug reference: 3668 Logged by: Eric Weimer Email address: eweimer@thelocalphonecompany.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)
"Eric Weimer" <eweimer@thelocalphonecompany.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
On Wednesday, October 10, 2007 2:32:17 PM UTC-7, Tom Lane wrote: > "Eric Weimer" <eweimer@thelocalphonecompany.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 sh= ould > > also be defined as bigint.=20 >=20 > This is not a bug, primarily because we have only one size of sequence. >=20 > regards, tom lane >=20 > ---------------------------(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 maxim= um 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 "in= teger out of range". That seems like a relatively minor change that could s= ave people a LOT of headache. Dave