Re: [PATCH] NPE in meta data getPrimaryKeys() - Mailing list pgsql-jdbc
From | Daniel Serodio |
---|---|
Subject | Re: [PATCH] NPE in meta data getPrimaryKeys() |
Date | |
Msg-id | 1040143458.26502.18.camel@kelly Whole thread Raw |
In response to | [PATCH] NPE in meta data getPrimaryKeys() (Anders Hermansen <anders@yoyo.no>) |
Responses |
Re: [PATCH] NPE in meta data getPrimaryKeys()
Re: [PATCH] NPE in meta data getPrimaryKeys() |
List | pgsql-jdbc |
The Javadoc for DatabaseMetaData.getPrimaryKeys(...) clearly states that catalog may be null, but doesn't mention anything about schema or table being null. I understand this as meaning they (schema and table) can't be null. <quote> Parameters: catalog - a catalog name; "" retrieves those without a catalog; null means drop catalog name from the selection criteria schema - a schema name; "" retrieves those without a schema table - a table name </quote> On Tue, 2002-12-17 at 14:35, Anders Hermansen wrote: > Hello, > > I'm trying to use jakarta ojb for database access in a web application. > For this I have to generate a object-relational mapping. There is a > tool, reversedb, that will generate this for a live database. > > When I run this against my postgresql database I get the following > exception: > > java.lang.NullPointerException > at > org.postgresql.jdbc1.AbstractJdbc1DatabaseMetaData.escapeQuotes(AbstractJdbc1DatabaseMetaData.java:1666) > at > org.postgresql.jdbc1.AbstractJdbc1DatabaseMetaData.getPrimaryKeys(AbstractJdbc1DatabaseMetaData.java:2899) > at > org.apache.ojb.tools.mapping.reversedb.DBMeta.read(Unknown Source) > at > org.apache.ojb.tools.mapping.reversedb.gui.JFrmMainFrame.analyzeSchema(Unknown > Source) > (...) > > It fails with a npe because table was set to null. Is setting table to > null for the getPrimaryKeys illegall according to jdbc specification? > > As it seems ojb is requesting primary keys for all tables when table is > set to null, and is assuming this will be legal > > >From line 279 i in DBMeta.read() in ojb source: > rs = this.dbMeta.getPrimaryKeys(null, null, null); > > Attached is a patch which makes the getPrimaryKeys method accept the > value of null for the table parameter. > > Is this the correct solution? > > > Anders > > -- > Anders Hermansen > YoYo Mobile as > ---- > > Index: org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java > =================================================================== > RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java,v > retrieving revision 1.13 > diff -u -r1.13 AbstractJdbc1DatabaseMetaData.java > --- org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/12/11 21:02:58 1.13 > +++ org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/12/17 16:34:20 > @@ -2903,9 +2903,11 @@ > " ci.relname AS PK_NAME "+ > from+ > " WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid "+ > - " AND a.attrelid=ci.oid AND i.indisprimary "+ > - " AND ct.relname = '"+escapeQuotes(table)+"' "+ > - where+ > + " AND a.attrelid=ci.oid AND i.indisprimary "; > + if (table != null && !"".equals(table)) { > + sql += " AND ct.relname = '"+escapeQuotes(table)+"' "; > + } > + sql += where+ > " ORDER BY table_name, pk_name, key_seq"; > return connection.createStatement().executeQuery(sql); > } > ---- > > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/users-lounge/docs/faq.html -- []'s Daniel Serodio
pgsql-jdbc by date: