Trigger function returning null
In backend/commands/trigger.c the following can be found:
/*
* Trigger protocol allows function to return a null pointer,
* but NOT to set the isnull result flag.
*/
if (fcinfo.isnull)
ereport(ERROR,
Why?
Regards,
Thomas Hallgren
Thomas Hallgren <thhal@mailblocks.com> writes:
In backend/commands/trigger.c the following can be found:
/*
* Trigger protocol allows function to return a null pointer,
* but NOT to set the isnull result flag.
*/
if (fcinfo.isnull)
ereport(ERROR,
Why?
Why not?
The real answer is "it's historical and I didn't see any need to
change it". But one could argue that a function returning NULL
doesn't know it's supposed to be a trigger.
regards, tom lane
Tom Lane wrote:
Why not?
The real answer is "it's historical and I didn't see any need to
change it". But one could argue that a function returning NULL
doesn't know it's supposed to be a trigger.
The reason I ask is that this behavior just bit me in PL/Java. Triggers
returning null didn't work. I've fixed it at my end by simply forcing
the isnull to false for triggers. I just wanted to know if there was
some deeper thought behind this that could result in side effects.
Perhaps you should either change this behavior or make a note it in
"Writing Trigger Functions in C"? Even if the documented example use a
local isnull, it's not evident that you have to do that.
Regards,
Thomas Hallgren
Thomas Hallgren <thhal@mailblocks.com> writes:
Perhaps you should either change this behavior or make a note it in
"Writing Trigger Functions in C"?
Okay, I've changed the text thusly:
diff -r1.35 trigger.sgml
434,435c434,437
< A trigger function must return either <symbol>NULL</> or a
< <structname>HeapTuple</> pointer. Be careful to return either
---
A trigger function must return either a
<structname>HeapTuple</> pointer or a <symbol>NULL</> pointer
(<emphasis>not</> a SQL NULL, that is, do not set isNull true).
Be careful to return either
regards, tom lane
Import Notes
Reply to msg id not found: thhal-0in4AakWQIOrPbmIXBKd5LTwtR7kn@mailblocks.com