C exception code

Started by Bruce Momjianover 25 years ago4 messages
#1Bruce Momjian
pgman@candle.pha.pa.us

Are we interested in adding Try/Catch exception code to PostgreSQL.
This looks interesting:

http://www.cs.berkeley.edu/~amc/cexcept/

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  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
#2Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Bruce Momjian (#1)
Re: C exception code

Oh, well. At least I asked. :-)

Are we interested in adding Try/Catch exception code to PostgreSQL.
This looks interesting:

http://www.cs.berkeley.edu/~amc/cexcept/

IMHO using the C pre-processor to make C look like some other language:

- makes the code harder to read as readers have to learn the dialect
first

- makes the code harder to debug, since debugging tools don't know the
dialect but only the C it is translated into

This exception implementation has the obvious(?) problem of using
setjump()/longjmp() where sigsetjmp()/siglongjmp() would probably be
necessary for postgresql.

There are places too where this implementation would just plain not
work and so couldn't be used: setjmp(), longjmp(), sigsetjump(), and
siglongjmp() are not async safe signal functions and so can't be
called in signal handlers, for a start.

Regards,

Giles

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  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
#3Giles Lean
giles@nemeton.com.au
In reply to: Bruce Momjian (#1)
Re: C exception code

Are we interested in adding Try/Catch exception code to PostgreSQL.
This looks interesting:

http://www.cs.berkeley.edu/~amc/cexcept/

IMHO using the C pre-processor to make C look like some other language:

- makes the code harder to read as readers have to learn the dialect
first

- makes the code harder to debug, since debugging tools don't know the
dialect but only the C it is translated into

This exception implementation has the obvious(?) problem of using
setjump()/longjmp() where sigsetjmp()/siglongjmp() would probably be
necessary for postgresql.

There are places too where this implementation would just plain not
work and so couldn't be used: setjmp(), longjmp(), sigsetjump(), and
siglongjmp() are not async safe signal functions and so can't be
called in signal handlers, for a start.

Regards,

Giles

#4Chris Bitmead
chrisb@nimrod.itg.telstra.com.au
In reply to: Bruce Momjian (#1)
Re: C exception code

Bruce Momjian wrote:

Are we interested in adding Try/Catch exception code to PostgreSQL.
This looks interesting:

http://www.cs.berkeley.edu/~amc/cexcept/

How tricky is the error handling in Postgres?

As an aside, I have just started working on a Java project, nearly done
for a company where they have not used the Java exception model. I.e.
there are error codes, setErrorCode, and ifError everywhere. A bigger
mess you will not see. So I'm partial to a decent exception model, and
might even use the above in a project of my own.