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

Re: Missing functionality in ResultSetMetaData ?

From: Kris Jurka <books(at)ejurka(dot)com>
To: Thomas Dudziak <tomdzk(at)gmail(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Missing functionality in ResultSetMetaData ?
Date: 2005-08-09 23:01:22
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-jdbc

On Wed, 10 Aug 2005, Thomas Dudziak wrote:

> Nope, I only browsed over the one you posted earlier (regarding
> PGResultSetMetaData). I take it that the issue with
> getColumnName/getBaseColumnName is the same as with
> getTableName/getBaseTableName ? Let me state what I understand of this
> issue: it is only possible to return the base (real ?) table name, not
> the alias.

The issue actually started with column names.  The pg server currently can 
return aliases for columns, but not for tables.  The original complaint 
was that RSMD.getColumnName better match up with something if we call 
ResultSet.findColumn with it.  After much discussion it was agreed that 
getColumnName means the name of the query's result column not the base 
table's column.  Now, to be consistent getTableName must mean the query's 
table as well.
> However if this is the case, then I don't think your argument given in
> is
> valid, because from what I understand of the ResultSetMetaData, the
> getTableName method returns the name of the column's table, ie. IMO
> the name of the table where the column is defined in.
> So in your example this cannot be 'f' but must be 'footable'. I mean,
> what would I do with 'f' anyway ?

This isn't completely useless, consider a self join: "SELECT a.c, 
b.c FROM tab a, tab b".  getBaseTableName cannot distinguish this, but if 
getTableName did return the alias it could.  This isn't a real strong 
use case though...

> IMO it should be possible to build
> structurally valid select statements from the ResultSetMetaData
> information which is not the case when returning the aliases.
> I think this is actually supported by the few places in the JDBC 3
> spec that deal with ResultSetMetaData, eg. 13.2.3:
> "The method PreparedStatement.getMetaData retrieves a
> ResultSetMetaData object containing a description of the columns that will be
> returned by a prepared statement when is it executed. The ResultSetMetaData
> object contains a record for each column being returned. Methods in the
> ResultSetMetaData interface provide information about the number of columns
> being returned and the characteristics of each column."
> Here they specifically speak about the column' characteristics (ie.
> definition) not the query.

That's not entirely clear.  That's how you read it, but it is just as 
easily read as "the query result's columns".  The spec is awfully vague in 
this area.

Kris Jurka

In response to


pgsql-jdbc by date

Next:From: Oliver JowettDate: 2005-08-09 23:12:45
Subject: Re: Missing functionality in ResultSetMetaData ?
Previous:From: Oliver JowettDate: 2005-08-09 22:52:27
Subject: Re: Missing functionality in ResultSetMetaData ?

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