Backport fix from HEAD that makes ecpglib give the right SQLSTATE if the connection disappears.
This commit is contained in:
parent
266c5e4d4f
commit
e51710d1e2
@ -1,4 +1,4 @@
|
|||||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.19 2007/11/15 21:14:45 momjian Exp $ */
|
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/error.c,v 1.19.2.1 2010/03/08 13:15:51 meskes Exp $ */
|
||||||
|
|
||||||
#define POSTGRES_ECPG_INTERNAL
|
#define POSTGRES_ECPG_INTERNAL
|
||||||
#include "postgres_fe.h"
|
#include "postgres_fe.h"
|
||||||
@ -172,6 +172,17 @@ ecpg_raise_backend(int line, PGresult *result, PGconn *conn, int compat)
|
|||||||
message = PQerrorMessage(conn);
|
message = PQerrorMessage(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strcmp(sqlstate, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR) == 0)
|
||||||
|
{
|
||||||
|
/* we might get here if the connection breaks down, so let's
|
||||||
|
* check for this instead of giving just the generic internal error */
|
||||||
|
if (PQstatus(conn) == CONNECTION_BAD)
|
||||||
|
{
|
||||||
|
sqlstate = "57P02";
|
||||||
|
message = "the connection to the server was lost";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* copy error message */
|
/* copy error message */
|
||||||
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
|
snprintf(sqlca->sqlerrm.sqlerrmc, sizeof(sqlca->sqlerrm.sqlerrmc),
|
||||||
"'%s' in line %d.", message, line);
|
"'%s' in line %d.", message, line);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user