| From: | Euler Taveira de Oliveira <euler(at)timbira(dot)com> |
|---|---|
| To: | Marcelo Costa <marcelojscosta(at)gmail(dot)com> |
| Cc: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Delete cascade with three levels bug ? |
| Date: | 2009-10-27 14:41:26 |
| Message-ID: | 4AE70696.9050501@timbira.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Marcelo Costa escreveu:
> Hi, hackers
>
> I have a problem at PostgreSQL 8.3.5 (Slackware Server and Win 2003
> Server) SO independent.
>
> When run the scripts below I receive the error:
>
This is not a bug. There are many ways to shoot yourself in the foot; and it
is one of them...
> UPDATE pg_trigger SET tgdeferrable = TRUE, tginitdeferred = TRUE;
>
This query will defer all of the triggers, including the cascade ones. If you
compiles with --enable-cassert you will see:
TRAP: FailedAssertion("!(afterTriggers->query_depth >= 0)", Arquivo:
"/a/pgsql/src/backend/commands/trigger.c", Linha: 3893)
Why don't you use the syntax (DEFERRABLE and INITIALLY DEFERRED)? That will do
the Right Thing (TM).
BTW, is it worth preventing such a crash putting an elog message in trigger.c?
--
Euler Taveira de Oliveira
http://www.timbira.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2009-10-27 14:50:23 | FOR UPDATE versus WITH --- change 8.4 too? |
| Previous Message | Marcelo Costa | 2009-10-27 14:05:22 | Delete cascade with three levels bug ? |