mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 11:29:24 +02:00
Postgres: more information in EPQDatabaseError
This commit is contained in:
parent
0907628b73
commit
f9b1a5acfb
@ -85,6 +85,11 @@ type
|
||||
MESSAGE_DETAIL:string;
|
||||
MESSAGE_HINT:string;
|
||||
STATEMENT_POSITION:string;
|
||||
SCHEMA_NAME: string;
|
||||
TABLE_NAME: string;
|
||||
COLUMN_NAME: string;
|
||||
DATATYPE_NAME: string;
|
||||
CONSTRAINT_NAME: string;
|
||||
end;
|
||||
|
||||
{ TPQTranConnection }
|
||||
@ -691,6 +696,11 @@ var
|
||||
MESSAGE_DETAIL: string;
|
||||
MESSAGE_HINT: string;
|
||||
STATEMENT_POSITION: string;
|
||||
SCHEMA_NAME: string;
|
||||
TABLE_NAME: string;
|
||||
COLUMN_NAME: string;
|
||||
DATATYPE_NAME: string;
|
||||
CONSTRAINT_NAME: string;
|
||||
P : Pchar;
|
||||
haveError : Boolean;
|
||||
|
||||
@ -706,12 +716,18 @@ begin
|
||||
else if (PQresultStatus(res) <> PGRES_COMMAND_OK) then
|
||||
begin
|
||||
HaveError:=True;
|
||||
SEVERITY:=PQresultErrorField(res,ord('S'));
|
||||
SQLSTATE:=PQresultErrorField(res,ord('C'));
|
||||
MESSAGE_PRIMARY:=PQresultErrorField(res,ord('M'));
|
||||
MESSAGE_DETAIL:=PQresultErrorField(res,ord('D'));
|
||||
MESSAGE_HINT:=PQresultErrorField(res,ord('H'));
|
||||
STATEMENT_POSITION:=PQresultErrorField(res,ord('P'));
|
||||
SEVERITY:=PQresultErrorField(res,PG_DIAG_SEVERITY);
|
||||
SQLSTATE:=PQresultErrorField(res,PG_DIAG_SQLSTATE);
|
||||
MESSAGE_PRIMARY:=PQresultErrorField(res,PG_DIAG_MESSAGE_PRIMARY);
|
||||
MESSAGE_DETAIL:=PQresultErrorField(res,PG_DIAG_MESSAGE_DETAIL);
|
||||
MESSAGE_HINT:=PQresultErrorField(res,PG_DIAG_MESSAGE_HINT);
|
||||
STATEMENT_POSITION:=PQresultErrorField(res,PG_DIAG_STATEMENT_POSITION);
|
||||
SCHEMA_NAME:=PQresultErrorField(res,PG_DIAG_SCHEMA_NAME);
|
||||
TABLE_NAME:=PQresultErrorField(res,PG_DIAG_TABLE_NAME);
|
||||
COLUMN_NAME:=PQresultErrorField(res,PG_DIAG_COLUMN_NAME);
|
||||
DATATYPE_NAME:=PQresultErrorField(res,PG_DIAG_DATATYPE_NAME);
|
||||
CONSTRAINT_NAME:=PQresultErrorField(res,PG_DIAG_CONSTRAINT_NAME);
|
||||
|
||||
sErr:=PQresultErrorMessage(res);
|
||||
if VerboseErrors then
|
||||
begin
|
||||
@ -721,6 +737,11 @@ begin
|
||||
MaybeAdd(sErr,'Error Detail',MESSAGE_DETAIL);
|
||||
MaybeAdd(sErr,'Hint',MESSAGE_HINT);
|
||||
MaybeAdd(sErr,'Character',STATEMENT_POSITION);
|
||||
MaybeAdd(sErr,'Schema',SCHEMA_NAME);
|
||||
MaybeAdd(sErr,'Table',TABLE_NAME);
|
||||
MaybeAdd(sErr,'Column',COLUMN_NAME);
|
||||
MaybeAdd(sErr,'Data Type',DATATYPE_NAME);
|
||||
MaybeAdd(sErr,'Constraint',CONSTRAINT_NAME);
|
||||
end;
|
||||
end;
|
||||
if HaveError then
|
||||
@ -733,6 +754,12 @@ begin
|
||||
E.MESSAGE_DETAIL:=MESSAGE_DETAIL;
|
||||
E.MESSAGE_HINT:=MESSAGE_HINT;
|
||||
E.STATEMENT_POSITION:=STATEMENT_POSITION;
|
||||
E.SCHEMA_NAME:=SCHEMA_NAME;
|
||||
E.TABLE_NAME:=TABLE_NAME;
|
||||
E.COLUMN_NAME:=COLUMN_NAME;
|
||||
E.DATATYPE_NAME:=DATATYPE_NAME;
|
||||
E.CONSTRAINT_NAME:=CONSTRAINT_NAME;
|
||||
|
||||
PQclear(res);
|
||||
res:=nil;
|
||||
if assigned(conn) then
|
||||
|
@ -14,6 +14,25 @@ const
|
||||
ERROR_MSG_LENGTH = 4096;
|
||||
CMDSTATUS_LEN = 40;
|
||||
|
||||
PG_DIAG_SEVERITY = Ord('S');
|
||||
PG_DIAG_SEVERITY_NONLOCALIZED = Ord('V');
|
||||
PG_DIAG_SQLSTATE = Ord('C');
|
||||
PG_DIAG_MESSAGE_PRIMARY = Ord('M');
|
||||
PG_DIAG_MESSAGE_DETAIL = Ord('D');
|
||||
PG_DIAG_MESSAGE_HINT = Ord('H');
|
||||
PG_DIAG_STATEMENT_POSITION = Ord('P');
|
||||
PG_DIAG_INTERNAL_POSITION = Ord('p');
|
||||
PG_DIAG_INTERNAL_QUERY = Ord('q');
|
||||
PG_DIAG_CONTEXT = Ord('W');
|
||||
PG_DIAG_SCHEMA_NAME = Ord('s');
|
||||
PG_DIAG_TABLE_NAME = Ord('t');
|
||||
PG_DIAG_COLUMN_NAME = Ord('c');
|
||||
PG_DIAG_DATATYPE_NAME = Ord('d');
|
||||
PG_DIAG_CONSTRAINT_NAME = Ord('n');
|
||||
PG_DIAG_SOURCE_FILE = Ord('F');
|
||||
PG_DIAG_SOURCE_LINE = Ord('L');
|
||||
PG_DIAG_SOURCE_FUNCTION = Ord('R');
|
||||
|
||||
Type
|
||||
TSockAddr = Array [1..112] of byte;
|
||||
TPGresAttDesc = record
|
||||
|
Loading…
Reference in New Issue
Block a user