Funciones Asociadas con el Comando COPY

El comando COPY en PostgreSQL tiene opciones para leer o escribir en la conexión de red utilizada para libpq. Por ello, se necesitan funciones para acceder a su conexión de red directamente, de forma que las aplicaciones puedan obtener ventajas de esta capacidad.

Estas funciones sólo se deberían utilizar tras obtener un objeto resultado PGRES_COPY_OUT o PGRES_COPY_IN a partir de PQexec o PQgetResult.

Cuando se está utilizando PQgetResult, la aplicación debería responder a un resultado PGRES_COPY_OUT ejecutando repetidamente PQgetline, seguido de PQendcopy una vez se detecta la línea de terminación. Debería entonces volver al bucle PQgetResult loop until hasta que PQgetResult devuelva NULL. Similarmente, un resultado PGRES_COPY_IN se procesa por una serie de llamadas a PQputline seguidas por PQendcopy, y volviendo entonces al bucle PQgetResult. Esta organización asegurará que un comando de copia de entrada o de salida embebido en una serie de comandos SQL se ejecutará correctamente.

Las aplicaciones antiguas habitualmente emiten una copia de entrada o de salida a través de PQexec y asumen que la transacción ha terminado tras el PQendcopy. Este mecanismo trabajará adecuadamente sólo si la copia de entrada/salida es el único comando SQL de la cadena de consulta.