John Hansen posted a C implementaion of the UNNEST function that does
this.  It is in the archives here:
http://archives.postgresql.org/pgsql-hackers/2004-11/msg00158.php and
http://archives.postgresql.org/pgsql-hackers/2004-11/msg00327.php . 
I've been using it for the last few months and it's been working great
for me.

On Mon, 17 Jan 2005 14:03:56 +0000, [EMAIL PROTECTED]
<[EMAIL PROTECTED]> wrote:
> I have a function to convert a single dimension array to a row set
> 
> CREATE OR REPLACE FUNCTION arraytotable(anyarray)
>   RETURNS SETOF anyelement AS
> '
> DECLARE
> 
> theData ALIAS FOR $1;
> count integer;
> start integer;
> 
> BEGIN
>       start :=array_lower(theData,1);
>       count :=array_upper(theData,1);
>       IF start is not null THEN
>       FOR i IN start..count LOOP
>             RETURN NEXT theData[i];
>       END LOOP;
>       END IF;
> 
> RETURN;
> END
> '
>   LANGUAGE 'plpgsql' IMMUTABLE STRICT;
> 
> Is there a more efficient way I can do this and are there any user defined
> C functions available for this sort of array manipulation?
> 
> Thanks for any help
> Laurie
> 
> :.________________
> CONFIDENTIALITY : This  e-mail  and  any attachments are confidential and
> may be privileged. If  you are not a named recipient, please notify the
> sender immediately and do not disclose the contents to another person, use
> it for any purpose or store or copy the information in any medium.
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faqs/FAQ.html
> 


-- 
Mike Rylander
[EMAIL PROTECTED]
GPLS -- PINES Development
Database Developer
http://open-ils.org

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to