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:

Previous
From: Daniel Serodio
Date:
Subject: Re: [PATCH] NPE in meta data getPrimaryKeys()
Next
From: Anders Hermansen
Date:
Subject: Re: [PATCH] NPE in meta data getPrimaryKeys()