Search Postgresql Archives

cursor_to_xml iteration of a table

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all -

I'm currently wrestling with generating XML output from a table that has grown to a size where simply using table_to_xml or query_to_xml is no longer feasible due to the whole result set getting loaded into memory. I've been getting familiar with cursors and the cursor_to_xml command and have two issues that I can't seem to figure out:

1) When using cursor_to_xml in a plpgsql function, the FOUND variable does not seem to get set, so there is no way to exit a loop that is iterating over the cursor. Below is the function code; it loops indefinitely when it is run.

create or replace function getxml() returns setof xml as $$
    declare
        resultxml xml;
        curs refcursor;
    begin
        open curs for select * from groups;
        loop
            select cursor_to_xml(curs,1000, false, false, '') into resultxml;
            return next resultxml;
            exit when not found;
        end loop;
    end;
$$ language plpgsql;


2) Assuming the above issue is fixed, how can I go about ensuring that the result set from the function isn't stored in memory until the function completes? Ideally, I'd like to write the output to a file with each iteration of the cursor, but I know file IO is a big no-no with plpgsql since transactions can't manage the state of files being written.

Any insight is most appreciated. Thanks!


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux