Re: Selecting from table into an array var

Поиск
Список
Период
Сортировка
От Postgres User
Тема Re: Selecting from table into an array var
Дата
Msg-id b88c3460912191030l212ec5aaq9d50194ed3d1ded6@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Selecting from table into an array var  (Merlin Moncure <mmoncure@gmail.com>)
Ответы Re: Selecting from table into an array var  (Merlin Moncure <mmoncure@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Jaime Casanova
Дата:
Сообщение: Re: AccessShareLock question
Следующее
От: Postgres User
Дата:
Сообщение: How to call a function that returns a refcursor ?