Re: Meaningful Exception handling - Mailing list pgsql-jdbc

From Kovács Péter
Subject Re: Meaningful Exception handling
Date
Msg-id 8A2DDD7ED7876A4698F6FF204F62CBFC0319F46D@budg112a.sysdata.siemens.hu
Whole thread Raw
In response to Meaningful Exception handling  (AgentM <agentm@cmu.edu>)
List pgsql-jdbc
Is there a way to catch and ignore this kind of errors in stored procedures
(like an emtpy catch block in java)?

> -----Original Message-----
> From: Barry Lind [mailto:barry@xythos.com]
> Sent: Wednesday, April 17, 2002 6:57 PM
> To: nickf@ontko.com
> Cc: AgentM; pgsql-jdbc@postgresql.org
> Subject: Re: [JDBC] Meaningful Exception handling
>
>
> Nick,
>
> *All* database errors have this behavior.  Most but not all
> SQLExceptions are the result of errors occuring in the database.
>
> A duplicate key in index error will result in the entire transaction
> needing to be rolled back.  So what you are proposing to do can't be
> done with postgres.  However the way I work around this
> problem is to do
> the following:
>
> insert into foo (bar) values (?)
> where not exists select * from foo where bar = ?
>
> Inserts of this format will prevent duplicates from being
> inserted.  You
> can even look at the result of the above statement to see the
> number of
> rows affected, and if it is zero (meaning the row was already
> there and
> you didn't insert), you can branch and do an update instead.
>
> thanks,
> --Barry
>
>
>
> Nick Fankhauser wrote:
> > Barry-
> >
> > Is this true of *all* SQLExceptions, or are some at a lower
> level that won't
> > cause a transaction abort?
> >
> > My concern is that I'm contemplating a load process in
> which some inserts
> > may be duplicated, and I was planning on depending on the
> unique index to
> > kick these out. If I'm committing after every load instead
> of after every
> > insert, would I lose all transactions up to the point where
> the unique
> > constraint stopped an insert? Is there any way to tell PostgreSQL to
> > continue on errors?
> >
> > Thanks
> >
> > -Nick
> >
> >
> >
> >>-----Original Message-----
> >>From: pgsql-jdbc-owner@postgresql.org
> >>[mailto:pgsql-jdbc-owner@postgresql.org]On Behalf Of Barry Lind
> >>Sent: Wednesday, April 17, 2002 12:23 AM
> >>To: AgentM
> >>Cc: pgsql-jdbc@postgresql.org
> >>Subject: Re: [JDBC] Meaningful Exception handling
> >>
> >>
> >>First off you do know that you can't catch an error in postgres and
> >>continue on, don't you?  Any error in postgres aborts the current
> >>transaction.  Thus after an error you must rollback and start a new
> >>transaction, and then you need to redo all the work up to
> the point of
> >>the error.  This isn't generally something you can easily do when
> >>catching an exception.
> >>
> >>Answering your specific question:  comparing the string
> error message is
> >>currently the only way to determine the error.  There is a
> TODO item for
> >>the database to support error codes, and when the database adds that
> >>support the jdbc driver will as well.
> >>
> >>thanks,
> >>--Barry
> >>
> >>
> >>
> >>AgentM wrote:
> >>
> >>>First off, thanks for the quick help with my previous
> simple problem.
> >>>
> >>>Now I'd like to catch SQLExceptions selectively. For
> example, I have a
> >>>uniquely indexed column in Table A. I would like to insert
> into this
> >>>column and I don't care if the insert fails due to
> duplication. But I
> >>>would want to know if something else went wrong. Is there a way to
> >>>specifically catch and ignore this particular instance of the
> >>>SQLException short of comparing a String to the database's returned
> >>>error message? Are there any docs referring to
> SQLException messages
> >>>thrown? Thanks again.
> >>
> >>
> >>
> >>---------------------------(end of
> broadcast)---------------------------
> >>TIP 1: subscribe and unsubscribe commands go to
> majordomo@postgresql.org
> >>
> >
> >
> >
>
>
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>

pgsql-jdbc by date:

Previous
From: "Joe Shevland"
Date:
Subject: Re: BLOB performance test FYI
Next
From: "Marin Dimitrov"
Date:
Subject: Re: BLOB performance test FYI