Bug in metadata.getColumns()/ORDINAL_POSITION - Mailing list pgsql-jdbc
From | j.random.programmer |
---|---|
Subject | Bug in metadata.getColumns()/ORDINAL_POSITION |
Date | |
Msg-id | 421136.5291.qm@web32015.mail.mud.yahoo.com Whole thread Raw |
Responses |
Re: Bug in metadata.getColumns()/ORDINAL_POSITION
|
List | pgsql-jdbc |
Hi: This is using postgres 8.2.x and the latest 8.2-504 JDBC driver. I have a table, defined like so: test=# \d queue_stat; Table "public.queue_stat" Column | Type | Modifiers ------------------------------------------------------- queue_stat_id | bigint | not null default nextval ('queue_stat_queue_stat_id_seq'::regclass) start_time | timestamp without time zone | finish_time | timestamp without time zone | processing_error | text | status | character varying(24) | fullpath_scan_dir | character varying(255) | ======================================== Note, there are 6 columns defined, total in the table. This snippet of code: ------------------------------------------------------- String columnpattern = "%"; //all columns ResultSet rs = md.getColumns( catalogname, schemaname, tablename, columnpattern); QueryUtil.ensureScrollable(rs); rs.beforeFirst(); while (rs.next()) { String colname = rs.getString ("COLUMN_NAME"); int datatype = rs.getInt ("DATA_TYPE"); String typename = rs.getString ("TYPE_NAME"); int colsize = rs.getInt ("COLUMN_SIZE"); int nullable = rs.getInt ("NULLABLE"); String remarks = rs.getString ("REMARKS"); int colnum = rs.getInt ("ORDINAL_POSITION"); -------------------------------------------------- gives me information about each column. I need the ordinal position because I have written a O/R tool that uses the ordinal position returned by the database meta data to generate methods like: result_set.getString(1) etc. Here's the bug. For the above table (queue_stat), I get (via my o/r tool): INFO 1 >>>> Processing table: queue_stat [colname=queue_stat_id, colnum=1, typename=bigserial] [colname=start_time, colnum=2, typename=timestamp] [colname=finish_time, colnum=3, typename=timestamp] [colname=processing_error, colnum=5, typename=text] [colname=status, colnum=6, typename=varchar] [colname=fullpath_scan_dir, colnum=7, typename=varchar] NOTE, THE COLNUM (via ("ORDINAL_POSITION")) returns: 1, 2, 3, 5, 6, 7 This is WRONG. It should be: 1, 2, 3, 4, 5, 6 Of course, this results in all sorts of problems when the tool tries to say: result_set.getString(7) So in a nutshell: there seems to be a bug in: ResultSet rs = md.getColumns( catalogname, schemaname, tablename, columnpattern); as far as the: "ORDINAL_POSITION" column is concerned. This is a pretty serious bug for any O/R tool. I have not encountered this problem before, so something must have changed, either in the database or in the driver. Very weird... Best regards, --j ____________________________________________________________________________________ Do you Yahoo!? Everyone is raving about the all-new Yahoo! Mail beta. http://new.mail.yahoo.com
pgsql-jdbc by date: