From: | Marinos Yannikos <mjy(at)geizhals(dot)at> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND variable?) |
Date: | 2004-10-25 19:44:49 |
Message-ID: | 417D57B1.8010507@geizhals.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi,
I'm probably misintepreting the documented equivalence of PERFORM and
SELECT INTO as far as the special variable FOUND is concerned, but the
following 2 definitions do not seem to produce the same result.
create table blup ( t1 text, t2 text );
create function blup_unique2 (text,text) returns boolean as 'begin
perform (select 1 from blup where t1=$1 or t1=$2 or t2=$1 or t2=$2 or
$1=$2 limit 1); return NOT FOUND; end' LANGUAGE plpgsql;
create function blup_unique3 (text,text) returns boolean as 'declare x
record; begin select into x 1 from blup where t1=$1 or t1=$2 or t2=$1 or
t2=$2 or $1=$2 limit 1; return NOT FOUND; end' LANGUAGE plpgsql;
The first will always produce false, i.e. apparently the subquery used
by PERFORM will not set the variable FOUND as expected. Is this correct?
(btw.: I'm trying a few ways to ensure that all values in both t1 and t2
are unique:
alter table blup add constraint check (blup_unique3(t1,t2));
- perhaps there are more elegant ways, any suggestions?)
Regards,
Marinos
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-10-25 20:02:27 | Re: plpgsql: PERFORM vs. SELECT INTO (PERFORM not setting FOUND variable?) |
Previous Message | Jan Wieck | 2004-10-25 17:19:02 | Re: "copy from" in "create function" |