Potentially undocumented behaviour change in Postgres 11 concerningOLD record in an after insert trigger

Поиск
Список
Период
Сортировка
От Kristjan Tammekivi
Тема Potentially undocumented behaviour change in Postgres 11 concerningOLD record in an after insert trigger
Дата
Msg-id CAABK7uL-uC9ZxKBXzo_68pKt7cECfNRv+c35CXZpjq6jCAzYYA@mail.gmail.com
обсуждение исходный текст
Ответы RE: Potentially undocumented behaviour change in Postgres 11 concerning OLD record in an after insert trigger  ("Charles Clavadetscher" <clavadetscher@swisspug.org>)
Re: Potentially undocumented behaviour change in Postgres 11 concerning OLD record in an after insert trigger  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Potentially undocumented behaviour change in Postgres 11 concerning OLD record in an after insert trigger  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi,

I've noticed a change in the behaviour in triggers / hstores in Postgres 11.1 when compared to Postgres 10.5.
The following won't work on Postgres 10.5 but in Postgres 11.1 it works just fine:

CREATE EXTENSION hstore;

CREATE TABLE _tmp_test1 (id serial PRIMARY KEY, val INTEGER);
CREATE TABLE _tmp_test1_changes (id INTEGER, changes HSTORE);

CREATE FUNCTION test1_trigger ()
RETURNS TRIGGER
LANGUAGE plpgsql
AS
$BODY$
BEGIN
INSERT INTO _tmp_test1_changes (id, changes) VALUES (NEW.id, hstore(OLD) - hstore(NEW));
RETURN NEW;
END
$BODY$;

CREATE TRIGGER table_update AFTER INSERT OR UPDATE ON _tmp_test1
FOR EACH ROW EXECUTE PROCEDURE test1_trigger();

INSERT INTO _tmp_test1 (val) VALUES (5);
ERROR:  record "old" is not assigned yet
DETAIL:  The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT:  SQL statement "INSERT INTO _tmp_test1_changes (id, changes) VALUES (NEW.id, hstore(OLD) - hstore(NEW))"
PL/pgSQL function test1_trigger() line 3 at SQL statement

I couldn't find anything about this in the release notes (https://www.postgresql.org/docs/11/release-11.html), but maybe I just didn't know what to look for.

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

Предыдущее
От: Andrew Gierth
Дата:
Сообщение: Re: Function `set_config` doesn't work in with query?
Следующее
От: "Charles Clavadetscher"
Дата:
Сообщение: RE: Potentially undocumented behaviour change in Postgres 11 concerning OLD record in an after insert trigger