Re: [PATCH] NPE in meta data getPrimaryKeys() - Mailing list pgsql-jdbc
From | Dave Cramer |
---|---|
Subject | Re: [PATCH] NPE in meta data getPrimaryKeys() |
Date | |
Msg-id | 1040144044.14901.264.camel@inspiron.cramers Whole thread Raw |
In response to | Re: [PATCH] NPE in meta data getPrimaryKeys() (Daniel Serodio <daniel@checkforte.com.br>) |
List | pgsql-jdbc |
That would be my understanding as well Dave On Tue, 2002-12-17 at 11:44, Daniel Serodio wrote: > 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 -- Dave Cramer <Dave@micro-automation.net>
pgsql-jdbc by date: