pgsql: Fix possible loss of sync between rectypeid and underlying PLpgS
От | Tom Lane |
---|---|
Тема | pgsql: Fix possible loss of sync between rectypeid and underlying PLpgS |
Дата | |
Msg-id | E1ikZbt-0007eU-IK@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix possible loss of sync between rectypeid and underlying PLpgSQL_type. When revalidate_rectypeid() acts to update a stale record type OID in plpgsql's data structures, it fixes the active PLpgSQL_rec struct as well as the PLpgSQL_type struct it references. However, the latter is shared across function executions while the former is not. In a later function execution, the PLpgSQL_rec struct would be reinitialized by copy_plpgsql_datums and would then contain a stale type OID, typically leading to "could not open relation with OID NNNN" errors. revalidate_rectypeid() can easily fix this, fortunately, just by treating typ->typoid as authoritative. Per report and diagnosis from Ashutosh Sharma, though this is not his suggested fix. Back-patch to v11 where this code came in. Discussion: https://postgr.es/m/CAE9k0Pkd4dZwt9J5pS9xhJFWpUtqs05C9xk_GEwPzYdV=GxwWg@mail.gmail.com Branch ------ REL_11_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/ee206cb830eff45179afde06c93643210b52b196 Modified Files -------------- src/pl/plpgsql/src/expected/plpgsql_record.out | 6 ++++++ src/pl/plpgsql/src/pl_exec.c | 11 ++++++++++- src/pl/plpgsql/src/sql/plpgsql_record.sql | 1 + 3 files changed, 17 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: