PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Alcançar transações de alto desempenho ao estender o PostgreSQL com funções C


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.