tg_trigtuple not NULL in AFTER STATEMENT triggers?

Started by Michael Fuhrover 19 years ago4 messages
#1Michael Fuhr
mike@fuhr.org

I've noticed that tg_trigtuple and tg_newtuple aren't cleared to
NULL in AFTER STATEMENT triggers. Is that an oversight, or does
the code intentionally not bother because trigger functions shouldn't
be referencing those members in statement-level triggers anyway, or
is there some other reason?

--
Michael Fuhr

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Fuhr (#1)
Re: tg_trigtuple not NULL in AFTER STATEMENT triggers?

Michael Fuhr <mike@fuhr.org> writes:

I've noticed that tg_trigtuple and tg_newtuple aren't cleared to
NULL in AFTER STATEMENT triggers. Is that an oversight,

Probably. Send a patch?

regards, tom lane

#3Michael Fuhr
mike@fuhr.org
In reply to: Tom Lane (#2)
Re: tg_trigtuple not NULL in AFTER STATEMENT triggers?

On Mon, Jul 31, 2006 at 11:12:14AM -0400, Tom Lane wrote:

Michael Fuhr <mike@fuhr.org> writes:

I've noticed that tg_trigtuple and tg_newtuple aren't cleared to
NULL in AFTER STATEMENT triggers. Is that an oversight,

Probably. Send a patch?

Sure. Is the switch in AfterTriggerExecute() around line 2116 in
commands/trigger.c close to where I should be looking?

--
Michael Fuhr

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Fuhr (#3)
Re: tg_trigtuple not NULL in AFTER STATEMENT triggers?

Michael Fuhr <mike@fuhr.org> writes:

On Mon, Jul 31, 2006 at 11:12:14AM -0400, Tom Lane wrote:

Michael Fuhr <mike@fuhr.org> writes:

I've noticed that tg_trigtuple and tg_newtuple aren't cleared to
NULL in AFTER STATEMENT triggers. Is that an oversight,

Probably. Send a patch?

Sure. Is the switch in AfterTriggerExecute() around line 2116 in
commands/trigger.c close to where I should be looking?

Yeah, it looks like some attention needs to be paid to whether
ate_oldctid and ate_newctid were supplied, rather than just blindly
passing pointers to possibly-uninitialized local structs.

Offhand I think you could remove the "switch" entirely in favor of
driving the setup of these fields off the "if (ItemPointerIsValid(..."
tests.

regards, tom lane