Re: PL/PgSQL and NULL

From: Jan Wieck <janwieck(at)Yahoo(dot)com>
To: Jie Liang <jliang(at)ipinc(dot)com>
Cc: Andrew Perrin <aperrin(at)socrates(dot)berkeley(dot)edu>, pgsql-sql(at)postgresql(dot)org
Subject: Re: PL/PgSQL and NULL
Date: 2001-03-15 15:02:51
Message-ID: 200103151502.KAA03405@jupiter.jw.home
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Jie Liang wrote:
>
> I think that is a bug in plpgsql,
> when passing a NULL into a plpgsql defined function, it treats
> other arguments as NULL also, you can use raise notice in
> your function to watch this buggy thing(see following).

You're blaming the wrong code for it. It's an insufficience
in the pre v7.1 function manager, not a bug in PL/pgSQL's
handler.

Jan

>
> Jie LIANG
>
> St. Bernard Software
>
> 10350 Science Center Drive
> Suite 100, San Diego, CA 92121
> Office:(858)320-4873
>
> jliang(at)ipinc(dot)com
> www.stbernard.com
> www.ipinc.com
>
> On Sun, 11 Mar 2001, Andrew Perrin wrote:
>
> > Greetings-
> >
> > I'm trying to write what should be a simple function that returns the
> > minimim of two integers. The complication is that when one of the two
> > integers is NULL, it should return the other; and when both are NULL, it
> > should return NULL. Here's what I've written:
> >
> > CREATE FUNCTION min(int4, int4)
> > RETURNS int4
> > AS 'BEGIN
> raise notice ''arg1 is % arg2 is %'',$1,$2; -- debugging
> > IF $1 ISNULL
> > THEN
> > RETURN $2;
> > ELSE
> > IF $2 ISNULL
> > THEN
> > RETURN $1;
> > ELSE
> > IF $1 > $2
> > THEN
> > RETURN $2;
> > ELSE
> > RETURN $1;
> > END IF;
> > END IF;
> > END IF;
> > END;'
> > LANGUAGE 'plpgsql';
> >
> > and here's what I get:
> >
> > fgdata=# select min(10, NULL);
> > min
> > -----
> >
> > (1 row)
> >
> > so it looks like, for whatever reason, it's returning NULL when it should
> > be returning 10. Can anyone offer advice?
> >
> > Thanks.
> >
> > ----------------------------------------------------------------------
> > Andrew J Perrin - Ph.D. Candidate, UC Berkeley, Dept. of Sociology
> > Chapel Hill, North Carolina, USA - http://demog.berkeley.edu/~aperrin
> > aperrin(at)socrates(dot)berkeley(dot)edu - aperrin(at)igc(dot)apc(dot)org
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> > (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
> >
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#================================================== JanWieck(at)Yahoo(dot)com #

_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-03-15 15:59:02 Re: Help with UPDATE syntax
Previous Message Sondaar Roelof 2001-03-15 12:32:24 RE: Some questions about PLpgSql