On 10/12/2012 02:33 PM, Thomas Kellerer wrote:
> When looking at a CREATE TABLE statement in a SQL tool, users expect to
> see "serial" there if the table was created that way.
Applications can check the metadata and make any transformations they
want for display. The fact remains that the data type is "integer" or
"biginteger".
JDBC isn't for the "end user", it's an API for developers, much like libpq.
I maintain that presenting "serial" or "bigserial" as a *type* is just
plain wrong. If nothing else:
regress=# create table blah ( id serial primary key );
CREATE TABLE
regress=# PREPARE insert_blah(serial) AS INSERT INTO blah(id)
regress-# VALUES ($1);
ERROR: type "serial" does not exist
LINE 1: PREPARE insert_blah(serial) AS INSERT INTO blah(id) VALUES (...
Also:
regress=# SELECT '1'::serial;
ERROR: type "serial" does not exist
LINE 1: SELECT '1'::serial;
Seriously, reporting the type as "serial" is just plain wrong.
--
Craig Ringer