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

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

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2002-12-17 16:54:05 Re: [PATCH] NPE in meta data getPrimaryKeys()
Previous Message Dave Cramer 2002-12-17 16:43:56 Re: [PATCH] NPE in meta data getPrimaryKeys()