|
1 |
| -/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.6 2003/08/04 00:43:32 momjian Exp $ */ |
| 1 | +/* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.7 2003/08/08 13:16:20 petere Exp $ */ |
2 | 2 |
|
3 | 3 | #definePOSTGRES_ECPG_INTERNAL
|
4 | 4 | #include"postgres_fe.h"
|
@@ -159,18 +159,29 @@ void
|
159 | 159 | ECPGraise_backend(intline,PGresult*result,PGconn*conn,intcompat)
|
160 | 160 | {
|
161 | 161 | structsqlca_t*sqlca=ECPGget_sqlca();
|
| 162 | +char*sqlstate; |
| 163 | +char*message; |
| 164 | + |
| 165 | +if (result) |
| 166 | +{ |
| 167 | +sqlstate=PQresultErrorField(result,'C'); |
| 168 | +if (sqlstate==NULL) |
| 169 | +sqlstate=ECPG_SQLSTATE_ECPG_INTERNAL_ERROR; |
| 170 | +message=PQresultErrorField(result,'M'); |
| 171 | +} |
| 172 | +else |
| 173 | +{ |
| 174 | +sqlstate=ECPG_SQLSTATE_ECPG_INTERNAL_ERROR; |
| 175 | +message=PQerrorMessage(conn); |
| 176 | +} |
162 | 177 |
|
163 | 178 | /* copy error message */
|
164 | 179 | snprintf(sqlca->sqlerrm.sqlerrmc,sizeof(sqlca->sqlerrm.sqlerrmc),
|
165 |
| -"'%s' in line %d.", |
166 |
| -result ?PQresultErrorField(result,'M') :PQerrorMessage(conn), |
167 |
| -line); |
| 180 | +"'%s' in line %d.",message,line); |
168 | 181 | sqlca->sqlerrm.sqlerrml=strlen(sqlca->sqlerrm.sqlerrmc);
|
169 | 182 |
|
170 | 183 | /* copy SQLSTATE */
|
171 |
| -strncpy(sqlca->sqlstate, |
172 |
| -result ?PQresultErrorField(result,'C') :ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, |
173 |
| -sizeof(sqlca->sqlstate)); |
| 184 | +strncpy(sqlca->sqlstate,sqlstate,sizeof(sqlca->sqlstate)); |
174 | 185 |
|
175 | 186 | /* assign SQLCODE for backward compatibility */
|
176 | 187 | if (strncmp(sqlca->sqlstate,"23505",sizeof(sqlca->sqlstate))==0)
|
|