Problem with API (libpq) - detailed error codes

Started by Nonameabout 22 years ago4 messagesgeneral
Jump to latest
#1Noname
Adam.Bukla@interia.pl

Hi!

I started programming PostgreSQL database with libpq API (client
side). It looks very easy, but unexpected I found problem, which I
cannot solve myself.
If function PQexec fails, I can get error code using PQresultStatus.
But returned codes are very generally and do not specify what really
happen. I can get detailed error description using PQerrorMessage
function, but I need detailed error code (number).

For instance, if I create table, I would like to know, that operation
failed because:
- table already exist
- sql syntax error
- invalid columnt type
and so on.

I searched documents about libpq API and even header file
'internal/libpq-int.h' but I didn't found any interesting.

I would be very gracefully for any hint.

Best regards,
Adam Bukla

#2ljb
ljb220@mindspring.com
In reply to: Noname (#1)
Re: Problem with API (libpq) - detailed error codes

Adam.Bukla@interia.pl wrote:

...

If function PQexec fails, I can get error code using PQresultStatus.
But returned codes are very generally and do not specify what really
happen. I can get detailed error description using PQerrorMessage
function, but I need detailed error code (number).

For instance, if I create table, I would like to know, that operation
failed because:
- table already exist
- sql syntax error
- invalid columnt type
and so on.

I searched documents about libpq API and even header file
'internal/libpq-int.h' but I didn't found any interesting.

I would be very gracefully for any hint.

Appendix A of the PostgreSQL 7.4.1 Reference Manual has a list of error
codes (5 digit numbers) and their meanings. You get at the error code
with PQresultErrorField(result, PG_DIAG_SQLSTATE).

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Noname (#1)
Re: Problem with API (libpq) - detailed error codes

Adam.Bukla@interia.pl (Adam Bukla) writes:

If function PQexec fails, I can get error code using PQresultStatus.
But returned codes are very generally and do not specify what really
happen. I can get detailed error description using PQerrorMessage
function, but I need detailed error code (number).

Beginning in Postgres 7.4, there are standard SQLSTATE error codes
available (see PQresultErrorField), but older releases do not have them.

regards, tom lane

#4Noname
Adam.Bukla@interia.pl
In reply to: Noname (#1)
Re: Problem with API (libpq) - detailed error codes

Hi!

Thanks ljb and Tom Lane - it's exactly what I wanted.
I read documentation to 7.3 so I couldn't find PQresultErrorField function.
I'm suprised, that such necessary functionality exist only in 7.4 version.

Thanks once again,
Adam Bukla