Parece que você provavelmente deseja usar a interface de programação de servidor (SPI) para implementar um procedimento armazenado como uma função de linguagem C rodando dentro do back-end do PostgreSQL.
Use
SPI_connect
para configurar o SPI. Agora
SPI_prepare_cursor
uma consulta, então SPI_cursor_open
isto. SPI_cursor_fetch
linhas dele e SPI_cursor_close
isso quando feito. Observe que SPI_cursor_fetch
permite buscar lotes de linhas. SPI_finish
para limpar quando terminar. Você pode retornar as linhas de resultado em um tuplestore à medida que as gera, evitando a necessidade de construir a tabela inteira na memória. Veja exemplos em qualquer uma das funções de retorno de conjunto no código-fonte do PostgreSQL. Você também pode consultar o
SPI_returntuple
função auxiliar. Veja também:Funções da linguagem C e estender SQL .
Se a velocidade máxima for de interesse, seu cliente pode querer usar o protocolo binário libpq via libpqtypes portanto, ele recebe os dados produzidos pelo procedimento de uso de SPI do lado do servidor com sobrecarga mínima.