Re: [PATCH] NPE in meta data getPrimaryKeys()

From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Daniel Serodio <daniel(at)checkforte(dot)com(dot)br>
Cc: PostgreSQL JDBC List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [PATCH] NPE in meta data getPrimaryKeys()
Date: 2002-12-17 16:54:05
Message-ID: 1040144044.14901.264.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)micro-automation(dot)net>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Anders Hermansen 2002-12-17 16:59:39 Re: [PATCH] NPE in meta data getPrimaryKeys()
Previous Message Daniel Serodio 2002-12-17 16:44:16 Re: [PATCH] NPE in meta data getPrimaryKeys()