Re: PL/PgSQL and NULL - Mailing list pgsql-sql
From | Jan Wieck |
---|---|
Subject | Re: PL/PgSQL and NULL |
Date | |
Msg-id | 200103151502.KAA03405@jupiter.jw.home Whole thread Raw |
In response to | Re: PL/PgSQL and NULL (Jie Liang <jliang@ipinc.com>) |
List | 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@ipinc.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@socrates.berkeley.edu - aperrin@igc.apc.org > > > > > > ---------------------------(end of broadcast)--------------------------- > > TIP 2: you can get off all lists at once with the unregister command > > (send "unregister YourEmailAddressHere" to majordomo@postgresql.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@Yahoo.com # _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com