Error Codes in 7.4 (was: Re: error 23000 is not treated in psqlODBC)

From: "SZ?CS Gabor" <surrano(at)mailbox(dot)hu>
To: <pgsql-odbc(at)postgresql(dot)org>
Subject: Error Codes in 7.4 (was: Re: error 23000 is not treated in psqlODBC)
Date: 2004-03-29 12:49:18
Message-ID: 017401c4158c$43d16e60$0403a8c0@fejleszt4
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Dear Gurus,

As of v7.4, PostgreSQL supports error codes. I'd like to know if we may hope
for a version of psqlODBC that handles error codes.

I tried with PostgreSQL 7.4.1, ODBCExpress 6.0 (dated 2003 Oct) and psqlodbc
7.3.1.0 (dated 2003 May 15) and got the following (I assume useless) answer.

Also tried psqlodbc 7.3.2.4 (dated 2003 Nov 12) and the SQLGetDiagRec
function, with the same result.

Message = "ERROR: update or delete on \"cikk\" violates foreign key
constraint \"$1\" on \"szallitolevel_tetele\""
Native = 7
SQLState = "HY000"

AFAIK these error codes say something like "general error" in ODBC terms :)
This so-called state, "HY000" is not even an SQL state, unless I'm fatally
mistaken. It's some kind of ODBC state, isn't it?

Awaiting your kind response,

G.
%----------------------- cut here -----------------------%
\end

----- Original Message -----
From: "Hiroshi Inoue" <Inoue(at)tpf(dot)co(dot)jp>
To: "Support" <support(at)insyde(dot)com(dot)br>
Cc: <pgsql-odbc(at)postgresql(dot)org>
Sent: Tuesday, February 11, 2003 2:29 AM
Subject: Re: [ODBC] error 23000 is not treated in psqlODBC

> Support wrote:
> >
> > "For example. you could have MS SQL Server and PostgreSQL servers
> > that have exactly the same data. Using ODBC, your Windows application
> > would make exactly the same calls and the back-end data source would
> > look the same (to the Windows application)." - PostgreSQL 7.2
> > Documentation - chap. 7. ODBC Interface
> >
> > This should happen when I use my system. It works with MySQL and MS SQL
> > Server, so it would work with PostgreSQL also, without any change. The
> > problem I found is that psqlODBC do not validate all the error codes
> > specified by ODBC. The error I related should return "23000/S1010"
> > acording to ODBC.
> >
> > Seeking psqlODBC sources, I found some of this informations/errors were
> > treated at environ.c, under a 'case' where most of the psqlODBC errors
> > were treated. Following this logic, this is where I should insert
> > my code:
> >
> > case ER_DUP_KEY:
> > pg_sqlstate_set(env, szSqlState, "23000", "S1010");
> > // key already exists
> > break;
> >
> > This would return the error code I need to treat qhe the user tries to
> > insert a duplicated key.
>
> Unfortunately PostgreSQL doesn't support error code at
> backend side and it's very hard for clients to detect
> error details such as *key already exists*.
> There may be a way where we analyze the error message
> but I won't do it.
>
> regards,
> Hiroshi Inoue
> http://www.geocities.jp/inocchichichi/psqlodbc/
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Shachar Shemesh 2004-03-29 16:00:51 Re: Error Codes in 7.4
Previous Message Stergios Zissakis 2004-03-29 12:44:38 Re: Problem with unixODBC