Parece que probablemente quiera usar la interfaz de programación del servidor (SPI) para implementar un procedimiento almacenado como una función de lenguaje C ejecutándose dentro del back-end de PostgreSQL.
Use SPI_connect
para configurar el SPI.
Ahora SPI_prepare_cursor
una consulta, luego SPI_cursor_open
eso. SPI_cursor_fetch
filas de él y SPI_cursor_close
cuando esté hecho. Tenga en cuenta que SPI_cursor_fetch
le permite obtener lotes de filas.
SPI_finish
para limpiar cuando haya terminado.
Puede devolver las filas de resultados a un tuplestore a medida que las genera, evitando la necesidad de construir toda la tabla en la memoria. Vea ejemplos en cualquiera de las funciones de devolución de conjuntos en el código fuente de PostgreSQL. También puede consultar el SPI_returntuple
función auxiliar.
Consulte también:Funciones del lenguaje C y extendiendo SQL .
Si le interesa la velocidad máxima, es posible que su cliente quiera usar el protocolo binario libpq a través de libpqtypes por lo que recibe los datos producidos por su procedimiento de uso de SPI del lado del servidor con una sobrecarga mínima.