Re: LOCK TABLE is not allowed in a non-volatile function - Mailing list pgsql-general

From Tom Lane
Subject Re: LOCK TABLE is not allowed in a non-volatile function
Date
Msg-id 8866.1334778445@sss.pgh.pa.us
Whole thread Raw
In response to Re: LOCK TABLE is not allowed in a non-volatile function  (Eliot Gable <egable+pgsql-general@gmail.com>)
Responses Re: LOCK TABLE is not allowed in a non-volatile function  (Eliot Gable <egable+pgsql-general@gmail.com>)
Re: LOCK TABLE is not allowed in a non-volatile function  (Eliot Gable <egable+pgsql-general@gmail.com>)
List pgsql-general
Eliot Gable <egable+pgsql-general@gmail.com> writes:
> On Wed, Apr 18, 2012 at 1:01 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> However, there still might be an issue, because the CONTEXT trace that
>> you showed certainly seemed to point where you thought it did.

> After re-reading the LOCK modes and realizing that ACCESS SHARE is not the
> same as SHARE, I believe you are correct; the only issue seems to be in the
> CONTEXT trace failing to point out that the error occurred three function
> calls deeper than what was reported. It seems it reported it in the first
> function where the EXCEPTION handling was set up.

Oh!  Yes, that's to be expected, because so far as Postgres is concerned
it's logging the location of the RAISE WARNING command.  You've only
told it to print the SQLERRM string, and nothing else:

RAISE WARNING 'An error occurred while trying to rotate the live user
activity records; code %: %', SQLSTATE, SQLERRM;

As of 9.2 there is a way to get the context string for the original
error (GET STACKED DIAGNOSTICS) which you could then include in the
RAISE message.  That hasn't made it to any released versions
unfortunately.

            regards, tom lane

pgsql-general by date:

Previous
From: Jose Hales-Garcia
Date:
Subject: Two instances show same databases
Next
From: Raghavendra
Date:
Subject: Re: Two instances show same databases