minor error reporting fixes
Here is a small patch that cleans up some error reporting in the JDBC
driver. PSQLExceptions are thrown instead of SQLExceptions and if a
warning is received while waiting for the backend secret key, that
warning is chained to the new Connection object instead of generating an
exception. A couple new error messages have been added.
Liam
--
Liam Stewart :: Red Hat Canada, Ltd. :: liams@redhat.com
Attachments:
patch.txttext/plain; charset=us-asciiDownload+15-13
Patch applied. Thanks.
---------------------------------------------------------------------------
Liam Stewart wrote:
Here is a small patch that cleans up some error reporting in the JDBC
driver. PSQLExceptions are thrown instead of SQLExceptions and if a
warning is received while waiting for the backend secret key, that
warning is chained to the new Connection object instead of generating an
exception. A couple new error messages have been added.Liam
--
Liam Stewart :: Red Hat Canada, Ltd. :: liams@redhat.com
[ Attachment, skipping... ]
---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
I am not very familiar with this driver, but I thought I should point out
a potential bug. I wish I had time to do more investigationn, testing and
debugging...
I encountered a situation in which I could access the database using psql
but not the JDBC driver. This is what I think happened:
The backend issued a NOTICE message. psql handled it gracefully by
printing the message to STDOUT and providing a fine connection. JDBC
driver throws a fatal SQLException.
The following case statements may need to handle NOTICEs differently:
org.postgresql.Connection line 265:
// As of protocol version 2.0, we should now receive the cancellation key and the pid
int beresp = pg_stream.ReceiveChar();
switch (beresp)
{
case 'K':
pid = pg_stream.ReceiveInteger(4);
ckey = pg_stream.ReceiveInteger(4);
break;
case 'E':
case 'N':
throw new SQLException(pg_stream.ReceiveString(encoding));
default:
throw new PSQLException("postgresql.con.setup");
}
// Expect ReadyForQuery packet
beresp = pg_stream.ReceiveChar();
switch (beresp)
{
case 'Z':
break;
case 'E':
case 'N':
throw new SQLException(pg_stream.ReceiveString(encoding));
default:
throw new PSQLException("postgresql.con.setup");
}
Once again, sorry for the uninformed vaugeries. I hope this helps
somewhat.
Mike Adler
Michael,
Try the development driver off the site, I had a look at the source and
it doesn't do this anymore.
Dave
Show quoted text
-----Original Message-----
From: pgsql-jdbc-owner@postgresql.org
[mailto:pgsql-jdbc-owner@postgresql.org] On Behalf Of Michael Adler
Sent: Monday, March 18, 2002 1:47 PM
To: PostgreSQL JDBC List
Subject: [JDBC] mishandling of NOTICE?I am not very familiar with this driver, but I thought I
should point out a potential bug. I wish I had time to do
more investigationn, testing and debugging...I encountered a situation in which I could access the
database using psql but not the JDBC driver. This is what I
think happened:The backend issued a NOTICE message. psql handled it
gracefully by printing the message to STDOUT and providing a
fine connection. JDBC driver throws a fatal SQLException.The following case statements may need to handle NOTICEs differently:
org.postgresql.Connection line 265:
// As of protocol version 2.0, we should now
receive the cancellation key and the pid
int beresp = pg_stream.ReceiveChar();
switch (beresp)
{
case 'K':
pid = pg_stream.ReceiveInteger(4);
ckey = pg_stream.ReceiveInteger(4);
break;
case 'E':
case 'N':
throw new
SQLException(pg_stream.ReceiveString(encoding));
default:
throw new
PSQLException("postgresql.con.setup");
}// Expect ReadyForQuery packet
beresp = pg_stream.ReceiveChar();
switch (beresp)
{
case 'Z':
break;
case 'E':
case 'N':
throw new
SQLException(pg_stream.ReceiveString(encoding));
default:
throw new
PSQLException("postgresql.con.setup");
}Once again, sorry for the uninformed vaugeries. I hope this
helps somewhat.Mike Adler
---------------------------(end of
broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to
majordomo@postgresql.org)