Thread: bug.. ?

bug.. ?

From
Jeff MacDonald
Date:
A person recent pointed this out to me..

seems a bit funny, because limit 1 pretty much
say's it't not gonna return multiple values.

jeff


> This doesn't work:
>
> CREATE FUNCTION vuln_port(int4) RETURNS int4 AS 'SELECT port FROM
> i_host_vuln WHERE vuln = $1 GROUP BY port ORDER BY count(port) DESC
> LIMIT 1' LANGUAGE 'sql';
>
> The result:
> ERROR: function declared to return int4 returns multiple values in final
> retrieve
>
>
> I'm running 7.0.2.


Jeff MacDonald,

-----------------------------------------------------
PostgreSQL Inc        | Hub.Org Networking Services
jeff@pgsql.com        | jeff@hub.org
www.pgsql.com        | www.hub.org
1-902-542-0713        | 1-902-542-3657
-----------------------------------------------------
Facsimile : 1 902 542 5386
IRC Nick  : bignose
PGP Public Key : http://bignose.hub.org/public.txt



Re: bug.. ?

From
Tom Lane
Date:
Jeff MacDonald <jeff@hub.org> writes:
> A person recent pointed this out to me..
> seems a bit funny, because limit 1 pretty much
> say's it't not gonna return multiple values.

>> CREATE FUNCTION vuln_port(int4) RETURNS int4 AS 'SELECT port FROM
>> i_host_vuln WHERE vuln = $1 GROUP BY port ORDER BY count(port) DESC
>> LIMIT 1' LANGUAGE 'sql';
>> 
>> The result:
>> ERROR: function declared to return int4 returns multiple values in final
>> retrieve

It's a combination of a bug and a poorly worded error message.  It is
complaining not about rows, but about the extra column needed to do the
ORDER BY.  The error check forgets to ignore this 'hidden' column.

Fixed some time ago for 7.1...
        regards, tom lane