Zní to, jako byste pravděpodobně chtěli použít server programming interface (SPI) implementovat uloženou proceduru jako funkci jazyka C běžící uvnitř back-endu PostgreSQL.
Použijte SPI_connect
pro nastavení SPI.
Nyní SPI_prepare_cursor
dotaz a poté SPI_cursor_open
to. SPI_cursor_fetch
řádky z něj a SPI_cursor_close
až bude hotovo. Všimněte si, že SPI_cursor_fetch
umožňuje načíst dávky řádků.
SPI_finish
po dokončení vyčistit.
Výsledné řádky můžete vrátit do úložiště tuplestore při jejich generování, čímž se vyhnete nutnosti sestavovat celou tabulku v paměti. Podívejte se na příklady v kterékoli z funkcí vracejících sadu ve zdrojovém kódu PostgreSQL. Můžete se také podívat na SPI_returntuple
pomocná funkce.
Viz také:Funkce jazyka C a rozšíření SQL .
Pokud vás zajímá maximální rychlost, váš klient může chtít použít binární protokol libpq prostřednictvím libpqtypes takže přijímá data vytvořená vaší procedurou využívající SPI na straně serveru s minimální režií.