Bug 3883 revisited
От | Heikki Linnakangas |
---|---|
Тема | Bug 3883 revisited |
Дата | |
Msg-id | 48247ED6.3030105@enterprisedb.com обсуждение исходный текст |
Ответы |
Re: Bug 3883 revisited
Re: Bug 3883 revisited |
Список | 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
В списке pgsql-hackers по дате отправления: