Re: Selecting from table into an array var - Mailing list pgsql-general

From Postgres User
Subject Re: Selecting from table into an array var
Date
Msg-id b88c3460912191030l212ec5aaq9d50194ed3d1ded6@mail.gmail.com
Whole thread Raw
In response to Re: Selecting from table into an array var  (Merlin Moncure <mmoncure@gmail.com>)
Responses Re: Selecting from table into an array var  (Merlin Moncure <mmoncure@gmail.com>)
List pgsql-general
On Sat, Dec 19, 2009 at 6:56 AM, Merlin Moncure <mmoncure@gmail.com> wrote:
> On Sat, Dec 19, 2009 at 1:05 AM, Postgres User
> <postgres.developer@gmail.com> wrote:
>>
>> BEGIN
>> SELECT array_agg(category_id) INTO cat_list FROM (
>>         WITH RECURSIVE subcategory AS
>>                (
>>                SELECT * FROM category
>>                WHERE category_id = p_category_id
>>
>>                UNION ALL
>>
>>                        SELECT c.*
>>                        FROM category AS c
>>                        INNER JOIN subcategory AS sc ON (c.category_id = sc.parent_id)
>>                )
>>                SELECT category_id FROM subcategory
>>                ORDER BY Coalesce(parent_id, 0) DESC
>>  ) c;
>> END;
>
> works for me (i didn't put any data in though).  the above is probably
> better written using array() notation as I mentioned above:
>
> SELECT array
> (
>  WITH RECURSIVE subcategory AS
>  (
>    SELECT * FROM category
>      WHERE category_id = p_category_id
>    UNION ALL
>      SELECT c.*
>        FROM category AS c
>        INNER JOIN subcategory AS sc ON (c.category_id = sc.parent_id)
>  )
>  SELECT category_id FROM subcategory
>  ORDER BY Coalesce(parent_id, 0) DESC
> ) INTO cat_list;
>
> Also if you want more than just the ID stacked in the array the above
> can be reworked in to an array of the 'category' type.
>
> merlin

Thanks, your syntax does compile and run.

This is where it gets interesting.  With your syntax (and variations
of it), I'm able to successfully compile and execute.  However, as
soon as I add a dozen rows to the table, the query failes to complete.
 It runs until timing out.
This prolem does not occur when I remove the SELECT INTO ARRAY
statement and simply run the recursive query.

Has anyone else seen this behavior?

pgsql-general by date:

Previous
From: Jaime Casanova
Date:
Subject: Re: AccessShareLock question
Next
From: Postgres User
Date:
Subject: How to call a function that returns a refcursor ?