Re: DatabaseMetaData.getTypeInfo() question - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: DatabaseMetaData.getTypeInfo() question
Date
Msg-id Pine.LNX.4.33.0310090844590.21890-100000@leary.csoft.net
Whole thread Raw
In response to DatabaseMetaData.getTypeInfo() question  (Roger Bjärevall <roger@minq.se>)
List pgsql-jdbc

On Thu, 9 Oct 2003, [ISO-8859-1] Roger Bj�revall wrote:

> Hi,
>
> We are currently testing the upcoming version of DbVisualizer with
> PostgreSQL and the JDBC drivers.
>
> We have one concern and that is the information returned from the
> DatabaseMetaData.getTypeInfo() method.
>
> It returns a lots of information, some are data type info while some
> are tables or functions(?).
>
> We did a quick comparision of the supported data types as listed in the
> PostgreSQL documenation and what is returned by the getTypeInfo call.
> The result is rather confusing for us.
>
> (http://www.postgresql.org/docs/7.3/static/datatype.html)
>
> - Among the real data types we find types such as:
>
>    TYPE_NAME    DATA_TYPE    PRECISION
>    pg_cast    1111        9
>    pg_class    1111        9
>    pg_constraint    1111        9
>    pg_conversion    1111        9
>    pg_database    1111        9
>
>    What is this and why do they appear when getting type info?

In postgresql all tables have a corresponding complex type with values for
each of the columns.  So you're seeing the complex types associated
with the various system tables.

> - The documentation lists data types as "Type Name" and "Aliases".
>    Why do the getTypeInfo() call return the aliased name for almost
>    all data types that have an alias instead of the in most cases
>    preferred "Type Name"?
>    I.e we believe that users coming from other databases would prefeer
>    "bigint" rather then "int8", "smallint" rathern then "int2", etc.
>    There are some exceptions to this such as the "varchar" alias which
>    is more common then "character varying".
>
>    One solution is simply to add the real type names to the existing list
>    of data types as returned by the getTypeInfo() call.

The getTypeInfo call only returns information about postgresql's internal
types.  For example int8 is the internal type name for an eight byte
integer.  The fact that the parser also allows you to specify bigint is
information that is not available to the jdbc driver or really anything
other than the parser.  Perhaps the type table in the documentation is not
entirely clear that bigint is an alias for int8 and not the other way
around.

Kris Jurka





pgsql-jdbc by date:

Previous
From: shyamperi@davlin.co.in
Date:
Subject: Serious Problem with the windows and postgres configuration
Next
From: Tom Lane
Date:
Subject: Why does Statement.close() close result set?