Es hört sich so an, als ob Sie wahrscheinlich das Server Programming Interface (SPI) um eine gespeicherte Prozedur als C-Sprachfunktion zu implementieren läuft im PostgreSQL-Back-End.
Verwenden Sie SPI_connect
zum Einrichten des SPI.
Jetzt SPI_prepare_cursor
eine Abfrage, dann SPI_cursor_open
es. SPI_cursor_fetch
Zeilen daraus und SPI_cursor_close
es wenn fertig. Beachten Sie, dass SPI_cursor_fetch
ermöglicht Ihnen das Abrufen von Stapeln von Zeilen.
SPI_finish
zu bereinigen, wenn Sie fertig sind.
Sie können die Ergebniszeilen während der Generierung in einen Tuplestore zurückgeben, sodass Sie nicht die gesamte Tabelle im Speicher erstellen müssen. Sehen Sie sich Beispiele in einer der Set-Returning-Funktionen im PostgreSQL-Quellcode an. Vielleicht möchten Sie sich auch SPI_returntuple
Hilfsfunktion.
Siehe auch:C-Sprachfunktionen und SQL erweitern .
Wenn maximale Geschwindigkeit von Interesse ist, möchte Ihr Client möglicherweise das libpq-Binärprotokoll über libpqtypes verwenden so empfängt es die von Ihrem serverseitigen SPI-verwendenden Verfahren erzeugten Daten mit minimalem Overhead.