Bug in triggers

Поиск
Список
Период
Сортировка
От Oleg Serov
Тема Bug in triggers
Дата
Msg-id cec7c6df0809260327w6e80490bxba933c762c94f77d@mail.gmail.com
обсуждение исходный текст
Ответы Re: Bug in triggers  ("Oleg Serov" <serovov@gmail.com>)
Список pgsql-bugs
SQL code:


ROLLBACK;
BEGIN;
CREATE TYPE "composite_type" AS (
    "typename" VARCHAR
);


CREATE TABLE "buggy" (
    "id" BIGINT NOT NULL,
    "bug" "composite_type",
    CONSTRAINT "buggy_pkey" PRIMARY KEY("id")
) WITH OIDS;

INSERT INTO buggy (id, bug) VALUES
    (100196418052926086, NULL);

CREATE OR REPLACE FUNCTION "public"."test_bug" () RETURNS trigger AS
$body$
DECLARE
    tmp_old buggy%rowtype;
    tmp_new buggy%rowtype;
BEGIN
    RAISE NOTICE 'OLD: %', OLD;
    RAISE NOTICE 'NEW: %', NEW;

        tmp_old := OLD;
        RAISE NOTICE 'TMP OLD: %', tmp_old;

    RAISE NOTICE 'TMP OLD = OLD => %', tmp_old::text = OLD::text;

        tmp_old.id := NEW.id;
        tmp_new := NEW;

    RAISE NOTICE 'TMP OLD: %', tmp_old;
    RAISE NOTICE 'TMP NEW: %', tmp_new;

    RAISE NOTICE 'TMP OLD = TMP NEW => %', tmp_old::text = tmp_new::text;
    RAISE NOTICE 'TMP OLD = NEW => %', tmp_old::text = NEW::text;



        IF (tmp_old::text <> tmp_new::text) <> (tmp_old::text <> NEW::text)
THEN
            RAISE EXCEPTION 'PGSQL BUG!';
        END IF;
    RETURN OLD;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

CREATE TRIGGER "t_bug" BEFORE UPDATE
ON buggy FOR EACH ROW
EXECUTE PROCEDURE "test_bug"();


UPDATE buggy SET id =  100112779830304388  WHERE  100196418052926086  = id;
/**
NOTICE:  OLD: (100196418052926086,)
NOTICE:  NEW: (100112779830304388,)
NOTICE:  TMP OLD: (100196418052926086,"()")
NOTICE:  TMP OLD = OLD => f
NOTICE:  TMP OLD: (100112779830304388,"()")
NOTICE:  TMP NEW: (100112779830304388,"()")
NOTICE:  TMP OLD = TMP NEW => t
NOTICE:  TMP OLD = NEW => f -- BUG!!!

**/

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: ERROR: unexpected data beyond EOF in block XXXXX of relation "file"
Следующее
От: "Oleg Serov"
Дата:
Сообщение: Re: Bug in triggers