Re: rollback in C functions

From: Juan Pablo L <jpablolorenzetti(at)gmail(dot)com>
To: John R Pierce <pierce(at)hogranch(dot)com>
Cc: PostgreSQL mailing lists <pgsql-general(at)postgresql(dot)org>
Subject: Re: rollback in C functions
Date: 2015-02-19 22:42:34
Message-ID: CABSYDaad9=tYZzm7o_nwnZ2p6oKPtz9qg8R4oUBMnF4UiRSQRQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

i tried this but the call to PQresultErrorField(PGresult, PG_DIAG_SQLSTATE)
is returning NULL, this is what trigger the exception in the function code:

ereport(ERROR,(errcode(ERRCODE_SQL_ROUTINE_EXCEPTION),errmsg("Plan with id
%s does not allow balance with id %s",plan_id,in_balanceid)));

and this is the caller code:

if(PQresultStatus(pg_res) == PGRES_FATAL_ERROR)
{
char *t = PQresultErrorField(pg_res,PG_DIAG_SQLSTATE);
log_debug("[C%03dH%03d] PQres returned NULL:
%s",handler->my_connection->id,handler->id,t);
}

the above call log_debug show that t is NULL. am i doing something wrong ?
thanks!

On 19 February 2015 at 16:27, Juan Pablo L <jpablolorenzetti(at)gmail(dot)com>
wrote:

> Thank you, i will try this, honestly i was checking if PGResult is NULL,
> when i trigger the exception i always get NULL so i did not any further but
> i will try this .....
>
> On 19 February 2015 at 16:22, John R Pierce <pierce(at)hogranch(dot)com> wrote:
>
>> On 2/19/2015 2:02 PM, Juan Pablo L wrote:
>>
>>> Thank you Alvaro, i m afraid ereport seems to be the way, that it is
>>> complicated to catch this error code in the code of the caller. cause you
>>> have to use a callback etc etc
>>>
>>
>> a query that triggers ereport(ERROR,....) should return a PGresult* that
>> you pass to PQresultStatus(), which should indicate PGRES_FATAL_ERROR, so
>> you then call PQresultErrorField(PGresult, PG_DIAG_SQLSTATE) to get back
>> the SQLSTATE code.
>>
>>
>>
>> --
>> john r pierce 37N 122W
>> somewhere on the middle of the left coast
>>
>>
>>
>> --
>> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-general
>>
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message inspector morse 2015-02-20 00:57:54 stored procedure variable names
Previous Message David G Johnston 2015-02-19 22:33:31 Re: select where true, or select where input = '$var'