Re: Bug report: NullPointerException from Driver.connect when passed a Properties with non-string values

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: dmp <danap(at)ttc-cmc(dot)net>
Cc: Nathaniel Waisbrot <waisbrot(at)highfleet(dot)com>, List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Bug report: NullPointerException from Driver.connect when passed a Properties with non-string values
Date: 2013-01-28 18:40:51
Message-ID: CADK3HHK9HgJ+-2x9cBMbH9VryUoNvTAbzcG1D+xgN9WR=05vEw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Well ... another interesting stretching of the spec.

Driver PropertyInfo values are required to be Strings as per the spec.
http://docs.oracle.com/javase/1.3/docs/api/java/sql/DriverPropertyInfo.html

Your test case is actually a bit misleading as getProperty returns null
because getString on the empty object returns null.

while I'm inclined to accept a patch to fix this, this is clearly 'out of
spec'

Dave Cramer

dave.cramer(at)credativ(dot)ca
http://www.credativ.ca

On Mon, Jan 28, 2013 at 1:16 PM, dmp <danap(at)ttc-cmc(dot)net> wrote:

> Hello Nathaniel,
>
> Any very robust program will try to handle anything the user throws at it.
>
> In this case you have passed a null value as an argument to the method
> and it as acted according by giving you a NUllPointerException. Perhaps
> wrapping this as SQLException may be more easily caught by your app., but
> would be deceptive in response.
>
> Perhaps you could submit a patch for consideration, to the solution you
> desire. The code may be obtained at GitHub.
>
> git clone git://github.com/pgjdbc/**pgjdbc.git<http://github.com/pgjdbc/pgjdbc.git>
>
> danap.
>
>
>
> Nathaniel Waisbrot wrote:
>
>> I found this while working with another JDBC driver (Stels XML driver).
>> The Postgresql driver's connect() method is expecting the passed
>> Properties object to have only string values, but this is not actually
>> guaranteed to be the case. I think that the PG driver should wrap the
>> NullPointerException in a SQLException, which would allow the DriverManager
>> to attempt to use other JDBC drivers to make the connection.
>>
>> Here is a simple Java program which will reproduce the problem:
>>
>> ==================
>> import java.sql.DriverManager;
>> import java.util.Properties;
>>
>> public class PGTest {
>> public static void main(String[] args) throws Exception {
>> Class.forName("org.postgresql.**Driver");
>> Properties info = new Properties();
>> info.put("foo", new Object()); //
>> info.getPropert("foo") will return null
>> DriverManager.getConnection("**foo:bar//baz", info);
>> }
>> }
>> ==================
>>
>> and here is the stack trace produced by running that program:
>>
>> ==================
>> Exception in thread "main" java.lang.NullPointerException
>> at java.util.Hashtable.put(**Hashtable.java:542)
>> at java.util.Properties.**setProperty(Properties.java:**161)
>> at org.postgresql.Driver.connect(**Driver.java:244)
>> at java.sql.DriverManager.**getConnection(DriverManager.**
>> java:579)
>> at java.sql.DriverManager.**getConnection(DriverManager.**
>> java:190)
>> at PGTest.main(PGTest.java:9)
>> ==================
>>
>> I'm using postgresql-9.2-1002.jdbc4.jar, with Java 7, running on Mac OS
>> 10.8.2. Output of java -version:
>> java version "1.7.0_07"
>> Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
>> Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
>>
>>
>>
>>
>
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/**mailpref/pgsql-jdbc<http://www.postgresql.org/mailpref/pgsql-jdbc>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Nathaniel Waisbrot 2013-01-28 19:43:32 Re: Bug report: NullPointerException from Driver.connect when passed a Properties with non-string values
Previous Message dmp 2013-01-28 18:16:27 Re: Bug report: NullPointerException from Driver.connect when passed a Properties with non-string values