Problem with API (libpq) - detailed error codes
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
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).
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