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>
>
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 |