Re: LOCK TABLE is not allowed in a non-volatile function
От | Tom Lane |
---|---|
Тема | Re: LOCK TABLE is not allowed in a non-volatile function |
Дата | |
Msg-id | 8866.1334778445@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | 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
Re: LOCK TABLE is not allowed in a non-volatile function |
Список | 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 по дате отправления: