Re: Invoking SQL function while doing CREATE OR REPLACE on it

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Invoking SQL function while doing CREATE OR REPLACE on it
Дата
Msg-id 3031533.1683155988@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Invoking SQL function while doing CREATE OR REPLACE on it  (Erik Wienhold <ewie@ewie.name>)
Список pgsql-general
Erik Wienhold <ewie@ewie.name> writes:
> On 03/05/2023 20:17 CEST Nagendra Mahesh (namahesh) <namahesh@cisco.com> wrote:
>> I have a Postgres 14.4 cluster (AWS Aurora) to which I connect from my
>> application using JDBC.

Aurora uses, I believe, some other storage engine entirely than
community Postgres has.

>> Only in this tiny time window, few transactions fail with the following error:
>> ERROR: function bar(arg1 => text, arg2 => text) does not exist
>> Hint: No function matches the given name and argument types. You might need to add explicit type casts.

> There's also a race condition bug in v14.4 that may be relevant.  It got fixed
> in v14.5.  See "Fix race condition when checking transaction visibility" in
> https://www.postgresql.org/docs/14/release-14-5.html.

That race could easily explain this symptom: during the update, there
are two versions of the function's pg_proc row, and it could be that
both of them appear "dead" to an onlooker transaction if one of them
is inspected during the race window.  Then the onlooker would find
no live version of the row and report that it doesn't exist.

But having said that, it's not clear to me whether Aurora's storage
engine shares this bug with community PG, or you're seeing some
independent bug of theirs that happens to have a similar symptom.
It's even less clear whether AWS would have applied the fix yet if it
is a shared bug.  You really need to discuss this with AWS support.

            regards, tom lane



В списке pgsql-general по дате отправления:

Предыдущее
От: Devrim Gündüz
Дата:
Сообщение: Re: RHEL repo package crc mismatches
Следующее
От: Jeff Janes
Дата:
Сообщение: Re: [EXT] Re: Why using a partial index is doing slightly more logical I/O than a normal index