Thread: minor error reporting fixes

minor error reporting fixes

From
Liam Stewart
Date:
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

Re: [PATCHES] minor error reporting fixes

From
Bruce Momjian
Date:
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?
>
> http://archives.postgresql.org

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

mishandling of NOTICE?

From
Michael Adler
Date:
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


Re: mishandling of NOTICE?

From
"Dave Cramer"
Date:
Michael,

Try the development driver off the site, I had a look at the source and
it doesn't do this anymore.

Dave

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