Segfault with before triggers and after triggers with a WHEN clause.

Поиск
Список
Период
Сортировка
От Yoran Heling
Тема Segfault with before triggers and after triggers with a WHEN clause.
Дата
Msg-id CADL1CPghUq99wiKeAXja3oUBBma9ksiSQe3fR_b5fCa0nR3KXw@mail.gmail.com
обсуждение исходный текст
Ответы Re: Segfault with before triggers and after triggers with a WHEN clause.  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Hello,

After upgrading to PostgreSQL 9.0.4 (don't remember exactly where I
came from, but I believe it was an earlier 9.0.x), postgresql began to
segault on certain queries. I have managed to isolate the problem and
can reproduce the crash on a newly created and empty database with the
following queries:

CREATE TABLE some_t (some_col boolean NOT NULL);
CREATE OR REPLACE FUNCTION trig_before() RETURNS trigger AS $$
  BEGIN RETURN NEW; END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION trig_after() RETURNS trigger AS $$
  BEGIN RETURN NULL; END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trig_before BEFORE UPDATE ON some_t FOR EACH ROW
EXECUTE PROCEDURE trig_before();
CREATE TRIGGER trig_aftera  AFTER UPDATE ON some_t FOR EACH ROW WHEN
(NOT OLD.some_col AND NEW.some_col) EXECUTE PROCEDURE trig_after();
CREATE TRIGGER trig_afterb  AFTER UPDATE ON some_t FOR EACH ROW WHEN
(NOT NEW.some_col) EXECUTE PROCEDURE trig_after();
INSERT INTO some_t VALUES (TRUE);
UPDATE some_t SET some_col = TRUE;

This is on a 64bit Arch Linux system with the postgresql-9.0.4-4
package and a linux-3.0.1 kernel.

Here is a backtrace of the crash, although I suppose it might not be
very useful without debugging symbols:

#0  0x0000000000450dca in slot_getattr ()
#1  0x000000000054787c in ?? ()
#2  0x000000000054de11 in ExecQual ()
#3  0x000000000052dbf2 in ?? ()
#4  0x000000000052de9a in ?? ()
#5  0x0000000000532035 in ExecARUpdateTriggers ()
#6  0x000000000055b341 in ExecModifyTable ()
#7  0x0000000000547518 in ExecProcNode ()
#8  0x0000000000544d5a in standard_ExecutorRun ()
#9  0x00000000005fbf01 in ?? ()
#10 0x00000000005fc114 in ?? ()
#11 0x00000000005fccc2 in PortalRun ()
#12 0x00000000005f8f3c in PostgresMain ()
#13 0x00000000005c9ee8 in ?? ()
#14 0x00000000005ca7dc in PostmasterMain ()
#15 0x000000000044f397 in main ()

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6166: configure from source fails with 'This platform is not thread-safe.' but was actually /tmp perms
Следующее
От: "Hitoshi Harada"
Дата:
Сообщение: BUG #6172: DROP EXTENSION error without CASCADE