From: | "Heikki Linnakangas" <heikki(at)enterprisedb(dot)com> |
---|---|
To: | "PostgreSQL-development" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Bug 3883 revisited |
Date: | 2008-05-09 16:41:58 |
Message-ID: | 48247ED6.3030105@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
The "TRUNCATE table while we're holding references to it" bug (3883), is
causing an assertion failure on 8.2, when the TRUNCATE is called in a
trigger:
Script:
CREATE TABLE proc(n int);
INSERT INTO proc VALUES (9);
CREATE OR REPLACE FUNCTION deltrig() RETURNS trigger LANGUAGE plpgsql AS $$
BEGIN
EXECUTE 'TRUNCATE TABLE proc';
RETURN OLD;
end;
$$;
CREATE TRIGGER trg_proc BEFORE DELETE ON PROC FOR EACH ROW EXECUTE
PROCEDURE deltrig();
DELETE FROM proc WHERE n=9;
Error message:
TRAP: FailedAssertion("!(( ((void) ((bool) ((! assert_enabled) || !
(!(((void*)(lp) != ((void *)0)))) ||
(ExceptionalCondition("!(((void*)(lp) != ((void *)0)))",
("FailedAssertion"), "heapam.c", 1595))))), (bool) (((lp)->lp_flags &
0x01) != 0) ))", File: "heapam.c", Line: 1595)
With assertions disabled, you get an "attempted to delete invisible
tuple" error, but it seems like good luck that it doesn't lead to a crash.
I think we need to backpatch the fix for this...
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2008-05-09 16:59:41 | Re: Re: [COMMITTERS] pgsql: Improve logic for finding object files on OBJS lines in contrib |
Previous Message | Magnus Hagander | 2008-05-09 16:37:15 | Re: Re: [COMMITTERS] pgsql: Improve logic for finding object files on OBJS lines in contrib |