Checking for undefined in Perl interface code?
PL/Perl tries to handle an "undef" result from a Perl function (which
should convert to a SQL NULL) with code like so:
/* XXX is this the approved way to check for an undef result? */
if (perlret == &PL_sv_undef)
{
retval = (Datum) 0;
fcinfo->isnull = true;
}
else
{
// handle non-null result
}
But I find that it doesn't work, at least not on RH Linux 7.2 with
perl 5.6.0. The if-test fails to notice undef results.
Anyone know what the correct way to do this is?
regards, tom lane
man perlguts:
If you want to know if this variable (or any other SV) is
actually defined, you can call:
SvOK(SV*)
The scalar undef value is stored in an SV instance called
PL_sv_undef. Its address can be used whenever an SV* is
needed.
May be:
if (! (SvOK(perlret) && perlret != &PL_sv_undef) ) {...
Tom Lane wrote:
PL/Perl tries to handle an "undef" result from a Perl function (which
should convert to a SQL NULL) with code like so:/* XXX is this the approved way to check for an undef result? */
if (perlret == &PL_sv_undef)
{
retval = (Datum) 0;
fcinfo->isnull = true;
}
else
{
// handle non-null result
}But I find that it doesn't work, at least not on RH Linux 7.2 with
perl 5.6.0. The if-test fails to notice undef results.Anyone know what the correct way to do this is?
regards, tom lane
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster
--
Teodor Sigaev
teodor@stack.net