Skip site navigation (1) Skip section navigation (2)

Re: Wrong column names in ResultSetMetaData

From: "Mike Martin" <mmartin(at)vieo(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Wrong column names in ResultSetMetaData
Date: 2004-07-29 01:24:00
Message-ID: ce9jk0$15mb$ (view raw, whole thread or download thread mbox)
Lists: pgsql-jdbc
I wrote:
> With the new V3 driver the column names in ResultSetMetaData
> don't reflect the aliases used in the SQL.  I.e. if I do:
>     SELECT name as name_alias FROM ...
> the metadata says I have a result column called "name" instead
> of "name_alias".

I think I see the problem.  v2/ says:

    fields[i] = new Field(columnLabel, columnLabel, typeOid, typeLength,
typeModifier, 0, 0);

whereas v3/ says:

    fields[i] = new Field(columnLabel,
                          null, /* name not yet determined */
                          typeOid, typeLength, typeModifier, tableOid,

and a separate query is later done in getColumnName() to try
to return the unaliased *source* column name used in the query.

I'm almost certain this is wrong from a JDBC standpoint.

rsmd.getColumnName() is supposed to return the given name of
the *result* column, which SQL has rules to define.
rsmd.getColumnLabel() is "for use in printouts and displays"
and will often equate to the column name unless the DBMS has
some "prettier" column title for display purposes.

For programmatic purposes the column name concept is pretty
well defined by the docs on ResultSet.  They're supposed to
behave such that:

   String colname = rsmd.getColumnName(col);
   return rs.getXXX(colname);

is equivalent to:

   return rs.getXXX(col);

for every column that has a (non-duplicate) name.

I have to think this is going to break more code than just


In response to


pgsql-jdbc by date

Next:From: Kris JurkaDate: 2004-07-29 03:20:46
Subject: Re: Wrong column names in ResultSetMetaData
Previous:From: Mike MartinDate: 2004-07-28 23:43:44
Subject: Wrong column names in ResultSetMetaData

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group